Code factoring

Signed-off-by: Emmanuel Bigeon <emmanuel@bigeon.fr>
This commit is contained in:
Emmanuel Bigeon 2018-11-25 11:31:52 -05:00
parent bcd0faceef
commit df688b1a85
2 changed files with 20 additions and 27 deletions

View File

@ -68,7 +68,6 @@ package net.bigeon.gclc.process.io;
* #L% * #L%
*/ */
import java.io.IOException; import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import net.bigeon.gclc.manager.ConsoleInput; import net.bigeon.gclc.manager.ConsoleInput;
@ -198,19 +197,8 @@ public final class ConnectingConsoleInput implements ConsoleInput {
return null; return null;
} }
} }
getConnection(0);
boolean connect; boolean connect;
synchronized (connectionLock) {
connect = connected != null;
if (!connect) {
try {
connectionLock.wait();
} catch (final InterruptedException e) {
LOGGER.log(Level.WARNING, "Inerruption of console thread", e);
Thread.currentThread().interrupt();
}
}
}
ConsoleInput actualConnected; ConsoleInput actualConnected;
synchronized (connectionLock) { synchronized (connectionLock) {
connect = connected != null; connect = connected != null;
@ -245,20 +233,11 @@ public final class ConnectingConsoleInput implements ConsoleInput {
do { do {
synchronized (promptLock) { synchronized (promptLock) {
if (!prompting) { if (!prompting) {
return null; break;
} }
} }
getConnection(timeout);
boolean connect; boolean connect;
synchronized (connectionLock) {
connect = connected != null;
if (!connect) {
try {
connectionLock.wait(timeout);
} catch (final InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
ConsoleInput actualConnected; ConsoleInput actualConnected;
synchronized (connectionLock) { synchronized (connectionLock) {
connect = connected != null; connect = connected != null;
@ -282,6 +261,20 @@ public final class ConnectingConsoleInput implements ConsoleInput {
} }
private void getConnection(final long timeout) {
boolean connect;
synchronized (connectionLock) {
connect = connected != null;
if (!connect) {
try {
connectionLock.wait(timeout);
} catch (final InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
/* (non-Javadoc) /* (non-Javadoc)
* @see fr.bigeon.gclc.manager.ConsoleInput#setPrompt(java.lang.String) */ * @see fr.bigeon.gclc.manager.ConsoleInput#setPrompt(java.lang.String) */
@Override @Override

View File

@ -81,10 +81,10 @@ public class ConnectingConsoleInputTest {
@Override @Override
public void apply() throws Exception { public void apply() throws Exception {
assertNull(in.prompt("m1", -1)); assertNull("Interrupted should return null", in.prompt("m1", -1));
assertNull(in.prompt("m2", 5000)); assertNull("Interrupted should return null", in.prompt("m2", 5000));
ended.set(true); ended.set(true);
assertNull(in.prompt("m3", 200)); assertNull("Overtime should return null", in.prompt("m3", 200));
} }
}; };
final ATestRunnable runnable = new FunctionalTestRunnable(one); final ATestRunnable runnable = new FunctionalTestRunnable(one);