Java 类org.apache.commons.lang3.reflect.MethodUtils 实例源码

项目:coherence-sql    文件:ReflectionExtractorFactory.java   
private <T> ValueExtractor provideExtractorForValue(Class<T> clazz, int target, List<String> chainOfProperties) {
    Class<?> propertyClass = clazz;
    List<ValueExtractor> chainedExtractors = Lists.newArrayList();

    for (String property : chainOfProperties) {
        Class<?> finalPropertyClass = propertyClass;

        Optional<Method> matchingMethod = Stream.of(property,
                "get" + WordUtils.capitalize(property),
                "is" + WordUtils.capitalize(property))
                .map(token -> MethodUtils.getMatchingMethod(finalPropertyClass, token))
                .findFirst();

        Method method = matchingMethod.orElseThrow(
                () -> new InvalidQueryException(
                        String.format("Cannot find appropriate method for property [%s] on class [%s]",
                                property, finalPropertyClass)));

        ReflectionExtractor extractor = new ReflectionExtractor(method.getName());
        chainedExtractors.add(extractor);
        propertyClass = method.getDeclaringClass();
    }

    return new ChainedExtractor(chainedExtractors.toArray(new ValueExtractor[chainedExtractors.size()]));
}
项目:TakinRPC    文件:Javassis.java   
/** 
 * 
 * 快捷调用公共方法(性能较差) 
 *  
 * @param host 
 *            宿主对象 
 * @param name 
 *            方法名 
 * @param args 
 *            方法参数 
 * @return 执行结果 
 * @throws NoSuchMethodException 
 *             如果没有相应的方法 
 */
public static Object invokePublic(Object host, String name, Object... args) throws NoSuchMethodException {
    final Class<?> clazz = host instanceof Class ? (Class<?>) host : host.getClass();
    args = args == null ? new Object[] { null } : args;
    Class<?>[] paramTypes = new Class[args.length];
    for (int i = 0; i < paramTypes.length; i++) {
        paramTypes[i] = args[i] == null ? null : args[i].getClass();
    }
    int[] keys = new int[3];
    keys[0] = clazz.hashCode();
    keys[1] = name.hashCode();
    keys[2] = Arrays.hashCode(paramTypes);
    int key = Arrays.hashCode(keys);
    Invoker invoker = PUBLIC_INVOKER_MAP.get(key);
    if (invoker == null) {
        Method method = MethodUtils.getMatchingAccessibleMethod(clazz, name, paramTypes);
        if (method == null) {
            throw new NoSuchMethodException(clazz.getName() + "." + name + argumentTypesToString(paramTypes));
        }
        invoker = newInvoker(method);
        PUBLIC_INVOKER_MAP.put(key, invoker);
    }
    return invoker.invoke(host, args);
}
项目:plugin-prov    文件:TerraformUtilsTest.java   
private void checkCommands(final String os, final String... command) throws ReflectiveOperationException {
    final URL[] urLs = ((URLClassLoader) Main.class.getClassLoader()).getURLs();
    ThreadClassLoaderScope scope = null;
    try {
        System.setProperty("os.name", os);
        final URLClassLoader urlClassLoader = new URLClassLoader(urLs, null);
        scope = new ThreadClassLoaderScope(urlClassLoader);
        final Object terra = urlClassLoader.loadClass("org.ligoj.app.plugin.prov.terraform.TerraformUtils").newInstance();
        final Object mock = MethodUtils.invokeStaticMethod(urlClassLoader.loadClass("org.mockito.Mockito"), "mock",
                urlClassLoader.loadClass("org.ligoj.bootstrap.resource.system.configuration.ConfigurationResource"));
        FieldUtils.writeField(terra, "configuration", mock, true);
        Assert.assertEquals(Arrays.asList(command),
                ((ProcessBuilder) MethodUtils.invokeMethod(terra, true, "newBuilder", new Object[] { new String[] { "terraform" } }))
                        .command());
    } finally {
        IOUtils.closeQuietly(scope);
    }
}
项目:jvm-sandbox    文件:ModuleHttpServlet.java   
/**
 * 匹配模块中复合HTTP请求路径的方法
 * 匹配方法的方式是:HttpMethod和HttpPath全匹配
 *
 * @param path          HTTP请求路径
 * @param httpMethod    HTTP请求方法
 * @param uniqueId      模块ID
 * @param classOfModule 模块类
 * @return 返回匹配上的方法,如果没有找到匹配方法则返回null
 */
