Example usage for org.springframework.core MethodParameter getGenericParameterType

List of usage examples for org.springframework.core MethodParameter getGenericParameterType

Introduction

In this page you can find the example usage for org.springframework.core MethodParameter getGenericParameterType.

Prototype

public Type getGenericParameterType() 

Source Link

Document

Return the generic type of the method/constructor parameter.

Usage

From source file:capital.scalable.restdocs.payload.AbstractJacksonFieldSnippet.java

protected Type firstGenericType(MethodParameter param) {
    return ((ParameterizedType) param.getGenericParameterType()).getActualTypeArguments()[0];
}

From source file:com.kinglcc.spring.jms.core.Jackson2PayloadArgumentResolver.java

private Object convertJavaTypeFromMessage(Message<?> message, MethodParameter parameter) {
    Type targetType = parameter.getGenericParameterType();
    Class<?> contextClass = parameter.getContainingClass();
    Object payload = ((GenericMessageAdapterConverter) converter).fromMessage(message, targetType,
            contextClass);//from  w  ww .  java  2  s  . c om
    if (payload == null) {
        throw new MessageConversionException(message,
                "No converter found to convert to " + targetType + ", message=" + message);
    }
    return payload;
}

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:base.resolver.JsonModelResolver.java

protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest webRequest)
        throws Exception {
    String[] paramValues = webRequest.getParameterValues(name);
    Class<?> paramType = parameter.getParameterType();
    if (paramValues == null) {
        return null;

    }/*from  w  w w. jav  a  2s .c om*/

    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:cn.javass.spring.mvc.method.annotation.RequestJsonParamMethodArgumentResolver.java

@Override
protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest webRequest)
        throws Exception {
    String[] paramValues = webRequest.getParameterValues(name);
    Class<?> paramType = parameter.getParameterType();
    if (paramValues == null) {
        return null;

    }/*from   w  ww  .j a va2  s.com*/

    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: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 ww w .  jav a 2 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:fr.mby.utils.spring.beans.factory.BasicProxywiredManager.java

/**
 * Find Bean Type to inject (not the generic type like Collection or Set).
 * /*from   w w  w.  ja  v  a  2 s . co  m*/
 * @param descriptor
 * @param autowiredBeanNames
 * @return
 */
protected Class<?> getBeanType(final DependencyDescriptor descriptor, final Set<String> autowiredBeanNames) {
    final Class<?> result;

    Type fieldType = null;

    final Field field = descriptor.getField();
    if (field == null) {
        // Annotation on the method
        final MethodParameter methodParameter = descriptor.getMethodParameter();
        if (methodParameter != null) {
            fieldType = methodParameter.getGenericParameterType();
        }
    } else {
        fieldType = field.getGenericType();
    }

    if (fieldType != null) {
        final Class<?> type = descriptor.getDependencyType();
        if (Collection.class.isAssignableFrom(type)) {
            final ParameterizedType parameterizedType = (ParameterizedType) fieldType;
            result = (Class<?>) parameterizedType.getActualTypeArguments()[0];
        } else if (Map.class.isAssignableFrom(type)) {
            final ParameterizedType parameterizedType = (ParameterizedType) fieldType;
            result = (Class<?>) parameterizedType.getActualTypeArguments()[1];
        } else if (type.isArray()) {
            // We can't do anything
            throw new IllegalStateException("You cannot use Proxywired annotation on an Array !");
        } else {
            result = type;
        }
    } else {
        throw new IllegalStateException("Unable to find the Bean type !");
    }

    return result;
}

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;

    }// ww w  .  j ava  2s  .  co  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:com.sws.platform.mobile.common.json.RequestJsonParamMethodArgumentResolver.java

@Override
protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest webRequest)
        throws Exception {
    String[] paramValues = webRequest.getParameterValues(name);
    Class<?> paramType = parameter.getParameterType();
    if (paramValues == null) {
        return null;
    }// w ww .  ja v a2s  . co  m
    //?json
    String data = webRequest.getParameter(name);
    if (StringUtil.isNullOrEmptyOrWhiteSpace(data)) {
        return null;
    }

    //        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 JSONArray.parseArray(paramValues[0],
                (Class<?>) ((ParameterizedType) type).getActualTypeArguments()[0]);
    }

    return JSON.parseObject(paramValues[0], type, this.fastJsonConfig.getFeatures());
    //        }

    //        } catch (Exception e) {
    //            throw new JSONException("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:com.kingray.spring.mvc.method.annotation.RequestJsonParamMethodArgumentResolver.java

@Override
protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest webRequest)
        throws Exception {
    String[] paramValues = webRequest.getParameterValues(name);

    Class<?> paramType = parameter.getParameterType();
    if (paramValues == null) {
        return null;
    }/*from   www . j a  v a 2  s .  c om*/

    // ?
    //      for (int i = 0; i < paramValues.length; i++) {
    //         String paramValue = paramValues[i];
    //         String encodedParamValue = new String(paramValue.getBytes("ISO-8859-1"), encoding);
    //         paramValues[i] = encodedParamValue;
    //      }
    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");
}