java.lang.reflect.Parameter#isAnnotationPresent ( )源码实例Demo

下面列出了java.lang.reflect.Parameter#isAnnotationPresent ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: stategen   文件: GenContext.java
public static boolean checkIgnore(Parameter parameter) {
    Class<?> paramRawClz = parameter.getType();
    for (Class<?> clz : ignoreParamClasses) {
        if (clz.isAssignableFrom(paramRawClz)) {
            return true;
        }
    }

    for (Class<? extends Annotation> annoClz : ignoreParamAnnoClasses) {
        if (parameter.isAnnotationPresent(annoClz)) {
            return true;
        }
    }

    return false;
}
 
源代码2 项目: msf4j   文件: EndpointDispatcher.java
/**
 * Extract OnMessage method for String from the endpoint if exists.
 *
 * @param webSocketEndpoint Endpoint to extract method.
 * @return method optional to handle String messages.
 */
public Optional<Method> getOnStringMessageMethod(Object webSocketEndpoint) {
    Method[] methods = webSocketEndpoint.getClass().getMethods();
    Method returnMethod = null;
    for (Method method : methods) {
        if (method.isAnnotationPresent(OnMessage.class)) {
            Parameter[] parameters = method.getParameters();
            for (Parameter parameter: parameters) {
                if (!parameter.isAnnotationPresent(PathParam.class) &&
                        parameter.getType() == String.class) {
                    returnMethod = method;
                }

            }
        }
    }
    return Optional.ofNullable(returnMethod);
}
 
@Override
public boolean test(Constructor<?> constructor) {

  if (constructor == null) {
    return false;
  }
  for (Parameter parameter : constructor.getParameters()) {
    if (!parameter.isAnnotationPresent(annotationType)) {
      return false;
    }
  }
  return true;
}
 
源代码4 项目: spring-native-query   文件: NativeQueryInfo.java
public static void setParameters(NativeQueryInfo info, MethodInvocation invocation) {
    info.sql = null;
    info.sort = null;
    info.parameterList = new ArrayList<>();
    info.pageable = null;
    for (int i = 0; i < invocation.getArguments().length; i++) {
        Object argument = invocation.getArguments()[i];
        Parameter parameter = invocation.getMethod().getParameters()[i];
        if (parameter.getType().isAssignableFrom(Pageable.class)) {
            info.pageable = (Pageable) argument;
            if (info.sort == null) {
                info.sort = info.pageable.getSort();
            }
        } else if (parameter.getType().isAssignableFrom(Sort.class)) {
            info.sort = (Sort) argument;
        } else {
            if (parameter.isAnnotationPresent(NativeQueryParam.class)) {
                NativeQueryParam param = parameter.getAnnotation(NativeQueryParam.class);
                if (param.addChildren()) {
                    info.parameterList.addAll(NativeQueryParameter.ofDeclaredMethods(param.value(), parameter.getType(), argument));
                } else {
                    if (argument instanceof Map) {
                        info.parameterList.addAll(NativeQueryParameter.ofMap((Map) argument, param.value()));
                    } else {
                        info.parameterList.add(new NativeQueryParameter(param.value(), param.operator().getTransformParam().apply(argument)));
                    }
                }
            } else {
                if (argument instanceof Map) {
                    info.parameterList.addAll(NativeQueryParameter.ofMap((Map) argument, parameter.getName()));
                } else {
                    info.parameterList.add(new NativeQueryParameter(parameter.getName(), argument));
                }
            }
        }
    }
}
 
源代码5 项目: bazel   文件: ValueSourceAnnotatedMethod.java
ImmutableMap<Parameter, Object> getResolvableParameters() {
  String[] providedParamValues = parameterValueSource.value();
  int i = 0;
  ImmutableMap.Builder<Parameter, Object> resolvableParameterValues = ImmutableMap.builder();
  for (Parameter parameter : getMethod().getParameters()) {
    if (parameter.isAnnotationPresent(FromParameterValueSource.class)) {
      resolvableParameterValues.put(
          parameter, parsePrimitive(providedParamValues[i++], parameter.getType()));
    }
  }
  return resolvableParameterValues.build();
}
 
源代码6 项目: component-runtime   文件: ProcessorImpl.java
private BiFunction<InputFactory, OutputFactory, Object> buildProcessParamBuilder(final Parameter parameter) {
    if (parameter.isAnnotationPresent(Output.class)) {
        return (inputs, outputs) -> {
            final String name = parameter.getAnnotation(Output.class).value();
            return outputs.create(name);
        };
    }

    final Class<?> parameterType = parameter.getType();
    final String inputName =
            ofNullable(parameter.getAnnotation(Input.class)).map(Input::value).orElse(Branches.DEFAULT_BRANCH);
    return (inputs, outputs) -> doConvertInput(parameterType, inputs.read(inputName));
}
 
