protected Key<?> methodInvokerFor(Class<?> returnType) { if (methodInvoker.getClass().getTypeParameters().length == 2) { if (syncToAsync.containsValue(returnType)) return Key.get(Types.newParameterizedType(methodInvoker.getClass(), returnType, returnType)); return Key.get(Types.newParameterizedType( methodInvoker.getClass(), returnType, checkNotNull(syncToAsync.get(returnType), "need async type of %s for %s", returnType, methodInvoker.getClass()))); } return super.methodInvokerFor(returnType); } }
protected Key<?> methodInvokerFor(Class<?> returnType) { if (methodInvoker.getClass().getTypeParameters().length == 2) { if (syncToAsync.containsValue(returnType)) return Key.get(Types.newParameterizedType(methodInvoker.getClass(), returnType, returnType)); return Key.get(Types.newParameterizedType( methodInvoker.getClass(), returnType, checkNotNull(syncToAsync.get(returnType), "need async type of %s for %s", returnType, methodInvoker.getClass()))); } return super.methodInvokerFor(returnType); } }
protected Key<?> methodInvokerFor(Class<?> returnType) { if (methodInvoker.getClass().getTypeParameters().length == 2) { if (syncToAsync.containsValue(returnType)) return Key.get(Types.newParameterizedType(methodInvoker.getClass(), returnType, returnType)); return Key.get(Types.newParameterizedType( methodInvoker.getClass(), returnType, checkNotNull(syncToAsync.get(returnType), "need async type of %s for %s", returnType, methodInvoker.getClass()))); } return super.methodInvokerFor(returnType); } }
private Object propagateContextToDelegate(Invocation caller) { Class<?> returnType = unwrapIfOptional(caller.getInvokable().getReturnType()); Function<Invocation, Object> delegate; setCaller.enter(caller); try { @SuppressWarnings("unchecked") Key<Function<Invocation, Object>> delegateType = (Key<Function<Invocation, Object>>) methodInvokerFor(returnType); delegate = injector.getInstance(delegateType); } finally { setCaller.exit(); } Object result = FunctionalReflection.newProxy(returnType, delegate); if (isReturnTypeOptional(caller.getInvokable())) { result = optionalConverter.apply(InvocationSuccess.create(caller, result)); } return result; }
private Object propagateContextToDelegate(Invocation caller) { Class<?> returnType = unwrapIfOptional(caller.getInvokable().getReturnType()); Function<Invocation, Object> delegate; setCaller.enter(caller); try { @SuppressWarnings("unchecked") Key<Function<Invocation, Object>> delegateType = (Key<Function<Invocation, Object>>) methodInvokerFor(returnType); delegate = injector.getInstance(delegateType); } finally { setCaller.exit(); } Object result = FunctionalReflection.newProxy(returnType, delegate); if (isReturnTypeOptional(caller.getInvokable())) { result = optionalConverter.apply(InvocationSuccess.create(caller, result)); } return result; }
private Object propagateContextToDelegate(Invocation caller) { Class<?> returnType = unwrapIfOptional(caller.getInvokable().getReturnType()); Function<Invocation, Object> delegate; setCaller.enter(caller); try { @SuppressWarnings("unchecked") Key<Function<Invocation, Object>> delegateType = (Key<Function<Invocation, Object>>) methodInvokerFor(returnType); delegate = injector.getInstance(delegateType); } finally { setCaller.exit(); } Object result = FunctionalReflection.newProxy(returnType, delegate); if (isReturnTypeOptional(caller.getInvokable())) { result = optionalConverter.apply(InvocationSuccess.create(caller, result)); } return result; }
private Object propagateContextToDelegate(Invocation caller) { Class<?> returnType = unwrapIfOptional(caller.getInvokable().getReturnType()); Function<Invocation, Object> delegate; setCaller.enter(caller); try { @SuppressWarnings("unchecked") Key<Function<Invocation, Object>> delegateType = (Key<Function<Invocation, Object>>) methodInvokerFor(returnType); delegate = injector.getInstance(delegateType); } finally { setCaller.exit(); } Object result = FunctionalReflection.newProxy(returnType, delegate); if (isReturnTypeOptional(caller.getInvokable())) { result = optionalConverter.apply(InvocationSuccess.create(caller, result)); } return result; }
private Object propagateContextToDelegate(Invocation caller) { Class<?> returnType = unwrapIfOptional(caller.getInvokable().getReturnType()); Function<Invocation, Object> delegate; setCaller.enter(caller); try { @SuppressWarnings("unchecked") Key<Function<Invocation, Object>> delegateType = (Key<Function<Invocation, Object>>) methodInvokerFor(returnType); delegate = injector.getInstance(delegateType); } finally { setCaller.exit(); } Object result = FunctionalReflection.newProxy(returnType, delegate); if (isReturnTypeOptional(caller.getInvokable())) { result = optionalConverter.apply(InvocationSuccess.create(caller, result)); } return result; }
private Object propagateContextToDelegate(Invocation caller) { Class<?> returnType = unwrapIfOptional(caller.getInvokable().getReturnType()); Function<Invocation, Object> delegate; setCaller.enter(caller); try { @SuppressWarnings("unchecked") Key<Function<Invocation, Object>> delegateType = (Key<Function<Invocation, Object>>) methodInvokerFor(returnType); delegate = injector.getInstance(delegateType); } finally { setCaller.exit(); } Object result = FunctionalReflection.newProxy(returnType, delegate); if (isReturnTypeOptional(caller.getInvokable())) { result = optionalConverter.apply(InvocationSuccess.create(caller, result)); } return result; }