[jboss-cvs] JBossAS SVN: r103894 - in projects/jboss-reflect/trunk/src: test/java/org/jboss/test/classinfo/test and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Apr 13 06:12:08 EDT 2010
Author: kabir.khan at jboss.com
Date: 2010-04-13 06:12:07 -0400 (Tue, 13 Apr 2010)
New Revision: 103894
Modified:
projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistHelper.java
projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/ClassInfoGenericMembersTest.java
Log:
[JBREFLECT-5] mixed primitive arrays and generics
Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistHelper.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistHelper.java 2010-04-13 10:02:49 UTC (rev 103893)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistHelper.java 2010-04-13 10:12:07 UTC (rev 103894)
@@ -33,6 +33,7 @@
import javassist.bytecode.BadBytecode;
import javassist.bytecode.SignatureAttribute;
import javassist.bytecode.SignatureAttribute.ArrayType;
+import javassist.bytecode.SignatureAttribute.BaseType;
import javassist.bytecode.SignatureAttribute.ClassSignature;
import javassist.bytecode.SignatureAttribute.ClassType;
import javassist.bytecode.SignatureAttribute.MethodSignature;
@@ -172,7 +173,11 @@
{
ArrayType array = (ArrayType)type;
- appendTypeGenericInfo((ObjectType)array.getComponentType(), spy, sb, doneVars);
+ if (array.getComponentType() instanceof BaseType)
+ sb.append(array.getComponentType());
+ else
+ appendTypeGenericInfo((ObjectType)array.getComponentType(), spy, sb, doneVars);
+
for (int i = 0 ; i < array.getDimension() ; i++)
sb.append("[]");
}
Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java 2010-04-13 10:02:49 UTC (rev 103893)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java 2010-04-13 10:12:07 UTC (rev 103894)
@@ -30,6 +30,7 @@
import java.lang.reflect.WildcardType;
import java.util.Map;
+import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtField;
import javassist.CtMember;
@@ -967,17 +968,31 @@
*/
private CtClass getCtClass(TypeInfo typeInfo, boolean error)
{
+ if (typeInfo instanceof PrimitiveInfo)
+ return getPrimitiveCtClass(typeInfo.getName());
if (typeInfo instanceof JavassistTypeInfo)
return ((JavassistTypeInfo)typeInfo).getCtClass();
- else if (typeInfo instanceof DelegateClassInfo)
+ if (typeInfo instanceof DelegateClassInfo)
return getCtClass(((DelegateClassInfo) typeInfo).getDelegate(), error);
if (error)
- throw new IllegalArgumentException(typeInfo + " is not a JavassistType info or a JavassistParameterizedType");
+ throw new IllegalArgumentException(typeInfo + " is not a JavassistType info, a PrimitiveTypeInfo or a JavassistParameterizedType");
return null;
}
+ private CtClass getPrimitiveCtClass(String name)
+ {
+ try
+ {
+ return ClassPool.getDefault().get(name);
+ }
+ catch(NotFoundException e)
+ {
+ throw new IllegalStateException("Could not find primitive called " + name, e);
+ }
+ }
+
/**
* Get the type info for a reflect TypeVariable
*
Modified: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/ClassInfoGenericMembersTest.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/ClassInfoGenericMembersTest.java 2010-04-13 10:02:49 UTC (rev 103893)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/classinfo/test/ClassInfoGenericMembersTest.java 2010-04-13 10:12:07 UTC (rev 103894)
@@ -242,11 +242,16 @@
return null;
}
+ public Collection<String> mixGenericsAndPrimitiveArray(Collection<String> collA, long[] l)
+ {
+ return null;
+ }
+
public <E extends Class<?>, K> Collection<Map<E, Map<Map<?, K>, ? super String>>>[][] complexGenerics(Collection<Map<E, Map<Map<?, K>, ? super String>>>[][] collA, Collection<Long> collB)
{
return null;
}
-
+
public void testNotGenericMethod() throws Throwable
{
testMethod(false, "notGeneric");
@@ -312,6 +317,11 @@
testMethod(true, "mixGenericsAndPrimitives");
}
+ public void testMixGenericsAndPrimitiveArrayMethod() throws Throwable
+ {
+ testMethod(true, "mixGenericsAndPrimitiveArray");
+ }
+
public void testComplexGenericsMethod() throws Throwable
{
testMethod(true, "complexGenerics");
More information about the jboss-cvs-commits
mailing list