private Method matchingModuleMethod(final String path,
                                    final Http.Method httpMethod,
                                    final String uniqueId,
                                    final Class<?> classOfModule) {

    for (final Method method : MethodUtils.getMethodsListWithAnnotation(classOfModule, Http.class)) {
        final Http httpAnnotation = method.getAnnotation(Http.class);
        if(null == httpAnnotation) {
            continue;
        }
        final String pathPattern = "/"+uniqueId+httpAnnotation.value();
        if (ArrayUtils.contains(httpAnnotation.method(), httpMethod)
                && SandboxStringUtils.matching(path, pathPattern)) {
            return method;
        }
    }

    // 找不到匹配方法,返回null
    return null;
}
项目:clouseau    文件:HttpSessionAttributesToString.java   
@Override
public String formatObjectGraph(Object graph) throws ReflectiveOperationException, ClassCastException {
    StringBuilder out = new StringBuilder();
    Enumeration attrs = (Enumeration) MethodUtils.invokeExactMethod(graph, "getAttributeNames");
    @SuppressWarnings("unchecked")
    ArrayList<String> attrList = Collections.list(attrs);
    Collections.sort(attrList);
    out.append("{");
    int size = attrList.size();
    for (int i = 0; i < size; i++) {
        String attrName = attrList.get(i);
        Object attrValue = MethodUtils.invokeExactMethod(graph, "getAttribute", attrName);
        out.append(attrName);
        out.append('=');
        out.append(attrValue);
        if (i != size - 1) {
            out.append(",\n\n");
        }
    }
    out.append("}");
    return out.toString();
}
项目:schemaanalyst    文件:NonEquivalentMutantRemover.java   
private T applyRemoversToOriginal(T original, Mutant<T> mutant) {
    try {
        T modifiedOriginal = (T) MethodUtils.invokeMethod(original, "duplicate");
        List<Mutant<T>> list = Arrays.asList(new Mutant<>(modifiedOriginal, ""));
        for (MutantRemover mutantRemover : mutant.getRemoversApplied()) {
            list = mutantRemover.removeMutants(list);
        }
        if (list.size() != 1) {
            throw new RuntimeException("Applying the MutantRemovers used for a "
                    + "mutant on the original schema did not produce only 1 "
                    + "schema (expected: 1, actual: " + list.size() + ")");
        }
        return list.get(0).getMutatedArtefact();
    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
        throw new RuntimeException("Unable to execute the 'duplicate' "
                + "method in a class that appears to have an accessible "
                + "duplicate method to call", ex);
    }
}
项目:schemaanalyst    文件:EquivalentMutantDetector.java   
private T applyRemoversToOriginal(T original, Mutant<T> mutant) {
    try {
        T modifiedOriginal = (T) MethodUtils.invokeMethod(original, "duplicate");
        List<Mutant<T>> list = Arrays.asList(new Mutant<>(modifiedOriginal, ""));
        for (MutantRemover mutantRemover : mutant.getRemoversApplied()) {
            list = mutantRemover.removeMutants(list);
        }
        if (list.size() != 1) {
            throw new RuntimeException("Applying the MutantRemovers used for a "
                    + "mutant on the original schema did not produce only 1 "
                    + "schema (expected: 1, actual: " + list.size() + ")");
        }
        return list.get(0).getMutatedArtefact();
    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
        throw new RuntimeException("Unable to execute the 'duplicate' "
                + "method in a class that appears to have an accessible "
                + "duplicate method to call", ex);
    }
}
项目:schemaanalyst    文件:NonRedundantMutantRemover.java   
private T applyRemoversToOriginal(T original, Mutant<T> mutant) {
    try {
        T modifiedOriginal = (T) MethodUtils.invokeMethod(original, "duplicate");
        List<Mutant<T>> list = Arrays.asList(new Mutant<>(modifiedOriginal, ""));
        for (MutantRemover mutantRemover : mutant.getRemoversApplied()) {
            list = mutantRemover.removeMutants(list);
        }
        if (list.size() != 1) {
            throw new RuntimeException("Applying the MutantRemovers used for a "
                    + "mutant on the original schema did not produce only 1 "
                    + "schema (expected: 1, actual: " + list.size() + ")");
        }
        return list.get(0).getMutatedArtefact();
    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
        throw new RuntimeException("Unable to execute the 'duplicate' "
                + "method in a class that appears to have an accessible "
                + "duplicate method to call", ex);
    }
}
项目:fitnesse-selenium-slim    文件:SeleniumScriptTable.java   
private void injectValueInFirstArg(List<SlimAssertion> assertions, boolean not, Object contentToCheck) {
    SlimAssertion.getInstructions(assertions).forEach(instruction -> {
        try {
            String valueToInject = FitnesseMarkup.SELECTOR_VALUE_SEPARATOR + (not ? FitnesseMarkup.SELECTOR_VALUE_DENY_INDICATOR : StringUtils.EMPTY) + contentToCheck;
            Object args = FieldUtils.readField(instruction, SeleniumScriptTable.CALL_INSTRUCTION_ARGS_FIELD, true);
            Object[] argsToInject;
            if (args instanceof Object[] && ArrayUtils.getLength(args) > NumberUtils.INTEGER_ZERO) {
                argsToInject = (Object[]) args;
                argsToInject[NumberUtils.INTEGER_ZERO] += valueToInject;
            } else {
                argsToInject = ArrayUtils.toArray(valueToInject);
            }
            String methodName = Objects.toString(FieldUtils.readField(instruction, SeleniumScriptTable.CALL_INSTRUCTION_METHODNAME_FIELD, true));
            if (Objects.isNull(MethodUtils.getAccessibleMethod(SeleniumFixture.class, Objects.toString(methodName), ClassUtils.toClass(argsToInject)))) {
                SeleniumScriptTable.LOGGER.fine("Method for instruction not found on SeleniumFixture, injection aborted: " + instruction);
                return;
            }
            FieldUtils.writeField(instruction, SeleniumScriptTable.CALL_INSTRUCTION_ARGS_FIELD, argsToInject, true);
        } catch (IllegalArgumentException | ReflectiveOperationException e) {
            SeleniumScriptTable.LOGGER.log(Level.FINE, "Failed to inject check value using reflection", e);
        }
    });
}
项目:feilong-spring    文件:JoinPointUtil.java   
/**
 * 获得运行的annotaion.
 * 
 * <h3>代码流程:</h3>
 * 
 * <blockquote>
 * <ol>
 * <li>先基于 {@link org.aspectj.lang.reflect.MethodSignature},获得其 method,然后继续这个method 调用
 * {@link org.springframework.core.annotation.AnnotationUtils#findAnnotation(Method, Class)}解析</li>
 * <li>如果第一步找不到相应的annotation,那么会通过 {@link org.aspectj.lang.JoinPoint#getTarget()} 构建target method,并解析</li>
 * </ol>
 * </blockquote>
 *
 * @param <T>
 *            the generic type
 * @param joinPoint
 *            the join point
 * @param annotationClass
 *            the annotation class
 * @return the annotation
 */
