HHH-6940 - Ability (easier) to run bits of code in a timeout protected way
This commit is contained in:
parent
86f3f3c347
commit
9ca985ccd1
|
@ -29,6 +29,7 @@ package org.hibernate.testing.async;
|
|||
public class ExecutableAdapter implements Runnable {
|
||||
private final Executable executable;
|
||||
private boolean isDone;
|
||||
private Throwable error;
|
||||
|
||||
public ExecutableAdapter(Executable executable) {
|
||||
this.executable = executable;
|
||||
|
@ -38,14 +39,38 @@ public class ExecutableAdapter implements Runnable {
|
|||
return isDone;
|
||||
}
|
||||
|
||||
public void reThrowAnyErrors() {
|
||||
if ( error != null ) {
|
||||
if ( RuntimeException.class.isInstance( error ) ) {
|
||||
throw RuntimeException.class.cast( error );
|
||||
}
|
||||
else if ( Error.class.isInstance( error ) ) {
|
||||
throw Error.class.cast( error );
|
||||
}
|
||||
else {
|
||||
throw new ExceptionWrapper( error );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
isDone = false;
|
||||
error = null;
|
||||
try {
|
||||
executable.execute();
|
||||
}
|
||||
catch (Throwable t) {
|
||||
error = t;
|
||||
}
|
||||
finally {
|
||||
isDone = true;
|
||||
}
|
||||
}
|
||||
|
||||
public static class ExceptionWrapper extends RuntimeException {
|
||||
public ExceptionWrapper(Throwable cause) {
|
||||
super( cause );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,10 +25,14 @@ package org.hibernate.testing.async;
|
|||
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
import org.jboss.logging.Logger;
|
||||
|
||||
/**
|
||||
* @author Steve Ebersole
|
||||
*/
|
||||
public class TimedExecutor {
|
||||
private static final Logger log = Logger.getLogger( TimedExecutor.class );
|
||||
|
||||
private final long timeOut;
|
||||
private final int checkMilliSeconds;
|
||||
|
||||
|
@ -63,5 +67,7 @@ public class TimedExecutor {
|
|||
catch (InterruptedException ignore) {
|
||||
}
|
||||
} while ( !adapter.isDone() );
|
||||
|
||||
adapter.reThrowAnyErrors();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue