本文整理汇总了Java中org.osgi.util.promise.Promise.onResolve方法的典型用法代码示例。如果您正苦于以下问题:Java Promise.onResolve方法的具体用法?Java Promise.onResolve怎么用?Java Promise.onResolve使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.osgi.util.promise.Promise
的用法示例。
在下文中一共展示了Promise.onResolve方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: doService
import org.osgi.util.promise.Promise; //导入方法依赖的package包/类
@SuppressWarnings("unchecked")
protected void doService(SerializationStrategy serializationStrategy, ClassLoader loader, Method method, Object target, DataByteArrayInputStream requestStream, final DataByteArrayOutputStream responseStream, final Runnable onComplete) {
final AsyncServiceResponse helper = new AsyncServiceResponse(loader, method, responseStream, onComplete, serializationStrategy);
try {
Class<?>[] types = method.getParameterTypes();
final Object[] args = new Object[types.length];
serializationStrategy.decodeRequest(loader, types, requestStream, args);
final Promise<Object> promise = (Promise<Object>)method.invoke(target, args);
promise.onResolve(() -> {
try{
helper.send(promise.getFailure(), promise.getFailure()==null ? promise.getValue() : null);
}
catch (Exception e){
helper.send(e, null);
}
});
} catch (Throwable t) {
helper.send(t, null);
}
}
示例2: onCall
import org.osgi.util.promise.Promise; //导入方法依赖的package包/类
@Override
public <T, E extends Throwable> T onCall(CallContext callContext, InterceptionHandler<T> handler) throws E {
Stopwatch started = Stopwatch.createStarted();
String methodName = callContext.target.getName() + "::" + callContext.method.getName();
boolean async = (callContext.method.getReturnType() == Promise.class);
try {
T result = handler.invoke();
if (async) {
Promise<?> p = (Promise<?>) result;
p.onResolve(() -> System.out
.println("Async call to " + methodName + " took " + started.elapsed(TimeUnit.MICROSECONDS)
+ " µs"));
}
return result;
} finally {
System.out.println(
"Sync call to " + methodName + " took " + started.elapsed(TimeUnit.MICROSECONDS) + " µs");
}
}
示例3: onCall
import org.osgi.util.promise.Promise; //导入方法依赖的package包/类
@Override
public <T, E extends Throwable> T onCall(Timed annotation, CallContext callContext,
InterceptionHandler<T> handler) {
Stopwatch started = Stopwatch.createStarted();
String methodName = callContext.target.getName() + "::" + callContext.method.getName();
boolean async = (callContext.method.getReturnType() == Promise.class);
try {
T result = handler.invoke();
if (async) {
Promise<?> p = (Promise<?>) result;
p.onResolve(() -> System.out
.println("Async call to " + methodName + " took " + started.elapsed(TimeUnit.MICROSECONDS)
+ " µs"));
}
return result;
} finally {
System.out.println(
"Sync call to " + methodName + " took " + started.elapsed(TimeUnit.MICROSECONDS) + " µs");
}
}
示例4: getLongResult
import org.osgi.util.promise.Promise; //导入方法依赖的package包/类
@Override
public Promise<Long> getLongResult() {
Deferred<Long> d = new Deferred<>();
Promise<Long> promise = superSlowService.compute();
promise.onResolve(() -> {
new Thread(new Runnable() {
@Override
public void run() {
d.resolveWith(promise);
}
}).start();
});
Promise<Long> promise2 = d.getPromise();
return promise2;
}