org.springframework.core.MethodParameter#getMethod ( )源码实例Demo

下面列出了org.springframework.core.MethodParameter#getMethod ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Override
public void handleReturnValue(Object returnValue, MethodParameter returnType,
		ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {

	if (returnValue == null) {
		return;
	}
	else if (returnValue instanceof View){
		View view = (View) returnValue;
		mavContainer.setView(view);
		if (view instanceof SmartView) {
			if (((SmartView) view).isRedirectView()) {
				mavContainer.setRedirectModelScenario(true);
			}
		}
	}
	else {
		// should not happen
		throw new UnsupportedOperationException("Unexpected return type: " +
				returnType.getParameterType().getName() + " in method: " + returnType.getMethod());
	}
}
 
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public void handleReturnValue(Object returnValue, MethodParameter returnType,
		ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {

	if (returnValue == null) {
		return;
	}
	else if (returnValue instanceof Map){
		mavContainer.addAllAttributes((Map) returnValue);
	}
	else {
		// should not happen
		throw new UnsupportedOperationException("Unexpected return type: " +
				returnType.getParameterType().getName() + " in method: " + returnType.getMethod());
	}
}
 
源代码3 项目: lams   文件: HttpEntityMethodProcessor.java
private Type getHttpEntityType(MethodParameter parameter) {
	Assert.isAssignable(HttpEntity.class, parameter.getParameterType());
	Type parameterType = parameter.getGenericParameterType();
	if (parameterType instanceof ParameterizedType) {
		ParameterizedType type = (ParameterizedType) parameterType;
		if (type.getActualTypeArguments().length != 1) {
			throw new IllegalArgumentException("Expected single generic parameter on '" +
					parameter.getParameterName() + "' in method " + parameter.getMethod());
		}
		return type.getActualTypeArguments()[0];
	}
	else if (parameterType instanceof Class) {
		return Object.class;
	}
	else {
		return null;
	}
}
 
@Override
public void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType,
		ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {

	if (returnValue instanceof View) {
		View view = (View) returnValue;
		mavContainer.setView(view);
		if (view instanceof SmartView && ((SmartView) view).isRedirectView()) {
			mavContainer.setRedirectModelScenario(true);
		}
	}
	else if (returnValue != null) {
		// should not happen
		throw new UnsupportedOperationException("Unexpected return type: " +
				returnType.getParameterType().getName() + " in method: " + returnType.getMethod());
	}
}
 
源代码5 项目: httpdoc   文件: SpringMVCTranslator.java
/**
 * 获取多请求体的该参数部分的绑定名称, 缺省情况下采用参数变量名, 如果有@RequestPart 和 @RequestParam 则 @RequestParam 要优先于 @RequestPart
 *
 * @param parameter 参数
 * @return 多请求体情况下的该参数部分的绑定名称
 */
protected String getPartName(MethodParameter parameter) {
    Method method = parameter.getMethod();
    int index = parameter.getParameterIndex();
    String[] names = DISCOVERER.getParameterNames(method);
    String bindName = names[index];

    RequestPart part = parameter.getParameterAnnotation(RequestPart.class);
    String partValue = part != null ? part.value() : EMPTY;
    String partName = part != null ? part.name() : EMPTY;
    bindName = partValue.isEmpty() ? partName.isEmpty() ? bindName : partName : partValue;

    RequestParam param = parameter.getParameterAnnotation(RequestParam.class);
    String paramValue = param != null ? param.value() : EMPTY;
    String paramName = param != null ? param.name() : EMPTY;
    bindName = paramValue.isEmpty() ? paramName.isEmpty() ? bindName : paramName : paramValue;

    return bindName;
}
 
/**
 * Determine whether the provided bean definition is an autowire candidate.
 * <p>To be considered a candidate the bean's <em>autowire-candidate</em>
 * attribute must not have been set to 'false'. Also, if an annotation on
 * the field or parameter to be autowired is recognized by this bean factory
 * as a <em>qualifier</em>, the bean must 'match' against the annotation as
 * well as any attributes it may contain. The bean definition must contain
 * the same qualifier or match by meta attributes. A "value" attribute will
 * fallback to match against the bean name or an alias if a qualifier or
 * attribute does not match.
 * @see Qualifier
 */
@Override
public boolean isAutowireCandidate(BeanDefinitionHolder bdHolder, DependencyDescriptor descriptor) {
	boolean match = super.isAutowireCandidate(bdHolder, descriptor);
	if (match && descriptor != null) {
		match = checkQualifiers(bdHolder, descriptor.getAnnotations());
		if (match) {
			MethodParameter methodParam = descriptor.getMethodParameter();
			if (methodParam != null) {
				Method method = methodParam.getMethod();
				if (method == null || void.class == method.getReturnType()) {
					match = checkQualifiers(bdHolder, methodParam.getMethodAnnotations());
				}
			}
		}
	}
	return match;
}
 
源代码7 项目: lams   文件: ViewNameMethodReturnValueHandler.java
@Override
public void handleReturnValue(Object returnValue, MethodParameter returnType,
		ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {

	if (returnValue instanceof CharSequence) {
		String viewName = returnValue.toString();
		mavContainer.setViewName(viewName);
		if (isRedirectViewName(viewName)) {
			mavContainer.setRedirectModelScenario(true);
		}
	}
	else if (returnValue != null){
		// should not happen
		throw new UnsupportedOperationException("Unexpected return type: " +
				returnType.getParameterType().getName() + " in method: " + returnType.getMethod());
	}
}
 
@Override
public void handleReturnValue(Object returnValue, MethodParameter returnType, Message<?> message) throws Exception {
	if (returnValue == null) {
		return;
	}

	MessageHeaders headers = message.getHeaders();
	String destination = SimpMessageHeaderAccessor.getDestination(headers);
	String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
	String subscriptionId = SimpMessageHeaderAccessor.getSubscriptionId(headers);

	if (subscriptionId == null) {
		throw new IllegalStateException(
				"No subscriptionId in " + message + " returned by: " + returnType.getMethod());
	}

	if (logger.isDebugEnabled()) {
		logger.debug("Reply to @SubscribeMapping: " + returnValue);
	}
	this.messagingTemplate.convertAndSend(
			destination, returnValue, createHeaders(sessionId, subscriptionId, returnType));
}
 
源代码9 项目: lams   文件: HttpEntityMethodProcessor.java
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
		NativeWebRequest webRequest, WebDataBinderFactory binderFactory)
		throws IOException, HttpMediaTypeNotSupportedException {

	ServletServerHttpRequest inputMessage = createInputMessage(webRequest);
	Type paramType = getHttpEntityType(parameter);
	if (paramType == null) {
		throw new IllegalArgumentException("HttpEntity parameter '" + parameter.getParameterName() +
				"' in method " + parameter.getMethod() + " is not parameterized");
	}

	Object body = readWithMessageConverters(webRequest, parameter, paramType);
	if (RequestEntity.class == parameter.getParameterType()) {
		return new RequestEntity<Object>(body, inputMessage.getHeaders(),
				inputMessage.getMethod(), inputMessage.getURI());
	}
	else {
		return new HttpEntity<Object>(body, inputMessage.getHeaders());
	}
}
 
@Override
public void handleReturnValue(Object returnValue, MethodParameter returnType,
		ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {

	if (returnValue == null) {
		return;
	}
	else if (returnValue instanceof Model) {
		mavContainer.addAllAttributes(((Model) returnValue).asMap());
	}
	else {
		// should not happen
		throw new UnsupportedOperationException("Unexpected return type: " +
				returnType.getParameterType().getName() + " in method: " + returnType.getMethod());
	}
}
 
/**
 * Determine whether the provided bean definition is an autowire candidate.
 * <p>To be considered a candidate the bean's <em>autowire-candidate</em>
 * attribute must not have been set to 'false'. Also, if an annotation on
 * the field or parameter to be autowired is recognized by this bean factory
 * as a <em>qualifier</em>, the bean must 'match' against the annotation as
 * well as any attributes it may contain. The bean definition must contain
 * the same qualifier or match by meta attributes. A "value" attribute will
 * fallback to match against the bean name or an alias if a qualifier or
 * attribute does not match.
 * @see Qualifier
 */
@Override
public boolean isAutowireCandidate(BeanDefinitionHolder bdHolder, DependencyDescriptor descriptor) {
	boolean match = super.isAutowireCandidate(bdHolder, descriptor);
	if (match && descriptor != null) {
		match = checkQualifiers(bdHolder, descriptor.getAnnotations());
		if (match) {
			MethodParameter methodParam = descriptor.getMethodParameter();
			if (methodParam != null) {
				Method method = methodParam.getMethod();
				if (method == null || void.class == method.getReturnType()) {
					match = checkQualifiers(bdHolder, methodParam.getMethodAnnotations());
				}
			}
		}
	}
	return match;
}
 
源代码12 项目: spring4-understanding   文件: ModelFactory.java
/**
 * Derive the model attribute name for the given return value using one of:
 * <ol>
 * 	<li>The method {@code ModelAttribute} annotation value
 * 	<li>The declared return type if it is more specific than {@code Object}
 * 	<li>The actual return value type
 * </ol>
 * @param returnValue the value returned from a method invocation
 * @param returnType the return type of the method
 * @return the model name, never {@code null} nor empty
 */
public static String getNameForReturnValue(Object returnValue, MethodParameter returnType) {
	ModelAttribute annotation = returnType.getMethodAnnotation(ModelAttribute.class);
	if (annotation != null && StringUtils.hasText(annotation.value())) {
		return annotation.value();
	}
	else {
		Method method = returnType.getMethod();
		Class<?> resolvedType = GenericTypeResolver.resolveReturnType(method, returnType.getContainingClass());
		return Conventions.getVariableNameForReturnType(method, resolvedType, returnValue);
	}
}
 
@Override
public void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType, Message<?> message)
		throws Exception {

	if (returnValue == null) {
		return;
	}

	MessageHeaders headers = message.getHeaders();
	String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
	String subscriptionId = SimpMessageHeaderAccessor.getSubscriptionId(headers);
	String destination = SimpMessageHeaderAccessor.getDestination(headers);

	if (subscriptionId == null) {
		throw new IllegalStateException("No simpSubscriptionId in " + message +
				" returned by: " + returnType.getMethod());
	}
	if (destination == null) {
		throw new IllegalStateException("No simpDestination in " + message +
				" returned by: " + returnType.getMethod());
	}

	if (logger.isDebugEnabled()) {
		logger.debug("Reply to @SubscribeMapping: " + returnValue);
	}
	MessageHeaders headersToSend = createHeaders(sessionId, subscriptionId, returnType);
	this.messagingTemplate.convertAndSend(destination, returnValue, headersToSend);
}
 
@Override
public void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType,
		ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {

	if (this.mavResolvers != null) {
		for (ModelAndViewResolver mavResolver : this.mavResolvers) {
			Class<?> handlerType = returnType.getContainingClass();
			Method method = returnType.getMethod();
			Assert.state(method != null, "No handler method");
			ExtendedModelMap model = (ExtendedModelMap) mavContainer.getModel();
			ModelAndView mav = mavResolver.resolveModelAndView(method, handlerType, returnValue, model, webRequest);
			if (mav != ModelAndViewResolver.UNRESOLVED) {
				mavContainer.addAllAttributes(mav.getModel());
				mavContainer.setViewName(mav.getViewName());
				if (!mav.isReference()) {
					mavContainer.setView(mav.getView());
				}
				return;
			}
		}
	}

	// No suitable ModelAndViewResolver...
	if (this.modelAttributeProcessor.supportsReturnType(returnType)) {
		this.modelAttributeProcessor.handleReturnValue(returnValue, returnType, mavContainer, webRequest);
	}
	else {
		throw new UnsupportedOperationException("Unexpected return type: " +
				returnType.getParameterType().getName() + " in method: " + returnType.getMethod());
	}
}
 
源代码15 项目: RuoYi   文件: LoginUserArgumentResolver.java
@Override
public boolean supportsParameter(MethodParameter methodParameter) {
    final Method method = methodParameter.getMethod();
    final Class<?> clazz = Objects.requireNonNull(methodParameter.getMethod()).getDeclaringClass();

    boolean isHasLoginAuthAnn = clazz.isAnnotationPresent(LoginAuth.class) || Objects.requireNonNull(method).isAnnotationPresent(LoginAuth.class);
    boolean isHasLoginUserParameter = methodParameter.getParameterType().isAssignableFrom(SysUser.class);

    return isHasLoginAuthAnn && isHasLoginUserParameter;
}
 
源代码16 项目: loc-framework   文件: LocResponseBodyAdvice.java
@Override
public boolean supports(MethodParameter methodParameter, Class aClass) {
  Method method = methodParameter.getMethod();
  if (method == null) {
    return false;
  }

  Class<?> clazz = method.getReturnType();
  return clazz != null && BaseResult.class.isAssignableFrom(clazz);

}
 
@Override
protected void handleMissingValue(String name, MethodParameter parameter) {
	throw new UnsupportedOperationException("@Value is never required: " + parameter.getMethod());
}
 
源代码18 项目: stategen   文件: ResponseBodyAdviceWrapper.java
@Override
public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> converterType) {
    final Method method = methodParameter.getMethod();
    return supportMethod(method);
}
 
@Override
protected void handleMissingValue(String name, MethodParameter parameter) throws ServletException {
	throw new UnsupportedOperationException("@Value is never required: " + parameter.getMethod());
}
 
@Override
protected void handleMissingValue(String name, MethodParameter parameter) throws ServletException {
	throw new UnsupportedOperationException("@Value is never required: " + parameter.getMethod());
}