private AsyncResponseImpl handlePromiseFromAnotherClassSpace()

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;
    }