public static <T extends Annotation> T findAnnotation(JoinPoint joinPoint,Class<T> annotationClass){
    Validate.notNull(joinPoint, "joinPoint can't be null!");
    Validate.notNull(annotationClass, "annotationClass can't be null!");

    //---------------------------------------------------------------

    MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
    Method method = methodSignature.getMethod();

    T annotation = AnnotationUtils.findAnnotation(method, annotationClass);
    if (null != annotation){
        return annotation;
    }

    //---------------------------------------------------------------
    Method targetMethod = MethodUtils
                    .getAccessibleMethod(joinPoint.getTarget().getClass(), method.getName(), method.getParameterTypes());
    annotation = AnnotationUtils.findAnnotation(targetMethod, annotationClass);
    if (null != annotation){
        return annotation;
    }
    return null;
}
项目:psi-probe    文件:Jdk14ManagerAccessor.java   
/**
 * Gets the logger.
 *
 * @param name the name
 * @return the logger
 */
public Jdk14LoggerAccessor getLogger(String name) {
  try {
    Object logger = MethodUtils.invokeMethod(getTarget(), "getLogger", name);
    if (logger == null) {
      throw new NullPointerException(
          getTarget().getClass().getName() + "#getLogger(\"" + name + "\") returned null");
    }
    Jdk14LoggerAccessor accessor = new Jdk14LoggerAccessor();
    accessor.setTarget(logger);
    accessor.setApplication(getApplication());
    return accessor;
  } catch (Exception e) {
    logger.error("{}#getLogger('{}') failed", getTarget().getClass().getName(), name, e);
  }
  return null;
}
项目:psi-probe    文件:Jdk14ManagerAccessor.java   
/**
 * Gets the handlers.
 *
 * @return the handlers
 */
@SuppressWarnings("unchecked")
public List<LogDestination> getHandlers() {
  List<LogDestination> allHandlers = new ArrayList<>();
  try {
    for (String name : Collections
        .list((Enumeration<String>) MethodUtils.invokeMethod(getTarget(), "getLoggerNames"))) {
      Jdk14LoggerAccessor accessor = getLogger(name);
      if (accessor != null) {
        allHandlers.addAll(accessor.getHandlers());
      }
    }
  } catch (Exception e) {
    logger.error("{}#getLoggerNames() failed", getTarget().getClass().getName(), e);
  }
  return allHandlers;
}
项目:psi-probe    文件:Jdk14LoggerAccessor.java   
/**
 * Gets the handlers.
 *
 * @return the handlers
 */
public List<LogDestination> getHandlers() {
  List<LogDestination> handlerAccessors = new ArrayList<>();
  try {
    Object[] handlers = (Object[]) MethodUtils.invokeMethod(getTarget(), "getHandlers");
    for (int h = 0; h < handlers.length; h++) {
      Object handler = handlers[h];
      Jdk14HandlerAccessor handlerAccessor = wrapHandler(handler, h);
      if (handlerAccessor != null) {
        handlerAccessors.add(handlerAccessor);
      }
    }
  } catch (Exception e) {
    logger.error("{}#handlers inaccessible", getTarget().getClass().getName(), e);
  }
  return handlerAccessors;
}
项目:psi-probe    文件:Jdk14LoggerAccessor.java   
/**
 * Gets the level.
 *
 * @return the level
 */
