List of usage examples for java.lang.reflect ParameterizedType getActualTypeArguments
Type[] getActualTypeArguments();
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; } }