Cleanup for release stage

Signed-off-by: Emmanuel Bigeon <emmanuel@bigeon.fr>
This commit is contained in:
2016-12-06 11:35:38 -05:00
parent 17ac47f15e
commit bf8d76750f
4 changed files with 155 additions and 35 deletions

View File

@@ -167,7 +167,8 @@ public abstract class ParametrizedCommand extends Command {
/** @param param the parameter
* @param stringParameter the string parameter type
* @param needed if the parameter is needed
* @throws InvalidParameterException if the new definition is invalid */
* @throws InvalidParameterException if the new definition is invalid
* @deprecated since 1.3.3 */
@Deprecated
private void checkParam(String param, boolean stringParameter,
boolean needed) throws InvalidParameterException {

View File

@@ -53,6 +53,61 @@ import java.util.logging.Logger;
* @author Emmanuel Bigeon */
public class ReadingRunnable implements Runnable {
/** The runnable to wait for notification on an object
*
* @author Emmanuel Bigeon */
private final class ToWaitRunnable implements Runnable {
/** The Object */
private final Object obj;
/** The locking object */
private final Object start;
/** The message */
private final String message;
/** The started status */
private boolean started = false;
/** @param obj the object to lock on
* @param start the object to notify when ready to wait
* @param message the message to wait for */
public ToWaitRunnable(Object obj, Object start,
String message) {
this.obj = obj;
this.start = start;
this.message = message;
}
@SuppressWarnings("synthetic-access")
@Override
public void run() {
synchronized (obj) {
synchronized (start) {
started = true;
start.notify();
}
while (isRunning()) {
try {
obj.wait();
if (delivering.equals(message)) {
return;
}
} catch (InterruptedException e) {
LOGGER.log(Level.SEVERE,
THREAD_INTERRUPTION_EXCEPTION, e);
}
}
}
}
/** @return the started */
public boolean isStarted() {
synchronized (start) {
return started;
}
}
}
/** The thread intteruption logging message */
private static final String THREAD_INTERRUPTION_EXCEPTION = "Thread interruption exception."; //$NON-NLS-1$
/** The closed pipe message */
private static final String CLOSED_PIPE = "Closed pipe"; //$NON-NLS-1$
/** Wait timeout */
@@ -79,6 +134,7 @@ public class ReadingRunnable implements Runnable {
* The lock
*/
private final Object messageBlockerLock = new Object();
/** The message being delivered */
private String delivering;
/** @param reader the input to read from */
@@ -146,7 +202,7 @@ public class ReadingRunnable implements Runnable {
try {
lock.wait(TIMEOUT);
} catch (InterruptedException e) {
LOGGER.log(Level.SEVERE, "Thread interruption exception.", //$NON-NLS-1$
LOGGER.log(Level.SEVERE, THREAD_INTERRUPTION_EXCEPTION,
e);
}
if (messages.isEmpty() && !running) {
@@ -218,36 +274,18 @@ public class ReadingRunnable implements Runnable {
}
final Object obj = messageBlocker.get(message);
final Object start = new Object();
Thread th = new Thread(new Runnable() {
@SuppressWarnings("synthetic-access")
@Override
public void run() {
synchronized (obj) {
synchronized (start) {
start.notify();
}
while (isRunning()) {
try {
obj.wait();
if (delivering.equals(message)) {
return;
}
} catch (InterruptedException e) {
LOGGER.log(Level.SEVERE,
"Thread interruption exception.", e); //$NON-NLS-1$
}
}
}
}
});
ToWaitRunnable waitRunn = new ToWaitRunnable(obj, start, message);
Thread th = new Thread(waitRunn);
synchronized (start) {
th.start();
try {
start.wait();
} catch (InterruptedException e) {
LOGGER.log(Level.SEVERE, "Thread interruption exception.", //$NON-NLS-1$
e);
while (!waitRunn.isStarted()) {
try {
start.wait(TIMEOUT);
} catch (InterruptedException e) {
LOGGER.log(Level.SEVERE, THREAD_INTERRUPTION_EXCEPTION,
e);
}
}
}
return th;