public String getLevel() {
  try {
    Object level = null;
    Object target = getTarget();
    while (level == null && target != null) {
      level = getLevelInternal(target);
      target = MethodUtils.invokeMethod(target, "getParent");
    }
    if (level == null && isJuliRoot()) {
      return "INFO";
    }
    return (String) MethodUtils.invokeMethod(level, "getName");
  } catch (Exception e) {
    logger.error("{}#getLevel() failed", getTarget().getClass().getName(), e);
  }
  return null;
}
项目:psi-probe    文件:LogbackLoggerAccessor.java   
/**
 * Returns the appender of this logger with the given name.
 * 
 * @param name the name of the appender to return
 * @return the appender with the given name, or null if no such appender exists for this logger
 */
public LogbackAppenderAccessor getAppender(String name) {
  try {
    Object appender = MethodUtils.invokeMethod(getTarget(), "getAppender", name);
    if (appender == null) {
      List<LogbackAppenderAccessor> appenders = getAppenders();
      for (LogbackAppenderAccessor wrappedAppender : appenders) {
        if (wrappedAppender.getIndex().equals(name)) {
          return wrappedAppender;
        }
      }
    }
    return wrapAppender(appender);
  } catch (Exception e) {
    logger.error("{}#getAppender() failed", getTarget().getClass().getName(), e);
  }
  return null;
}
项目:psi-probe    文件:LogbackLoggerAccessor.java   
/**
 * Gets the sifted appenders.
 *
 * @param appender the appender
 * @return the sifted appenders
 * @throws Exception the exception
 */
@SuppressWarnings("unchecked")
private List<Object> getSiftedAppenders(Object appender) throws Exception {
  if ("ch.qos.logback.classic.sift.SiftingAppender".equals(appender.getClass().getName())) {
    Object tracker = MethodUtils.invokeMethod(appender, "getAppenderTracker");
    if (tracker != null) {
      try {
        return (List<Object>) MethodUtils.invokeMethod(tracker, "allComponents");
      } catch (final NoSuchMethodException e) {
        // XXX Legacy 1.0.x and lower support for logback
        logger.trace("", e);
        return (List<Object>) MethodUtils.invokeMethod(tracker, "valueList");
      }
    }
    return new ArrayList<>();
  }
  return null;
}
项目:psi-probe    文件:LogbackFactoryAccessor.java   
/**
 * Attempts to initialize a Logback logger factory via the given class loader.
 *
 * @param cl the ClassLoader to use when fetching the factory
 * @throws ClassNotFoundException the class not found exception
 * @throws IllegalAccessException the illegal access exception
 * @throws InvocationTargetException the invocation target exception
 */
public LogbackFactoryAccessor(ClassLoader cl)
    throws ClassNotFoundException, IllegalAccessException, InvocationTargetException {

  // Get the singleton SLF4J binding, which may or may not be Logback, depending on the binding.
  Class<?> clazz = cl.loadClass("org.slf4j.impl.StaticLoggerBinder");
  Method getSingleton = MethodUtils.getAccessibleMethod(clazz, "getSingleton", new Class[0]);
  Object singleton = getSingleton.invoke(null);
  Method getLoggerFactory =
      MethodUtils.getAccessibleMethod(clazz, "getLoggerFactory", new Class[0]);

  Object loggerFactory = getLoggerFactory.invoke(singleton);

  // Check if the binding is indeed Logback
  Class<?> loggerFactoryClass = cl.loadClass("ch.qos.logback.classic.LoggerContext");
  if (!loggerFactoryClass.isInstance(loggerFactory)) {
    throw new RuntimeException("The singleton SLF4J binding was not Logback");
  }
  setTarget(loggerFactory);
}
项目:psi-probe    文件:LogbackFactoryAccessor.java   
/**
 * Returns a list of wrappers for all Logback appenders that have an associated logger.
 * 
 * @return a list of {@link LogbackAppenderAccessor}s representing all appenders that are in use
 */
@SuppressWarnings("unchecked")
public List<LogbackAppenderAccessor> getAppenders() {
  List<LogbackAppenderAccessor> appenders = new ArrayList<>();
  try {
    Class<? extends Object> clazz = getTarget().getClass();
    Method getLoggerList = MethodUtils.getAccessibleMethod(clazz, "getLoggerList", new Class[0]);

    List<Object> loggers = (List<Object>) getLoggerList.invoke(getTarget());
    for (Object logger : loggers) {
      LogbackLoggerAccessor accessor = new LogbackLoggerAccessor();
      accessor.setTarget(logger);
      accessor.setApplication(getApplication());

      appenders.addAll(accessor.getAppenders());
    }
  } catch (Exception e) {
    logger.error("{}.getLoggerList() failed", getTarget(), e);
  }
  return appenders;
}
项目:psi-probe    文件:Log4JLoggerAccessor.java   
/**
 * Gets the appenders.
 *
 * @return the appenders
 */
