當前位置: 首頁>>代碼示例>>Java>>正文


Java MethodUtils類代碼示例

本文整理匯總了Java中org.apache.commons.lang3.reflect.MethodUtils的典型用法代碼示例。如果您正苦於以下問題:Java MethodUtils類的具體用法?Java MethodUtils怎麽用?Java MethodUtils使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


MethodUtils類屬於org.apache.commons.lang3.reflect包,在下文中一共展示了MethodUtils類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: provideExtractorForValue

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
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()]));
}
 
開發者ID:michalwojciechowski,項目名稱:coherence-sql,代碼行數:26,代碼來源:ReflectionExtractorFactory.java

示例2: invokePublic

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
/** 
 * 
 * 快捷調用公共方法(性能較差) 
 *  
 * @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);
}
 
開發者ID:lemonJun,項目名稱:TakinRPC,代碼行數:38,代碼來源:Javassis.java

示例3: checkCommands

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
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);
	}
}
 
開發者ID:ligoj,項目名稱:plugin-prov,代碼行數:19,代碼來源:TerraformUtilsTest.java

示例4: matchingModuleMethod

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
/**
 * 匹配模塊中複合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;
}
 
開發者ID:alibaba,項目名稱:jvm-sandbox,代碼行數:31,代碼來源:ModuleHttpServlet.java

示例5: formatObjectGraph

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
@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();
}
 
開發者ID:commercehub-oss,項目名稱:clouseau,代碼行數:23,代碼來源:HttpSessionAttributesToString.java

示例6: applyRemoversToOriginal

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
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);
    }
}
 
開發者ID:schemaanalyst,項目名稱:schemaanalyst,代碼行數:20,代碼來源:NonEquivalentMutantRemover.java

示例7: injectValueInFirstArg

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
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);
		}
	});
}
 
開發者ID:andreptb,項目名稱:fitnesse-selenium-slim,代碼行數:24,代碼來源:SeleniumScriptTable.java

示例8: findAnnotation

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
/**
 * 獲得運行的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;
}
 
開發者ID:venusdrogon,項目名稱:feilong-spring,代碼行數:45,代碼來源:JoinPointUtil.java

示例9: getLogger

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
/**
 * 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;
}
 
開發者ID:psi-probe,項目名稱:psi-probe,代碼行數:23,代碼來源:Jdk14ManagerAccessor.java

示例10: getHandlers

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
/**
 * 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;
}
 
開發者ID:psi-probe,項目名稱:psi-probe,代碼行數:22,代碼來源:Jdk14ManagerAccessor.java

示例11: getHandlers

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
/**
 * 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;
}
 
開發者ID:psi-probe,項目名稱:psi-probe,代碼行數:22,代碼來源:Jdk14LoggerAccessor.java

示例12: getLevel

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
/**
 * 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;
}
 
開發者ID:psi-probe,項目名稱:psi-probe,代碼行數:23,代碼來源:Jdk14LoggerAccessor.java

示例13: getAppender

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
/**
 * 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;
}
 
開發者ID:psi-probe,項目名稱:psi-probe,代碼行數:24,代碼來源:LogbackLoggerAccessor.java

示例14: getSiftedAppenders

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
/**
 * 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;
}
 
開發者ID:psi-probe,項目名稱:psi-probe,代碼行數:25,代碼來源:LogbackLoggerAccessor.java

示例15: LogbackFactoryAccessor

import org.apache.commons.lang3.reflect.MethodUtils; //導入依賴的package包/類
/**
 * 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);
}
 
開發者ID:psi-probe,項目名稱:psi-probe,代碼行數:28,代碼來源:LogbackFactoryAccessor.java


注:本文中的org.apache.commons.lang3.reflect.MethodUtils類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。