in jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/cxf/PromiseAwareJAXRSInvoker.java [63:85]
private AsyncResponseImpl handlePromiseFromAnotherClassSpace(Message inMessage, Object result, Class<?> clazz) {
// It's a promise, but from a different class space. Use reflection to
// register a callback with the promise
final AsyncResponseImpl asyncResponse = new AsyncResponseImpl(inMessage);
try {
clazz.getMethod("onResolve", Runnable.class).invoke(result, (Runnable) () -> {
try {
Object failure = clazz.getMethod("getFailure").invoke(result);
if(failure != null) {
asyncResponse.resume((Throwable) failure);
} else {
asyncResponse.resume(clazz.getMethod("getValue").invoke(result));
}
} catch (Exception e) {
asyncResponse.resume(e);
}
});
} catch (Exception e) {
asyncResponse.resume(e);
}
return asyncResponse;
}