@SuppressWarnings("unchecked")
public List<Log4JAppenderAccessor> getAppenders() {
  List<Log4JAppenderAccessor> appenders = new ArrayList<>();
  try {
    for (Object unwrappedAppender : Collections
        .list((Enumeration<Object>) MethodUtils.invokeMethod(getTarget(), "getAllAppenders"))) {
      Log4JAppenderAccessor appender = wrapAppender(unwrappedAppender);
      if (appender != null) {
        appenders.add(appender);
      }
    }
  } catch (Exception e) {
    logger.error("{}#getAllAppenders() failed", getTarget().getClass().getName(), e);
  }
  return appenders;
}
项目:psi-probe    文件:Log4JManagerAccessor.java   
/**
 * Gets the appenders.
 *
 * @return the appenders
 */
@SuppressWarnings("unchecked")
public List<Log4JAppenderAccessor> getAppenders() {
  List<Log4JAppenderAccessor> appenders = new ArrayList<>();
  try {
    appenders.addAll(getRootLogger().getAppenders());

    Class<?> clazz = (Class<?>) getTarget();
    Method getCurrentLoggers =
        MethodUtils.getAccessibleMethod(clazz, "getCurrentLoggers", new Class[0]);

    for (Object currentLogger : Collections
        .list((Enumeration<Object>) getCurrentLoggers.invoke(null))) {
      Log4JLoggerAccessor accessor = new Log4JLoggerAccessor();
      accessor.setTarget(currentLogger);
      accessor.setApplication(getApplication());

      appenders.addAll(accessor.getAppenders());
    }
  } catch (Exception e) {
    logger.error("{}#getCurrentLoggers() failed", getTarget().getClass().getName(), e);
  }
  return appenders;
}
项目:psi-probe    文件:TomcatSlf4jLogbackFactoryAccessor.java   
/**
 * Attempts to initialize a TomcatSlf4jLogback logger factory via the given class loader.
 *
 * @param cl the ClassLoader to use when fetching the factory
 * @throws ClassNotFoundException the class not found exception
 * @throws IllegalAccessException the illegal access exception
 * @throws InvocationTargetException the invocation target exception
 */
public TomcatSlf4jLogbackFactoryAccessor(ClassLoader cl)
    throws ClassNotFoundException, IllegalAccessException, InvocationTargetException {

  // Get the singleton SLF4J binding, which may or may not be Logback, depending on the binding.
  Class<?> clazz = cl.loadClass("org.apache.juli.logging.org.slf4j.impl.StaticLoggerBinder");
  Method getSingleton = MethodUtils.getAccessibleMethod(clazz, "getSingleton", new Class[0]);
  Object singleton = getSingleton.invoke(null);
  Method getLoggerFactory =
      MethodUtils.getAccessibleMethod(clazz, "getLoggerFactory", new Class[0]);

  Object loggerFactory = getLoggerFactory.invoke(singleton);

  // Check if the binding is indeed Logback
  Class<?> loggerFactoryClass =
      cl.loadClass("org.apache.juli.logging.ch.qos.logback.classic.LoggerContext");
  if (!loggerFactoryClass.isInstance(loggerFactory)) {
    throw new RuntimeException("The singleton SLF4J binding was not Logback");
  }
  setTarget(loggerFactory);
}
项目:psi-probe    文件:TomcatSlf4jLogbackFactoryAccessor.java   
/**
 * Returns a list of wrappers for all TomcatSlf4jLogback appenders that have an associated logger.
 * 
 * @return a list of {@link TomcatSlf4jLogbackAppenderAccessor}s representing all appenders that
 *         are in use
 */
@SuppressWarnings("unchecked")
public List<TomcatSlf4jLogbackAppenderAccessor> getAppenders() {
  List<TomcatSlf4jLogbackAppenderAccessor> appenders = new ArrayList<>();
  try {
    Class<? extends Object> clazz = getTarget().getClass();
    Method getLoggerList = MethodUtils.getAccessibleMethod(clazz, "getLoggerList", new Class[0]);

    List<Object> loggers = (List<Object>) getLoggerList.invoke(getTarget());
    for (Object logger : loggers) {
      TomcatSlf4jLogbackLoggerAccessor accessor = new TomcatSlf4jLogbackLoggerAccessor();
      accessor.setTarget(logger);
      accessor.setApplication(getApplication());

      appenders.addAll(accessor.getAppenders());
    }
  } catch (Exception e) {
    logger.error("{}.getLoggerList() failed", getTarget(), e);
  }
  return appenders;
}
项目:psi-probe    文件:TomcatSlf4jLogbackLoggerAccessor.java   
/**
 * Returns the appender of this logger with the given name.
 * 
 * @param name the name of the appender to return
 * @return the appender with the given name, or null if no such appender exists for this logger
 */
