List of usage examples for org.springframework.core MethodParameter getParameterAnnotation
@SuppressWarnings("unchecked") @Nullable public <A extends Annotation> A getParameterAnnotation(Class<A> annotationType)
From source file:net.kaczmarzyk.spring.data.jpa.web.SimpleSpecificationResolver.java
@Override public Specification<?> resolveArgument(MethodParameter param, ModelAndViewContainer mav, NativeWebRequest req, WebDataBinderFactory binderFactory) throws Exception { Spec def = param.getParameterAnnotation(Spec.class); return buildSpecification(req, def); }
From source file:ch.rasc.wampspring.method.PayloadArgumentResolver.java
@Override public Object resolveArgument(MethodParameter param, Message<?> message) throws Exception { Payload ann = param.getParameterAnnotation(Payload.class); if (ann != null && StringUtils.hasText(ann.value())) { throw new IllegalStateException("@Payload SpEL expressions not supported by this resolver"); }//w w w . j a v a2 s .com Object payload = message.getPayload(); if (isEmptyPayload(payload)) { if (ann == null || ann.required()) { String paramName = getParameterName(param); BindingResult bindingResult = new BeanPropertyBindingResult(payload, paramName); bindingResult.addError(new ObjectError(paramName, "@Payload param is required")); throw new MethodArgumentNotValidException(message, param, bindingResult); } return null; } Class<?> targetClass = param.getParameterType(); if (ClassUtils.isAssignable(targetClass, payload.getClass())) { validate(message, param, payload); return payload; } payload = this.methodParameterConverter.convert(param, message.getPayload()); if (payload == null) { throw new MessageConversionException(message, "No converter found to convert to " + targetClass + ", message=" + message); } validate(message, param, payload); return payload; }
From source file:cn.guoyukun.spring.jpa.web.bind.method.annotation.SearchableMethodArgumentResolver.java
private SearchableDefaults getSearchableDefaults(MethodParameter parameter) { //?//from w w w . j a va 2 s . c om SearchableDefaults searchDefaults = parameter.getParameterAnnotation(SearchableDefaults.class); //? if (searchDefaults == null) { searchDefaults = parameter.getMethodAnnotation(SearchableDefaults.class); } return searchDefaults; }
From source file:org.focusns.common.web.widget.mvc.method.WidgetMethodArgumentResolver.java
private Object getWidgetAttributeValue(MethodParameter parameter, NativeWebRequest webRequest) { Class<?> widgetClass = parameter.getMethod().getDeclaringClass(); WidgetAttribute widgetAttribute = parameter.getParameterAnnotation(WidgetAttribute.class); if (widgetAttribute != null) { String widgetAttributeName = getWidgetAttributeName(parameter, widgetAttribute); Object value = webRequest.getAttribute(widgetAttributeName, WebRequest.SCOPE_REQUEST); if (widgetAttribute.required()) { Assert.notNull(value,// w w w . j a va 2 s .co m String.format("%s attribute %s can not be null!", widgetClass, widgetAttributeName)); } return value; } // return null; }
From source file:com.gary.web.spring.method.annotation.RequestJsonParamMethodArgumentResolver.java
@Override protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest webRequest) throws Exception { RequestJsonParam annotation = parameter.getParameterAnnotation(RequestJsonParam.class); String[] paramValues = webRequest.getParameterValues(name); Class<?> paramType = parameter.getParameterType(); if (paramValues == null) { return null; }/*from www. j ava2s .c o m*/ try { if (paramValues.length == 1) { String text = paramValues[0]; Type type = parameter.getGenericParameterType(); if (MapWapper.class.isAssignableFrom(paramType)) { MapWapper<?, ?> jsonMap = (MapWapper<?, ?>) paramType.newInstance(); MapType mapType = (MapType) getJavaType(HashMap.class); if (type instanceof ParameterizedType) { mapType = (MapType) mapType .narrowKey((Class<?>) ((ParameterizedType) type).getActualTypeArguments()[0]); mapType = (MapType) mapType.narrowContentsBy( (Class<?>) ((ParameterizedType) type).getActualTypeArguments()[1]); } jsonMap.setInnerMap(mapper.<Map>readValue(text, mapType)); return jsonMap; } JavaType javaType = getJavaType(paramType); if (Collection.class.isAssignableFrom(paramType)) { javaType = javaType .narrowContentsBy((Class<?>) ((ParameterizedType) type).getActualTypeArguments()[0]); } return mapper.readValue(paramValues[0], javaType); } } catch (Exception e) { throw new JsonMappingException("Could not read request json parameter", e); } throw new UnsupportedOperationException("too many request json parameter '" + name + "' for method parameter type [" + paramType + "], only support one json parameter"); }
From source file:org.chtijbug.drools.platform.web.annotation.JsonPathArgumentResolver.java
@Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { String body = getRequestBody(webRequest); JSONArray jsonArray = JsonPath.read(body, parameter.getParameterAnnotation(JsonArg.class).value()); JavaType collectionType = TypeFactory.defaultInstance().constructType(parameter.getGenericParameterType()); return objectMapper.readValue(jsonArray.toJSONString(), collectionType); }
From source file:com.ufukuzun.myth.dialect.handler.AjaxRequestResponseBodyReturnValueHandler.java
@Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { AjaxRequestBody ajaxRequestBody = parameter.getParameterAnnotation(AjaxRequestBody.class); boolean performValidation = ajaxRequestBody.validate(); String targetName = ajaxRequestBody.targetName(); Assert.notNull(targetName);//from w w w . j a v a2 s . c o m Object argument = readWithMessageConverters(webRequest, parameter, parameter.getGenericParameterType()); if (argument != null && AjaxRequest.class.isInstance(argument) && !StringUtils.isEmpty(targetName)) { AjaxRequest<?> ajaxRequest = (AjaxRequest<?>) argument; mavContainer.addAttribute(targetName, ajaxRequest.getModel()); if (performValidation) { ajaxRequest .setModelValid(myth.validate(mavContainer.getModel(), ajaxRequest.getModel(), targetName)); } } return argument; }
From source file:org.opentides.web.processor.FormBindMethodProcessor.java
/** * Resolve the argument from the model or if not found instantiate it with * its default. The model attribute is then populated with request values * via data binding and validated. If no validation error, the model * is retrieved from database and merged with the submitted form. * //from w w w . j a v a 2 s. c o m * @throws BindException if data binding and validation result in an error * @throws Exception if WebDataBinder initialization fails. */ @SuppressWarnings("unchecked") public final Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest nativeRequest, WebDataBinderFactory binderFactory) throws Exception { FormBind annot = parameter.getParameterAnnotation(FormBind.class); Class<?> clazz = parameter.getDeclaringClass(); String name = getName(annot, parameter); HttpServletRequest request = (HttpServletRequest) nativeRequest.getNativeRequest(); Method addForm = CacheUtil.getNewFormBindMethod(clazz); Object controller = beanFactory.getBean(parameter.getContainingClass()); Object target = (addForm != null) ? addForm.invoke(controller, request) : BeanUtils.instantiateClass(parameter.getParameterType()); MutablePropertyValues mpvs = new MutablePropertyValues(nativeRequest.getParameterMap()); WebDataBinder binder = binderFactory.createBinder(nativeRequest, target, name); if (binder.getTarget() != null) { binder.bind(mpvs); if (binder.getValidator() != null) binder.validate(); if (binder.getBindingResult().hasErrors()) { throw new BindException(binder.getBindingResult()); } String method = request.getMethod().toLowerCase(); // id should be the last segment of the uri String uri = request.getRequestURI(); String sid = uri.substring(uri.lastIndexOf("/") + 1); Long id = StringUtil.convertToLong(sid, 0); // if target extends BaseEntity and for update, link target to database record if (("put".equals(method) || "post".equals(method)) && id > 0 && BaseEntity.class.isAssignableFrom(parameter.getParameterType())) { // now retrieve record from database for updating Method updateForm = CacheUtil.getUpdateFormBindMethod(clazz); BaseEntity record = null; if (updateForm == null) { // no annotation, invoke from service Method getService = controller.getClass().getMethod("getService"); if (getService == null) { String message = "Cannot find method with @FormBind with update mode. " + "Also, unable to find service associated to controller." + "Please specify one that retrieves record from database."; throw new InvalidImplementationException(message); } BaseCrudService<? extends BaseEntity> service = (BaseCrudService<? extends BaseEntity>) getService .invoke(controller); record = (BaseEntity) service.load(sid); } else { // with annotation, invoke annotation record = (BaseEntity) updateForm.invoke(controller, sid, request); } if (record != null) { WebDataBinder updateBinder = binderFactory.createBinder(nativeRequest, record, name); updateBinder.bind(mpvs); mavContainer.addAllAttributes(updateBinder.getBindingResult().getModel()); return updateBinder.getTarget(); } else { String message = "Unable to find " + parameter.getParameterType().getSimpleName() + " with id=" + sid + " for update."; throw new DataAccessException(message); } } else if ("post".equals(method)) { mavContainer.addAllAttributes(binder.getBindingResult().getModel()); return binder.getTarget(); } else { throw new InvalidImplementationException( "@FormBind argument annotation can only be used on POST or PUT methods."); } } mavContainer.addAllAttributes(binder.getBindingResult().getModel()); return binder.getTarget(); }
From source file:cn.guoyukun.spring.jpa.web.bind.method.annotation.PageableMethodArgumentResolver.java
private String getSortPrefix(MethodParameter parameter) { Qualifier qualifier = parameter.getParameterAnnotation(Qualifier.class); if (qualifier != null) { return new StringBuilder(qualifier.value()).append("_").append(sortPrefix).toString(); }//from w ww. ja v a2 s.com return sortPrefix; }
From source file:cn.guoyukun.spring.jpa.web.bind.method.annotation.PageableMethodArgumentResolver.java
/** * Resolves the prefix to use to bind properties from. Will prepend a possible {@link Qualifier} if available or * return the configured prefix otherwise. * * @param parameter//w w w . j a v a 2 s . c o m * @return */ private String getPagePrefix(MethodParameter parameter) { Qualifier qualifier = parameter.getParameterAnnotation(Qualifier.class); if (qualifier != null) { return new StringBuilder(((Qualifier) qualifier).value()).append("_").append(pagePrefix).toString(); } return pagePrefix; }