[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