private boolean detectCallback() { boolean hasCallback = false; Class<?>[] classes = methodAccess.parameterTypes(); if (classes.length > 0) { if (classes[0] == Callback.class) { hasCallback = true; } } return hasCallback; }
private boolean hasHandlers(MethodAccess serviceMethod) { if (Promise.class.isAssignableFrom(serviceMethod.returnType())) { return true; } for (Class<?> paramType : serviceMethod.parameterTypes()) { if (paramType == Callback.class) { return true; } } return false; }
private void extractHandlersFromArgumentListArrayCase(MethodAccess method, Object[] array, Object[] argsList) { if (array != null && array.length - 1 == method.parameterTypes().length) { if (array[0] instanceof Callback) { array = Arry.slc(array, 1); } } for (int index = 0, arrayIndex = 0; index < argsList.length; index++, arrayIndex++) { final Object o = argsList[index]; if (o instanceof Callback) { continue; } if (arrayIndex >= array.length) { break; } argsList[index] = array[arrayIndex]; } } }
if (serviceMethod.method().getReturnType() == void.class && (list.size() - 1 == serviceMethod.parameterTypes().length)) { if (parameterTypes[0] == Callback.class) { list = Lists.slc(list, 1); //remove the callback from the args bc the callback is called
if (method.parameterTypes().length > 0) { Type[] genericParameterTypes = method.getGenericParameterTypes(); ParameterizedType parameterizedType = genericParameterTypes.length > 0 ? (ParameterizedType) genericParameterTypes[0] : null;
private boolean detectCallback() { boolean hasCallback = false; Class<?>[] classes = methodAccess.parameterTypes(); if (classes.length > 0) { if (classes[0] == Callback.class) { hasCallback = true; } } return hasCallback; }
private boolean hasHandlers(MethodAccess method) { for (Class<?> paramType : method.parameterTypes()) { if (paramType == Callback.class) { return true; } } return false; }
private boolean detectCallback() { boolean hasCallback = false; Class<?>[] classes = methodAccess.parameterTypes(); if (classes.length > 0) { if (classes[0] == Callback.class) { hasCallback = true; } } return hasCallback; }
public Response<Object> mapArgsAsyncHandlersAndInvoke(MethodCall<Object> serviceMethodCall, MethodAccess serviceMethod) { if (serviceMethod.parameterTypes().length == 0 && !(Promise.class.isAssignableFrom(serviceMethod.returnType()))) { List<Object> argsList = boonServiceMethodCallHandler.prepareArgumentList(serviceMethodCall, serviceMethod.parameterTypes()); if (body instanceof List || body instanceof Object[]) { boonServiceMethodCallHandler.extractHandlersFromArgumentList(serviceMethodCall.callback(), serviceMethod, body, argsList);
public Response<Object> mapArgsAsyncHandlersAndInvoke(MethodCall<Object> methodCall, MethodAccess serviceMethod) { boolean hasHandlers = boonServiceMethodCallHandler.hasHandlers(methodCall, serviceMethod); Object returnValue; if (hasHandlers) { Object[] args = (Object[]) methodCall.body(); Object[] argsList = prepareArgumentList(methodCall, serviceMethod.parameterTypes()); extractHandlersFromArgumentList(serviceMethod, args, argsList); returnValue = serviceMethod.invoke(boonServiceMethodCallHandler.service, argsList); if (returnValue instanceof Promise) { final Promise<Object> promise = ((Promise<Object>) returnValue); promise .then(value -> { boonServiceMethodCallHandler.responseSendQueue.send(ResponseImpl.response(methodCall, value)); }) .catchError(error -> { boonServiceMethodCallHandler.responseSendQueue.send(ResponseImpl.error(methodCall, error)); }).invoke(); return ServiceConstants.VOID; } } else { final Object[] argsList = (Object[]) methodCall.body(); returnValue = serviceMethod.invoke(boonServiceMethodCallHandler.service, argsList); } return boonServiceMethodCallHandler.response(serviceMethod, methodCall, returnValue); }
private boolean hasHandlers(MethodAccess serviceMethod) { if (Promise.class.isAssignableFrom(serviceMethod.returnType())) { return true; } for (Class<?> paramType : serviceMethod.parameterTypes()) { if (paramType == Callback.class) { return true; } } return false; }
private void extractHandlersFromArgumentListArrayCase(MethodAccess method, Object[] array, Object[] argsList) { if (array.length - 1 == method.parameterTypes().length) { if (array[0] instanceof Callback) { array = Arry.slc(array, 1); } } for (int index = 0, arrayIndex = 0; index < argsList.length; index++, arrayIndex++) { final Object o = argsList[index]; if (o instanceof Callback) { continue; } if (arrayIndex >= array.length) { break; } argsList[index] = array[arrayIndex]; } } }
private void extractHandlersFromArgumentListBodyIsList(MethodAccess method, List<Object> argsList, List<Object> list) { if (list.size() - 1 == method.parameterTypes().length) { if (list.get(0) instanceof Callback) { list = Lists.slc(list, 1); } } final Iterator<Object> iterator = list.iterator(); for (int index = 0; index < argsList.size(); index++) { final Object o = argsList.get(index); if (o instanceof Callback) { continue; } if (!iterator.hasNext()) { break; } argsList.set(index, iterator.next()); } }
public Object invokeReducer(Object instance, Object sum, Object value) { MethodAccess methodAccess; if (methods.size()==1) { methodAccess = methods.get(0); } else { methodAccess = methodMap.get("test"); } Class<?> arg1 = methodAccess.parameterTypes()[0]; if (Typ.isPrimitiveNumber(arg1) && sum == null) { return methodAccess.invoke(instance, 0, value); } else { return methodAccess.invoke(instance, sum, value); } }
public Object invokeReducer(Object instance, Object sum, Object value) { MethodAccess methodAccess; if (methods.size()==1) { methodAccess = methods.get(0); } else { methodAccess = methodMap.get("test"); } Class<?> arg1 = methodAccess.parameterTypes()[0]; if (Typ.isPrimitiveNumber(arg1) && sum == null) { return methodAccess.invoke(instance, 0, value); } else { return methodAccess.invoke(instance, sum, value); } }
public static Object invokeMethodFromList(boolean respectIgnore, String view, Set<String> ignoreProperties, Object object, MethodAccess method, List<?> argsList) { try { if (argsList == null && method.parameterTypes().length == 0) { return method.invoke(object); } else { Object [] finalArgs = convertArguments(respectIgnore, view, ignoreProperties, object, argsList, method ); return method.invoke(object, finalArgs); } }catch (Exception ex) { return Exceptions.handle(Object.class, ex, "Unable to invoke method object", object, "method", method, "args", argsList); } }
public static Object invokeMethodFromList(boolean respectIgnore, String view, Set<String> ignoreProperties, Object object, MethodAccess method, List<?> argsList) { try { if (argsList == null && method.parameterTypes().length == 0) { return method.invoke(object); } else { Object [] finalArgs = convertArguments(respectIgnore, view, ignoreProperties, object, argsList, method ); return method.invoke(object, finalArgs); } }catch (Exception ex) { return Exceptions.handle(Object.class, ex, "Unable to invoke method object", object, "method", method, "args", argsList); } }
public static void invokeMethodWithAnnotationWithReturnType(Class<?> type, Object object, String annotation, Class<?> returnType) { ClassMeta classMeta = ClassMeta.classMeta(type); Iterable<MethodAccess> iterate = classMeta.methods(); for (MethodAccess m : iterate) { if (m.hasAnnotation(annotation)) { if (m.parameterTypes().length == 0 && m.returnType() == void.class) { m.invoke(object); break; } } } }
public static void invokeMethodWithAnnotationWithReturnType(Class<?> type, Object object, String annotation, Class<?> returnType) { ClassMeta classMeta = ClassMeta.classMeta(type); Iterable<MethodAccess> iterate = classMeta.methods(); for (MethodAccess m : iterate) { if (m.hasAnnotation(annotation)) { if (m.parameterTypes().length == 0 && m.returnType() == void.class) { m.invoke(object); break; } } } }
public Response<Object> mapArgsAsyncHandlersAndInvoke(MethodCall<Object> methodCall, MethodAccess method) { boolean hasHandlers = hasHandlers(methodCall, method); Object returnValue; if (hasHandlers) { Object[] args = (Object[]) methodCall.body(); Object[] argsList = prepareArgumentList(methodCall, method.parameterTypes()); extractHandlersFromArgumentList(method, args, argsList); returnValue = method.invoke(service, argsList); } else { final Object[] argsList = (Object[]) methodCall.body(); returnValue = method.invoke(service, argsList); } return response(method, methodCall, returnValue); }