示例#1
0
 public static Class<?>[] getParameterTypes(Invocation invocation) {
   if (Constants.$INVOKE.equals(invocation.getMethodName())
       && invocation.getArguments() != null
       && invocation.getArguments().length > 1
       && invocation.getArguments()[1] instanceof String[]) {
     String[] types = (String[]) invocation.getArguments()[1];
     if (types == null) {
       return new Class<?>[0];
     }
     Class<?>[] parameterTypes = new Class<?>[types.length];
     for (int i = 0; i < types.length; i++) {
       parameterTypes[i] = ReflectUtils.forName(types[0]);
     }
     return parameterTypes;
   }
   return invocation.getParameterTypes();
 }
示例#2
0
 public static Type[] getReturnTypes(Invocation invocation) {
   try {
     if (invocation != null
         && invocation.getInvoker() != null
         && invocation.getInvoker().getUrl() != null
         && !invocation.getMethodName().startsWith("$")) {
       String service = invocation.getInvoker().getUrl().getServiceInterface();
       if (service != null && service.length() > 0) {
         Class<?> cls = ReflectUtils.forName(service);
         Method method = cls.getMethod(invocation.getMethodName(), invocation.getParameterTypes());
         if (method.getReturnType() == void.class) {
           return null;
         }
         return new Type[] {method.getReturnType(), method.getGenericReturnType()};
       }
     }
   } catch (Throwable t) {
     logger.warn(t.getMessage(), t);
   }
   return null;
 }