Example usage for java.lang.reflect ParameterizedType getActualTypeArguments

List of usage examples for java.lang.reflect ParameterizedType getActualTypeArguments

Introduction

In this page you can find the example usage for java.lang.reflect ParameterizedType getActualTypeArguments.

Prototype

Type[] getActualTypeArguments();

Source Link

Document

Returns an array of Type objects representing the actual type arguments to this type.

Usage

From source file:org.mousepilots.es.maven.model.generator.model.attribute.GenericMethodInfo.java

/**
 * Resolves the generic {@code type}//  w  w  w.jav a  2s  .  c  o  m
 * @param typeVariable2Value
 * @param type
 * @return 
 */
private String getGenericTypeString(Type type) {
    if (type instanceof Class) {
        //(raw) class
        return ((Class) type).getCanonicalName();
    } else if (type instanceof ParameterizedType) {
        // e.g. Map<K,V>
        final ParameterizedType parameterizedType = (ParameterizedType) type;
        return getGenericTypeString(parameterizedType.getRawType()) + "<"
                + StringUtils.join(Arrays.asList(parameterizedType.getActualTypeArguments()),
                        (Type actualTypeArgument) -> getGenericTypeString(actualTypeArgument), ",")
                + ">";

    } else if (type instanceof TypeVariable) {
        //e.g. T
        final TypeVariable<?> typeVariable = (TypeVariable) type;
        final Type typeVariableValue = typeVariable2Value.get(typeVariable);
        if (typeVariableValue == null) {
            return typeVariable.getName();
        } else {
            return getGenericTypeString(typeVariableValue);
        }
    } else if (type instanceof GenericArrayType) {
        //e.g. T[]
        final GenericArrayType genericArrayType = (GenericArrayType) type;
        return getGenericTypeString(genericArrayType.getGenericComponentType()) + "[]";
    } else {
        throw new IllegalArgumentException("unsupported type " + type);
    }
}

From source file:nl.luminis.test.util.annotations.HierarchyDiscovery.java

private Type resolveParameterizedType(ParameterizedType beanType, ParameterizedType parameterizedType) {
    Type rawType = parameterizedType.getRawType();
    Type[] actualTypes = parameterizedType.getActualTypeArguments();

    Type resolvedRawType = resolveType(beanType, beanType, rawType);
    Type[] resolvedActualTypes = new Type[actualTypes.length];

    for (int i = 0; i < actualTypes.length; i++) {
        resolvedActualTypes[i] = resolveType(beanType, beanType, actualTypes[i]);
    }/*from  ww w.  j  a  va 2  s .co  m*/
    // reconstruct ParameterizedType by types resolved TypeVariable.
    return TypeUtils.parameterizeWithOwner(parameterizedType.getOwnerType(), resolvedRawType.getClass(),
            resolvedActualTypes);
}

From source file:com.khubla.cbean.serializer.impl.json.JSONListFieldSerializer.java

@Override
public String serialize(Object o, Field field) throws SerializerException {
    try {/*from  w w w .j ava 2  s .c om*/
        /*
         * get the parameterized type
         */
        final ParameterizedType parameterizedType = (ParameterizedType) field.getGenericType();
        final Class<?> containedType = (Class<?>) parameterizedType.getActualTypeArguments()[0];
        /*
         * get cBean
         */
        final CBean<Object> cBean = CBeanServer.getInstance().getCBean(containedType);
        /*
         * get the list
         */
        @SuppressWarnings("unchecked")
        final List<Object> list = (List<Object>) PropertyUtils.getProperty(o, field.getName());
        /*
         * iterate and save contained objects
         */
        final Property property = field.getAnnotation(Property.class);
        if (property.cascadeSave() == true) {
            for (int i = 0; i < list.size(); i++) {
                cBean.save(list.get(i));
            }
        }
        /*
         * iterate and grab the keys
         */
        final List<String> keys = new ArrayList<String>();
        for (int i = 0; i < list.size(); i++) {
            final String key = cBean.getId(list.get(i));
            keys.add(key);
        }
        final JSONArray jsonArray = new JSONArray(keys);
        return jsonArray.toString();
    } catch (final Exception e) {
        throw new SerializerException(e);
    }
}

From source file:org.kuali.rice.krad.uif.util.ObjectPropertyUtils.java

/**
 * Get the best known component type for a generic type.
 * /*from w  w  w .  j a  v a 2  s .c o  m*/
 * <p>
 * When the type is not parameterized or has no explicitly defined parameters, {@link Object} is
 * returned.
 * </p>
 * 
 * <p>
 * When the type has multiple parameters, the right-most parameter is considered the component
 * type. This facilitates identifying the value type of a Map.
 * </p>
 * 
 * @param type The generic collection or map type.
 * @return component or value type, resolved from the generic type
 */
public static Type getComponentType(Type type) {
    if (!(type instanceof ParameterizedType)) {
        return Object.class;
    }

    ParameterizedType parameterizedType = (ParameterizedType) type;
    Type[] params = parameterizedType.getActualTypeArguments();
    if (params.length == 0) {
        return Object.class;
    }

    Type valueType = params[params.length - 1];
    return valueType;
}

From source file:org.openmrs.module.webservices.rest.resource.BaseRestDataResource.java

/**
 * Gets a usable instance of the actual class of the generic type E defined by the implementing sub-class.
 * @return The class object for the entity.
 *///from   w  w w .  j a  v a2  s .  c  o m