public TomcatSlf4jLogbackAppenderAccessor getAppender(String name) {
  try {
    Object appender = MethodUtils.invokeMethod(getTarget(), "getAppender", name);
    if (appender == null) {
      List<TomcatSlf4jLogbackAppenderAccessor> appenders = getAppenders();
      for (TomcatSlf4jLogbackAppenderAccessor wrappedAppender : appenders) {
        if (wrappedAppender.getIndex().equals(name)) {
          return wrappedAppender;
        }
      }
    }
    return wrapAppender(appender);
  } catch (Exception e) {
    logger.error("{}#getAppender() failed", getTarget().getClass().getName(), e);
  }
  return null;
}
项目:psi-probe    文件:TomcatSlf4jLogbackLoggerAccessor.java   
/**
 * Gets the sifted appenders.
 *
 * @param appender the appender
 * @return the sifted appenders
 * @throws Exception the exception
 */
@SuppressWarnings("unchecked")
private List<Object> getSiftedAppenders(Object appender) throws Exception {
  if ("org.apache.juli.logging.ch.qos.logback.classic.sift.SiftingAppender"
      .equals(appender.getClass().getName())) {

    Object tracker = MethodUtils.invokeMethod(appender, "getAppenderTracker");
    if (tracker != null) {
      try {
        return (List<Object>) MethodUtils.invokeMethod(tracker, "allComponents");
      } catch (final NoSuchMethodException e) {
        // XXX Legacy 1.0.x and lower support for logback
        logger.trace("", e);
        return (List<Object>) MethodUtils.invokeMethod(tracker, "valueList");
      }
    }
    return new ArrayList<>();
  }
  return null;
}
项目:rdap-server-sample-gtld    文件:AbstractWhoisParser.java   
private void addItemToCollection(Object object, String fieldName, Object value)
    throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
  Object collection = null;
  try {
    collection = FieldUtils.readField(object, fieldName);
    if (!(collection instanceof Collection)) {
      collection = null;
    }
  } catch (Exception e) {
    // Do nothing -> just using this to check if we have to use the field or the addXxxx() method
  }

  if (collection != null) {
    MethodUtils.invokeExactMethod(collection, "add", new Object[]{value}, new Class[]{Object.class});
  } else {
    MethodUtils.invokeExactMethod(object, "add" + StringUtils.capitalize(fieldName), value);
  }
}
项目:coroutines    文件:SearchUtilsTest.java   
@Test
public void mustFindLocalVariableNodeForInstruction() {
    MethodNode methodNode = findMethodsWithName(classNode.methods, "localVariablesTest").get(0);
    List<AbstractInsnNode> insns = findInvocationsOf(methodNode.instructions,
            MethodUtils.getAccessibleMethod(PrintStream.class, "println", String.class));

    AbstractInsnNode insnNode = insns.get(0);

    LocalVariableNode lvn0 = findLocalVariableNodeForInstruction(methodNode.localVariables, methodNode.instructions, insnNode, 0);
    LocalVariableNode lvn1 = findLocalVariableNodeForInstruction(methodNode.localVariables, methodNode.instructions, insnNode, 1);
    LocalVariableNode lvn2 = findLocalVariableNodeForInstruction(methodNode.localVariables, methodNode.instructions, insnNode, 2);

    assertEquals(lvn0.name, "this");
    assertEquals(lvn1.name, "val1");
    assertEquals(lvn2.name, "val2");
}
项目:coroutines    文件:DebugGeneratorsTest.java   
@Test
public void mustNotCrashOnMarker() throws Exception {
    // Augment signature
    methodNode.desc = Type.getMethodDescriptor(Type.VOID_TYPE, new Type[] { });

    // Initialize variable table
    VariableTable varTable = new VariableTable(classNode, methodNode);

    methodNode.instructions
            = merge(
                    // test marker of each type
                    debugMarker(MarkerType.NONE, "marker1"),
                    debugMarker(MarkerType.CONSTANT, "marker2"),
                    debugMarker(MarkerType.STDOUT, "marker3"),
                    returnVoid()
            );

    // Write to JAR file + load up in classloader -- then execute tests
    try (URLClassLoader cl = createJarAndLoad(classNode)) {
        Object obj = cl.loadClass(STUB_CLASSNAME).newInstance();
        MethodUtils.invokeMethod(obj, STUB_METHOD_NAME);
    }
}
项目:coroutines    文件:DebugGeneratorsTest.java   
@Test
public void mustNotCrashOnDebugPrint() throws Exception {
    // Augment signature
    methodNode.desc = Type.getMethodDescriptor(Type.VOID_TYPE, new Type[] { });

    // Initialize variable table
    VariableTable varTable = new VariableTable(classNode, methodNode);

    methodNode.instructions
            = merge(
                    // test marker of each type
                    debugPrint(loadStringConst("marker1")),
                    returnVoid()
            );

    // Write to JAR file + load up in classloader -- then execute tests
    try (URLClassLoader cl = createJarAndLoad(classNode)) {
        Object obj = cl.loadClass(STUB_CLASSNAME).newInstance();
        MethodUtils.invokeMethod(obj, STUB_METHOD_NAME);
    }
}
项目:SocialDataImporter    文件:OxSqlJob.java   
/**
 * @param dbEntities
 * @param aEntity
 * @throws SdiException
 */
