No, it won't.
This
ClassInfo classInfo = (ClassInfo)
configuration.getTypeInfo(JBossEnterpriseBeansMetaData.class);
System.out.println("isCollection: " + classInfo.isCollection());
System.out.println("type args: " +
classInfo.getActualTypeArguments());
System.out.println("superclass args: " +
Arrays.asList(classInfo.getGenericSuperclass().getActualTypeArguments()));
results in
isCollection: true
type args: null
superclass args:
[ReflectClassInfoImpl(a)f38798{name=org.jboss.ejb.metadata.spec.EnterpriseBeanMetaData},
ReflectClassInfoImpl(a)4b222f{name=org.jboss.ejb.metadata.jboss.JBossEnterpriseBeanMetaData},
ReflectClassInfoImpl(a)b169f8{name=org.jboss.ejb.metadata.spec.EnterpriseBeansMetaData}]
Ales Justin wrote:
This is not just Collection specific.
Doing this (TypeInfo[] types = typeInfo.getActualTypeArguments();) on
JBossEnterpriseBeansMetaData would return you those 3 types:
(pseudo code ;-)
types[] = {EnterpriseBeanMetaData, JBossEnterpriseBeanMetaData,
EnterpriseBeansMetaData};
Rgds, Ales
>>>
This approach assumes that the component type can be determined with
TypeInfo[] types = typeInfo.getActualTypeArguments();
if (types != null)
elementType = types[0];
This won't work for this class
https://svn.jboss.org/repos/common/jbossxb-builder/trunk/src/test/java/or...
for which its super class should be checked for type arguments and the
component type is the second argument.
I guess I'll need to specify the component type with an annotation. But
it would be nice to have something like Class.getComponentType() to work
for generic collections too.
Alexey
_______________________________________________
jboss-development mailing list
jboss-development(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-development