@SuppressWarnings("unchecked")
public Class<E> getEntityClass() {
    if (entityClass == null) {
        ParameterizedType parameterizedType = (ParameterizedType) getClass().getGenericSuperclass();

        entityClass = (Class) parameterizedType.getActualTypeArguments()[0];
    }

    return entityClass;
}

From source file:org.livespark.formmodeler.renderer.backend.service.impl.Model2FormTransformerServiceImpl.java

protected Set<FieldSetting> getClassFieldSettings(Class clazz) {
    TreeSet<FieldSetting> settings = new TreeSet<FieldSetting>();
    for (Field field : clazz.getDeclaredFields()) {
        for (Annotation annotation : field.getAnnotations()) {
            if (annotation instanceof FieldDef) {
                FieldDef fieldDef = (FieldDef) annotation;
                Class fieldType = getFieldType(field, fieldDef);

                Class realType = fieldType;

                if (field.getGenericType() instanceof ParameterizedType) {
                    ParameterizedType parameterizedType = (ParameterizedType) field.getGenericType();
                    Type paramArg = parameterizedType.getActualTypeArguments()[0];
                    realType = (Class) paramArg;
                }// ww w.  j a v a  2s  .  co  m

                FieldSetting setting = new FieldSetting(
                        field.getName(), new DefaultFieldTypeInfo(realType.getName(),
                                fieldType.isAssignableFrom(List.class), fieldType.isEnum()),
                        realType, fieldDef, field.getAnnotations());

                settings.add(setting);
            }
        }
    }
    if (clazz.getSuperclass() != null) {
        settings.addAll(getClassFieldSettings(clazz.getSuperclass()));
    }
    return settings;
}

From source file:com.netprogs.minecraft.plugins.social.command.SocialNetworkCommand.java

@SuppressWarnings("unchecked")
public T getCommandSettings() {

    // get the sub-class type
    ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
    Class<T> classObject = (Class<T>) genericSuperclass.getActualTypeArguments()[0];

    // use that to obtain the settings for this instance
    SettingsConfig settingsConfig = SocialNetworkPlugin.getSettings();
    return (T) settingsConfig.getSocialNetworkSettings(classObject);
}

From source file:org.apache.sling.models.impl.injectors.OSGiServiceInjector.java

private Object getValue(Object adaptable, Type type, String filterString,
        DisposalCallbackRegistry callbackRegistry) {
    if (type instanceof Class) {
        Class<?> injectedClass = (Class<?>) type;
        if (injectedClass.isArray()) {
            Object[] services = getServices(adaptable, injectedClass.getComponentType(), filterString,
                    callbackRegistry);// w  w  w .jav  a  2 s .  c o  m
            if (services == null) {
                return null;
            }
            Object arr = Array.newInstance(injectedClass.getComponentType(), services.length);
            for (int i = 0; i < services.length; i++) {
                Array.set(arr, i, services[i]);
            }
            return arr;
        } else {
            return getService(adaptable, injectedClass, filterString, callbackRegistry);
        }
    } else if (type instanceof ParameterizedType) {
        ParameterizedType ptype = (ParameterizedType) type;
        if (ptype.getActualTypeArguments().length != 1) {
            return null;
        }
        Class<?> collectionType = (Class<?>) ptype.getRawType();
        if (!(collectionType.equals(Collection.class) || collectionType.equals(List.class))) {
            return null;
        }

        Class<?> serviceType = (Class<?>) ptype.getActualTypeArguments()[0];
        Object[] services = getServices(adaptable, serviceType, filterString, callbackRegistry);
        if (services == null) {
            return null;
        }
        return Arrays.asList(services);
    } else {
        log.warn("Cannot handle type {}", type);
        return null;
    }
}

From source file:org.jnosql.artemis.reflection.Reflections.java

/**
 * returns the generic type of field.//from w  ww. j a  va 2  s. c  o m
 *
 * @param field the field
 * @return a generic type
 */
public Class<?> getGenericType(Field field) {
    ParameterizedType genericType = (ParameterizedType) field.getGenericType();
    return (Class<?>) genericType.getActualTypeArguments()[0];

}

From source file:com.sulacosoft.bitcoindconnector4j.BitcoindApiHandler.java

private Object deserializeResult(Method method, Object result) {
    if (result instanceof MorphDynaBean) {
        return JSONObject.toBean(JSONObject.fromObject(JSONSerializer.toJSON((MorphDynaBean) result)),
                method.getReturnType());
    } else if (result instanceof List) {
        List<?> incomingList = (List<?>) result;
        if (incomingList.size() == 0)
            return Collections.EMPTY_LIST;

        ParameterizedType type = (ParameterizedType) method.getGenericReturnType(); // method.getGenericType();
        Class<?> clazz = (Class<?>) type.getActualTypeArguments()[0];

        ArrayList<Object> outcomingList = new ArrayList<>();
        if (incomingList.get(0) instanceof MorphDynaBean) {
            for (Object entity : incomingList) {
                Object ent = JSONObject.toBean(JSONObject.fromObject(entity), clazz);
                outcomingList.add(ent);//from w  ww . j ava2 s. c o m
            }
        } else {
            outcomingList.addAll(incomingList);
        }
        return outcomingList;
    } else {
        return result;
    }
}