private Object lookupValueFromGuice(Invokable<?, ?> invoked) { try { Type genericReturnType = invoked.getReturnType().getType(); try { Annotation qualifier = find(ImmutableList.copyOf(invoked.getAnnotations()), isQualifierPresent); return getInstanceOfTypeWithQualifier(genericReturnType, qualifier); } catch (ProvisionException e) { throw propagate(e.getCause()); } catch (RuntimeException e) { return instanceOfTypeOrPropagate(genericReturnType, e); } } catch (ProvisionException e) { AuthorizationException aex = getFirstThrowableOfType(e, AuthorizationException.class); if (aex != null) throw aex; throw e; } }
protected Object handle(Invocation invocation) { Invokable<?, ?> invokable = invocation.getInvokable(); if (isCloseMethod(invokable)) { try { injector.getInstance(Closer.class).close(); return null; } catch (Throwable e) { throw propagate(e); } } else if (invokable.isAnnotationPresent(Provides.class)) { return lookupValueFromGuice(invokable); } else if (invokable.isAnnotationPresent(Delegate.class)) { return propagateContextToDelegate(invocation); } else { return methodInvoker.apply(invocation); } }
protected Object handle(Invocation invocation) { Invokable<?, ?> invokable = invocation.getInvokable(); if (CLOSE.equals(invokable)) { try { injector.getInstance(Closer.class).close(); return null; } catch (Throwable e) { throw propagate(e); } } else if (invokable.isAnnotationPresent(Provides.class)) { return lookupValueFromGuice(invokable); } else if (invokable.isAnnotationPresent(Delegate.class)) { return propagateContextToDelegate(invocation); } else { return methodInvoker.apply(invocation); } }
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 Object handle(Invocation invocation) { Invokable<?, ?> invokable = invocation.getInvokable(); if (CLOSE.equals(invokable)) { try { injector.getInstance(Closer.class).close(); return null; } catch (Throwable e) { throw propagate(e); } } else if (invokable.isAnnotationPresent(Provides.class)) { return lookupValueFromGuice(invokable); } else if (invokable.isAnnotationPresent(Delegate.class)) { return propagateContextToDelegate(invocation); } else { return methodInvoker.apply(invocation); } }
protected Object handle(Invocation invocation) { Invokable<?, ?> invokable = invocation.getInvokable(); if (isCloseMethod(invokable)) { try { injector.getInstance(Closer.class).close(); return null; } catch (Throwable e) { throw propagate(e); } } else if (invokable.isAnnotationPresent(Provides.class)) { return lookupValueFromGuice(invokable); } else if (invokable.isAnnotationPresent(Delegate.class)) { return propagateContextToDelegate(invocation); } else { return methodInvoker.apply(invocation); } }
private Object lookupValueFromGuice(Invokable<?, ?> invoked) { try { Type genericReturnType = invoked.getReturnType().getType(); try { Annotation qualifier = find(ImmutableList.copyOf(invoked.getAnnotations()), isQualifierPresent); return getInstanceOfTypeWithQualifier(genericReturnType, qualifier); } catch (ProvisionException e) { throw propagate(e.getCause()); } catch (RuntimeException e) { return instanceOfTypeOrPropagate(genericReturnType, e); } } catch (ProvisionException e) { AuthorizationException aex = getFirstThrowableOfType(e, AuthorizationException.class); if (aex != null) throw aex; throw e; } }
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 Object handle(Invocation invocation) { Invokable<?, ?> invokable = invocation.getInvokable(); if (isCloseMethod(invokable)) { try { injector.getInstance(Closer.class).close(); return null; } catch (Throwable e) { throw propagate(e); } } else if (invokable.isAnnotationPresent(Provides.class)) { return lookupValueFromGuice(invokable); } else if (invokable.isAnnotationPresent(Delegate.class)) { return propagateContextToDelegate(invocation); } else { return methodInvoker.apply(invocation); } }
private Object lookupValueFromGuice(Invokable<?, ?> invoked) { try { Type genericReturnType = invoked.getReturnType().getType(); try { Annotation qualifier = find(ImmutableList.copyOf(invoked.getAnnotations()), isQualifierPresent); return getInstanceOfTypeWithQualifier(genericReturnType, qualifier); } catch (ProvisionException e) { throw propagate(e.getCause()); } catch (RuntimeException e) { return instanceOfTypeOrPropagate(genericReturnType, e); } } catch (ProvisionException e) { AuthorizationException aex = getFirstThrowableOfType(e, AuthorizationException.class); if (aex != null) throw aex; throw e; } }
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; }
protected Object handle(Invocation invocation) { Invokable<?, ?> invokable = invocation.getInvokable(); if (isCloseMethod(invokable)) { try { injector.getInstance(Closer.class).close(); return null; } catch (Throwable e) { throw propagate(e); } } else if (invokable.isAnnotationPresent(Provides.class)) { return lookupValueFromGuice(invokable); } else if (invokable.isAnnotationPresent(Delegate.class)) { return propagateContextToDelegate(invocation); } else { return methodInvoker.apply(invocation); } }
private Object lookupValueFromGuice(Invokable<?, ?> invoked) { try { Type genericReturnType = invoked.getReturnType().getType(); try { Annotation qualifier = find(ImmutableList.copyOf(invoked.getAnnotations()), isQualifierPresent); return getInstanceOfTypeWithQualifier(genericReturnType, qualifier); } catch (ProvisionException e) { throw propagate(e.getCause()); } catch (RuntimeException e) { return instanceOfTypeOrPropagate(genericReturnType, e); } } catch (ProvisionException e) { AuthorizationException aex = getFirstThrowableOfType(e, AuthorizationException.class); if (aex != null) throw aex; throw e; } }
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 lookupValueFromGuice(Invokable<?, ?> invoked) { try { Type genericReturnType = invoked.getReturnType().getType(); try { Annotation qualifier = find(ImmutableList.copyOf(invoked.getAnnotations()), isQualifierPresent); return getInstanceOfTypeWithQualifier(genericReturnType, qualifier); } catch (ProvisionException e) { throw propagate(e.getCause()); } catch (RuntimeException e) { return instanceOfTypeOrPropagate(genericReturnType, e); } } catch (ProvisionException e) { AuthorizationException aex = getFirstThrowableOfType(e, AuthorizationException.class); if (aex != null) throw aex; throw e; } }