private void saveEntity( List<Object> dbEntities, Object aEntity ) throws SdiException
{
    if ( myDryRun )
    {
        myLog.trace( "DryRun: Going to save entity: " + aEntity );

        try
        {
            MethodUtils.invokeExactMethod( aEntity, "setId", new Object[] { Long.valueOf( myDummyId ) } );
        }
        catch ( Throwable t )
        {
            throw new SdiException( "Entity has no 'setId( Long )' method", t, SdiException.EXIT_CODE_UNKNOWN_ERROR );
        }

        myDummyId++;
    }
    else
    {
        myLog.trace( "Going to save entity: " + aEntity );
        myEntityManager.persist( aEntity );
    } // if..else myDryRun

    dbEntities.add( aEntity );
}
项目:jpa-utils    文件:SqlDataBuilder.java   
/**
 * some column data need special procession, eg. jsonb, hstore, etc.
 *
 * @param fieldAccessor
 * @param entity
 * @param propertyValue
 * @return
 */
public static Object getDataForSqlWrite(FieldAccessor fieldAccessor, Object entity, Object propertyValue) {
    Column columnAnno = fieldAccessor.getPropertyAnnotation(Column.class);
    if ((columnAnno != null && !columnAnno.nullable()) && fieldAccessor.getPropertyType() == String.class && propertyValue == null) {
        return "";
    }
    if (propertyValue == null) {
        return null;
    }
    if (fieldAccessor.getPropertyAnnotation(Jsonb.class) != null) {
        try {
            Class<?> pgObjectCls = Class.forName("org.postgresql.util.PGobject");
            String jsonText = JSON.toJSONString(propertyValue);
            Object pgObject = pgObjectCls.newInstance();
            // TODO: cache this method call or direct use PGobject by injection
            MethodUtils.invokeMethod(pgObject, "setType", "text");
            MethodUtils.invokeMethod(pgObject, "setValue", jsonText);
            return pgObject;
        } catch (Exception e) {
            throw new JdbcRuntimeException(e);
        }
    }
    // may need more annotation processor
    return propertyValue;
}
项目:CAM    文件:ObjectUtils.java   
/**
 * Get property value from an object with the getter method.
 *
 * @param object the object where the property live in
 * @param fieldName property name
 * @return property value. {@code null} if the common java bean accessor method has tried.
 */
public static Object getter(final Object object,String fieldName){
    Object property = null;

    StringBuilder s = new StringBuilder("get");
    s.append(StringUtils.capitalize(fieldName));
    try{
        property = MethodUtils.invokeExactMethod(object,s.toString());
    }catch (Exception e){
        //try with isXXX
        StringBuilder s2 = new StringBuilder("is");
        s2.append(StringUtils.capitalize(fieldName));
        try{
            property = MethodUtils.invokeExactMethod(object,s2.toString());
        }catch (Exception ee){
            LOG.error("Exception",ee);
        }
    }
    return property;
}
项目:polydes    文件:ExtensionInterface.java   
public static Object sendMessage(String extensionID, String message, Object... args)
{
    ExtensionWrapper ext = SW.get().getExtensionManager().getExtensions().get(extensionID);
    if(!ext.isActivated())
    {
        return null;
    }

    try
    {
        return MethodUtils.invokeMethod(ext.getExtension(), message, args);
    }
    catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e2)
    {
        e2.printStackTrace();
    }

    return null;
}
项目:gwt-commons-lang3    文件:EqualsBuilderTest.java   
@Test
public void testIsRegistered() throws Exception {
    final Object firstObject = new Object();
    final Object secondObject = new Object();

    try {
        final Method registerMethod = MethodUtils.getMatchingMethod(EqualsBuilder.class, "register", Object.class, Object.class);
        registerMethod.setAccessible(true);
        registerMethod.invoke(null, firstObject, secondObject);

        assertTrue(EqualsBuilder.isRegistered(firstObject, secondObject));
        assertTrue(EqualsBuilder.isRegistered(secondObject, firstObject)); // LANG-1349
    } finally {
        final Method unregisterMethod = MethodUtils.getMatchingMethod(EqualsBuilder.class, "unregister", Object.class, Object.class);
        unregisterMethod.setAccessible(true);
        unregisterMethod.invoke(null, firstObject, secondObject);
    }
}
项目:yarg    文件:AbstractObjectToStringConverter.java   
protected Object convertFromStringUnresolved(Class parameterClass, String paramValueStr) {
    try {
        Constructor constructor = ConstructorUtils.getAccessibleConstructor(parameterClass, String.class);
        if (constructor != null) {
            return constructor.newInstance(paramValueStr);
        } else {
            Method valueOf = MethodUtils.getAccessibleMethod(parameterClass, "valueOf", String.class);
            if (valueOf != null) {
                return valueOf.invoke(null, paramValueStr);
            }
        }
    } catch (ReflectiveOperationException e) {
        throw new ReportingException(
                String.format("Could not instantiate object with class [%s] from [%s] string.",
                        parameterClass.getCanonicalName(),
                        paramValueStr));
    }
    return paramValueStr;
}
项目:Lumpi    文件:AbstractFormValidator.java   
@Override
public T validate(String input) {
    Object result = null;
    V validator = getValidator();

    try {
        result = (Boolean) MethodUtils.invokeExactMethod(
                validator, VALIDATE_METHOD_NAME, input);
    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
        Logger.getLogger(AbstractFormValidator.class.getName()).log(Level.SEVERE, null, ex);
    }

    if (result != null) {
        return (T) result;
    }

    return null;
}
项目:happylifeplat-transaction    文件:TxCompensationServiceImpl.java   
/**
 * 执行补偿
 *
 * @param transactionRecover 补偿信息
 */
