use of jakarta.xml.ws.AsyncHandler in project metro-jax-ws by eclipse-ee4j.
the class Hello1CallbackHandler method testHelloAsyncCallback0Handler.
/*
* Adds handler to increment value of request and response.
*/
public void testHelloAsyncCallback0Handler() throws Exception {
try {
// should be no handlers, but to be safe
ClientServerTestUtil.clearHandlers((BindingProvider) stub);
// test with no handler first
int orig = 1;
final IntHolder intHolder = new IntHolder();
Future<?> response = stub.hello0Async(orig, new AsyncHandler<Integer>() {
public void handleResponse(Response<Integer> resp) {
try {
// add 10 to make sure this was called
intHolder.setValue(resp.get().intValue() + 10);
} catch (Exception e) {
e.printStackTrace();
// will cause failure
intHolder.setValue(-100);
}
}
});
// wait, but only up to 15 seconds. if it takes more,
// it's considered a hangup
response.get(15, TimeUnit.SECONDS);
assertEquals("did not get expected value back in response", orig + 10, intHolder.getValue());
// add handler
ClientServerTestUtil.addHandlerToBinding(new SOAPTestHandler(), (BindingProvider) stub);
// 1 per handler invocation
int diff = 2;
response = stub.hello0Async(orig, new AsyncHandler<Integer>() {
public void handleResponse(Response<Integer> resp) {
try {
intHolder.setValue(resp.get().intValue());
} catch (Exception e) {
e.printStackTrace();
// will cause failure
intHolder.setValue(-100);
}
}
});
response.get(15, TimeUnit.SECONDS);
assertEquals("handlers did not execute successfully", orig + diff, intHolder.getValue());
} finally {
ClientServerTestUtil.clearHandlers((BindingProvider) stub);
}
}
Aggregations