private Function<Object[], Locale> createLocaleExtractor(final Method method) {
    Parameter[] parameters = method.getParameters();
    for (int i = 0; i < method.getParameterCount(); i++) {
        Parameter p = parameters[i];
        if (p.isAnnotationPresent(Language.class)) {
            final int idx = i;
            if (String.class == p.getType()) {
                return params -> new Locale(ofNullable(params[idx]).map(String::valueOf).orElse("en"));
            }
            return params -> Locale.class.cast(params[idx]);
        }
    }
    return p -> localeSupplier.get();
}
 
源代码8 项目: fast-framework   文件: HandlerInvoker.java
/**
 * 请求处理器
 * 根据请求,获取请求参数
 * 调用Method,获取返回值
 * 调用View,返回响应
 *
 * @param request
 * @param response
 * @param handler
 */
public static void invokeHandler(HttpServletRequest request, HttpServletResponse response, HandlerBody handler) {
    List<Object> controllerMethodParamList = new ArrayList<>();
    Method controllerMethod = handler.getControllerMethod();

    // POST 请求
    if (request.getMethod().equals(RequestMethod.POST.toString())) {
        List<Class<?>> getParameterTypes = new ArrayList();
        Class<?> postParamType = null;

        for (Parameter p : controllerMethod.getParameters()) {
            if (p.isAnnotationPresent(PostParam.class)) {
                postParamType = p.getType();
            } else {
                getParameterTypes.add(p.getType());
            }
        }
        controllerMethodParamList = WebUtil.getRequestParamMap(request, getParameterTypes.toArray(new Class<?>[0]));
        Object postParamObject = WebUtil.getRequestBody(request, postParamType);
        controllerMethodParamList.add(0, postParamObject);

    }
    // GET 请求
    else if (request.getMethod().equals(RequestMethod.GET.toString())) {
        // 从 Request 获取参数 - Controller.Method 的 ParamList
        controllerMethodParamList = WebUtil.getRequestParamMap(request, controllerMethod.getParameterTypes());
    }

    // ReflectUtil 获取 Controller.Method 的返回值
    Object controllerMethodResult = ReflectUtil.invokeControllerMethod(handler.getControllerClass(),
        handler.getControllerMethod(), controllerMethodParamList);

    // View 处理
    ViewResolver.resolveView(request, response, controllerMethodResult, handler);
}
 
private static Iterable<JobKeyGetter> annotatedParameterGetters(Method method) {
  for (Method candidateMethod : getCandidateMethods(method)) {
    Parameter[] parameters = candidateMethod.getParameters();
    ImmutableList.Builder<JobKeyGetter> jobKeyGetters = ImmutableList.builder();
    for (int i = 0; i < parameters.length; i++) {
      Parameter param = parameters[i];
      if (param.isAnnotationPresent(AuthorizingParam.class)) {
        Class<?> parameterType = param.getType();
        @SuppressWarnings("unchecked")
        Optional<Function<Object, Optional<JobKey>>> jobKeyGetter =
            Optional.ofNullable(
                (Function<Object, Optional<JobKey>>) FIELD_GETTERS_BY_TYPE.get(parameterType));
        if (!jobKeyGetter.isPresent()) {
          throw new UnsupportedOperationException(
              "No "
                  + JobKey.class.getName()
                  + " field getter was supplied for "
                  + parameterType.getName());
        }

        jobKeyGetters.add(new JobKeyGetter(i, jobKeyGetter.get()));
      }
    }

    ImmutableList<JobKeyGetter> getters = jobKeyGetters.build();
    if (!Iterables.isEmpty(getters)) {
      return getters;
    }
  }

  throw new UnsupportedOperationException(
      "No parameter annotated with "
          + AuthorizingParam.class.getName()
          + " found on method "
          + method.getName()
          + " of "
          + method.getDeclaringClass().getName()
          + " or any of its superclasses.");
}
 
源代码10 项目: raistlic-lib-commons-core   文件: Methods.java
@Override
public boolean test(Method method) {

  if (method == null) {
    return false;
  }
  for (Parameter parameter : method.getParameters()) {
    if (!parameter.isAnnotationPresent(annotationType)) {
      return false;
    }
  }
  return true;
}
 
源代码11 项目: graphql-spqr   文件: AnnotatedArgumentBuilder.java
protected OperationArgument buildResolverArgument(Parameter parameter, AnnotatedType parameterType, ArgumentBuilderParams builderParams) {
    return new OperationArgument(
            parameterType,
            getArgumentName(parameter, parameterType, builderParams),
            getArgumentDescription(parameter, parameterType, builderParams.getEnvironment().messageBundle),
            defaultValue(parameter, parameterType, builderParams.getEnvironment()),
            parameter,
            parameter.isAnnotationPresent(GraphQLContext.class),
            builderParams.getInclusionStrategy().includeArgumentForMapping(parameter, parameterType, builderParams.getDeclaringType())
    );
}
 