@SuppressWarnings("unchecked")
private void compensatoryTransfer(TransactionRecover transactionRecover) {
    if (Objects.nonNull(transactionRecover)) {
        final TransactionInvocation transactionInvocation = transactionRecover.getTransactionInvocation();
        if (Objects.nonNull(transactionInvocation)) {
            final Class clazz = transactionInvocation.getTargetClazz();
            final String method = transactionInvocation.getMethod();
            final Object[] argumentValues = transactionInvocation.getArgumentValues();
            final Class[] argumentTypes = transactionInvocation.getArgumentTypes();
            final Object bean = SpringBeanUtils.getInstance().getBean(clazz);
            try {
                CompensationLocal.getInstance().setCompensationId(CommonConstant.COMPENSATE_ID);
                MethodUtils.invokeMethod(bean, method, argumentValues, argumentTypes);
                //通知tm自身已经完成提交 //删除本地信息
                final Boolean success = txManagerMessageService.completeCommitTxTransaction(transactionRecover.getGroupId(),
                        transactionRecover.getTaskId(), TransactionStatusEnum.COMMIT.getCode());
                if (success) {
                    transactionRecoverRepository.remove(transactionRecover.getId());
                }

            } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
                e.printStackTrace();
                LogUtil.error(LOGGER, "补偿方法反射调用失败!{}", e::getMessage);
            }

        }
    }

}
项目:jigsaw-payment    文件:JdbcProtobufTemplate.java   
private Descriptors.Descriptor getDescriptor(Class<M> messageClass) {
    try {
        return (Descriptors.Descriptor) MethodUtils.invokeStaticMethod(
                messageClass, "getDescriptor");
    } catch (NoSuchMethodException | IllegalAccessException
            | InvocationTargetException ex) {
        throw new RuntimeException(ex);
    }
}
项目:jigsaw-payment    文件:JdbcProtobufTemplate.java   
/**
 * get Builder from messageClass
 *
 * @param messageClass
 * @return
 * @throws InvocationTargetException
 * @throws IllegalAccessException
 * @throws NoSuchMethodException
 */
public static <T extends Message> T.Builder newBuilder(Class<T> messageClass) {
    T.Builder builder = null;
    try {
        builder = (T.Builder) MethodUtils.invokeStaticMethod(messageClass,
                "newBuilder");
    } catch (NoSuchMethodException | IllegalAccessException
            | InvocationTargetException e) {
        throw new RuntimeException(e);
    }
    return builder;
}
项目:yaess    文件:BDDTest.java   
private void invokeSingleCommand(Command command) {

        try {
            MethodUtils.invokeExactMethod(commandService, "handle", command);
        }
        catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
            throw new IllegalStateException(e.getMessage(), e);
        }
    }
项目:happylifeplat-tcc    文件:CoordinatorServiceImpl.java   
@SuppressWarnings("unchecked")
private void executeCoordinator(TccInvocation tccInvocation) throws Exception {
    if (Objects.nonNull(tccInvocation)) {
        final Class clazz = tccInvocation.getTargetClass();
        final String method = tccInvocation.getMethodName();
        final Object[] args = tccInvocation.getArgs();
        final Class[] parameterTypes = tccInvocation.getParameterTypes();
        final Object bean = SpringBeanUtils.getInstance().getBean(clazz);
        MethodUtils.invokeMethod(bean, method, args, parameterTypes);
        LogUtil.debug(LOGGER, "执行本地协调事务:{}", () -> tccInvocation.getTargetClass()
                + ":" + tccInvocation.getMethodName());
    }
}