public Future<?> call(Object handler, RequestItem item) { try { Object result; if (inputClass == null) { result = method.invoke(handler); } else if (RequestItem.class.isAssignableFrom(inputClass)) { result = method.invoke(handler, item); } else { result = method.invoke(handler, item.getTypedRequest(inputClass)); } if (result instanceof Future<?>) { return (Future<?>) result; } return Futures.immediateFuture(result); } catch (IllegalAccessException e) { return Futures.immediateFailedFuture(e); } catch (InvocationTargetException e) { // Unwrap the internal exception return Futures.immediateFailedFuture(e.getTargetException()); } } }
public Future<?> call(Object handler, RequestItem item) { try { Object result; if (inputClass == null) { result = method.invoke(handler); } else if (RequestItem.class.isAssignableFrom(inputClass)) { result = method.invoke(handler, item); } else { result = method.invoke(handler, item.getTypedRequest(inputClass)); } if (result instanceof Future<?>) { return (Future<?>) result; } return Futures.immediateFuture(result); } catch (IllegalAccessException e) { return Futures.immediateFailedFuture(e); } catch (InvocationTargetException e) { // Unwrap the internal exception return Futures.immediateFailedFuture(e.getTargetException()); } } }
public Future<?> call(Object handler, RequestItem item) { try { Object result; if (inputClass == null) { result = method.invoke(handler); } else if (RequestItem.class.isAssignableFrom(inputClass)) { result = method.invoke(handler, item); } else { result = method.invoke(handler, item.getTypedRequest(inputClass)); } if (result instanceof Future<?>) { return (Future<?>) result; } return Futures.immediateFuture(result); } catch (IllegalAccessException e) { return Futures.immediateFailedFuture(e); } catch (InvocationTargetException e) { // Unwrap the internal exception return Futures.immediateFailedFuture(e.getTargetException()); } } }
public Future<?> call(Object handler, RequestItem item) { try { Object result; if (inputClass == null) { result = method.invoke(handler); } else if (RequestItem.class.isAssignableFrom(inputClass)) { result = method.invoke(handler, item); } else { result = method.invoke(handler, item.getTypedRequest(inputClass)); } if (result instanceof Future<?>) { return (Future<?>) result; } return ImmediateFuture.newInstance(result); } catch (IllegalAccessException e) { return ImmediateFuture.errorInstance(e); } catch (InvocationTargetException e) { // Unwrap the internal exception return ImmediateFuture.errorInstance(e.getTargetException()); } } }
public Future<?> call(Object handler, RequestItem item) { try { Object result; if (inputClass == null) { result = method.invoke(handler); } else if (RequestItem.class.isAssignableFrom(inputClass)) { result = method.invoke(handler, item); } else { result = method.invoke(handler, item.getTypedRequest(inputClass)); } if (result instanceof Future<?>) { return (Future<?>) result; } return ImmediateFuture.newInstance(result); } catch (IllegalAccessException e) { return ImmediateFuture.errorInstance(e); } catch (InvocationTargetException e) { // Unwrap the internal exception return ImmediateFuture.errorInstance(e.getTargetException()); } } }