源代码12 项目: oxygen   文件: CookieParamBinder.java
@Override
public boolean supported(Parameter parameter) {
  return parameter.isAnnotationPresent(CookieParam.class);
}
 
源代码13 项目: oxygen   文件: BasicParamBinder.java
@Override
public boolean supported(Parameter parameter) {
  return parameter.isAnnotationPresent(Param.class);
}
 
源代码14 项目: onetwo   文件: ApiClientMethod.java
public ApiClientMethodParameter(Method method, Parameter parameter, int parameterIndex) {
	super(method, parameter, parameterIndex);
	this.injectProperties = parameter.isAnnotationPresent(InjectProperties.class);
}
 
源代码15 项目: concursus   文件: ParameterArgs.java
private static String getParameterName(Parameter parameter) {
    return parameter.isAnnotationPresent(Name.class)
            ? parameter.getAnnotation(Name.class).value()
            : parameter.getName();
}
 
源代码16 项目: component-runtime   文件: ProcessorFlowsFactory.java
private boolean isInput(final Parameter p) {
    return p.isAnnotationPresent(Input.class) || !p.isAnnotationPresent(Output.class);
}
 
源代码17 项目: Wizardry   文件: ModuleOverrideHandler.java
/**
 * Returns a list of override methods from a given type, implementing them.
 *
 * @param clazz      the type.
 * @param hasContext if <code>true</code> then the method may contain context parameters.
 * @return a collection, mapping override names to their according methods.
 * @throws ModuleInitException if a method exists having invalid argument types or if some issues with reflection occurred.
 */
static HashMap<String, OverrideMethod> getOverrideMethodsFromClass(Class<?> clazz, boolean hasContext) throws ModuleInitException {
	HashMap<String, OverrideMethod> overridableMethods = new HashMap<>();
	// Determine overriden methods via reflection
	// FIXME: Separation of concerns: Overridable methods are not part of factory. Move them or rename factory class appropriately.
	for (Method method : clazz.getMethods()) {
		ModuleOverride ovrd = method.getDeclaredAnnotation(ModuleOverride.class);
		if (ovrd == null)
			continue;

		if (overridableMethods.containsKey(ovrd.value()))
			throw new ModuleInitException("Multiple methods exist in class '" + clazz + "' with same override name '" + ovrd.value() + "'.");

		try {
			method.setAccessible(true);
		} catch (SecurityException e) {
			throw new ModuleInitException("Failed to aquire reflection access to method '" + method.toString() + "', annotated by @ModuleOverride.", e);
		}

		// Search for context parameters
		int idxContextParamRing = -1;
		int idxContextParamSuper = -2;
		Parameter[] params = method.getParameters();
		for (int i = 0; i < params.length; i++) {
			Parameter param = params[i];
			if (param.isAnnotationPresent(ContextRing.class)) {
				if (idxContextParamRing >= 0)
					throw new ModuleInitException("Method '" + method.toString() + "' has invalid @ContextRing annotated parameter. It is not allowed on multiple parameters.");
				idxContextParamRing = i;
			}
			if (param.isAnnotationPresent(ContextSuper.class)) {
				if (idxContextParamSuper >= 0)
					throw new ModuleInitException("Method '" + method.toString() + "' has invalid @ContextSuper annotated parameter. It is not allowed on multiple parameters.");
				idxContextParamSuper = i;
			}
		}

		if (!hasContext) {
			if (idxContextParamRing >= 0 || idxContextParamSuper >= 0)
				throw new ModuleInitException("Context parameters are not allowed.");
		}

		if (idxContextParamRing == idxContextParamSuper)
			throw new ModuleInitException("Method '" + method.toString() + "' has a parameter which is annotated with multiple roles.");

		OverrideMethod ovrdMethod = new OverrideMethod(method, idxContextParamRing, idxContextParamSuper);
		overridableMethods.put(ovrd.value(), ovrdMethod);
	}

	return overridableMethods;
}
 
源代码18 项目: graphql-spqr   文件: DirectiveValueDeserializer.java
@Override
public boolean supports(AnnotatedType type, Parameter parameter) {
    return parameter != null && parameter.isAnnotationPresent(GraphQLDirective.class);
}
 
源代码19 项目: graphql-spqr   文件: ContextInjector.java
@Override
public boolean supports(AnnotatedType type, Parameter parameter) {
    return parameter != null && parameter.isAnnotationPresent(GraphQLContext.class);
}
 
源代码20 项目: Wizardry   文件: ModuleOverrideHandler.java
/**
 * Returns whether a parameter is a special one, taking values from the given caller context.
 *
 * @param param the parameter.
 * @return <code>true</code> iff yes.
 */
private static boolean isExtraParameter(Parameter param) {
	return param.isAnnotationPresent(ContextRing.class) ||
			param.isAnnotationPresent(ContextSuper.class);
}