]> source.dussan.org Git - aspectj.git/commitdiff
246125: promoted generic sig parsing code to util
authoraclement <aclement>
Mon, 20 Oct 2008 18:31:36 +0000 (18:31 +0000)
committeraclement <aclement>
Mon, 20 Oct 2008 18:31:36 +0000 (18:31 +0000)
weaver5/java5-testsrc/org/aspectj/weaver/bcel/BcelGenericSignatureToTypeXTestCase.java

index f849352d7ea50860bb7077f4ae05f014c7489c11..58f7748406fc77d60767440ef177f1adb8fd66bb 100644 (file)
@@ -14,58 +14,55 @@ package org.aspectj.weaver.bcel;
 import junit.framework.TestCase;
 
 import org.aspectj.apache.bcel.Repository;
-import org.aspectj.apache.bcel.classfile.GenericSignatureParser;
 import org.aspectj.apache.bcel.classfile.JavaClass;
 import org.aspectj.apache.bcel.classfile.Signature;
+import org.aspectj.util.GenericSignature;
+import org.aspectj.util.GenericSignatureParser;
+import org.aspectj.util.GenericSignature.ClassSignature;
 import org.aspectj.weaver.UnresolvedType;
 
 /**
  * @author colyer
- *
+ * 
  */
 public class BcelGenericSignatureToTypeXTestCase extends TestCase {
 
+       public final GenericSignature.ClassSignature getGenericClassTypeSignature(JavaClass jClass) {
+               Signature sig = jClass.getSignatureAttribute();
+               if (sig != null) {
+                       GenericSignatureParser parser = new GenericSignatureParser();
+                       ClassSignature classSig = parser.parseAsClassSignature(sig.getSignature());
+                       return classSig;
+               }
+               return null;
+       }
+
        public void testEnumFromHell() throws Exception {
                BcelWorld world = new BcelWorld();
                JavaClass javaLangEnum = Repository.lookupClass("java/lang/Enum");
-               Signature.ClassSignature cSig = javaLangEnum.getGenericClassTypeSignature();
-               UnresolvedType superclass = 
-                       BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(
-                                       cSig.superclassSignature,
-                                       cSig.formalTypeParameters,
-                                       world
-                                       );
-               assertEquals("Ljava/lang/Object;",superclass.getSignature());
-               assertEquals("2 superinterfaces",2,cSig.superInterfaceSignatures.length);
-               UnresolvedType comparable = 
-                       BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(
-                                       cSig.superInterfaceSignatures[0],
-                                       cSig.formalTypeParameters,
-                                       world
-                                       );              
-               assertEquals("Pjava/lang/Comparable<TE;>;",comparable.getSignature());
-               UnresolvedType serializable = 
-                       BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(
-                                       cSig.superInterfaceSignatures[1],
-                                       cSig.formalTypeParameters,
-                                       world
-                                       );
-               assertEquals("Ljava/io/Serializable;",serializable.getSignature());
+               GenericSignature.ClassSignature cSig = getGenericClassTypeSignature(javaLangEnum);
+               UnresolvedType superclass = BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(cSig.superclassSignature,
+                               cSig.formalTypeParameters, world);
+               assertEquals("Ljava/lang/Object;", superclass.getSignature());
+               assertEquals("2 superinterfaces", 2, cSig.superInterfaceSignatures.length);
+               UnresolvedType comparable = BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(cSig.superInterfaceSignatures[0],
+                               cSig.formalTypeParameters, world);
+               assertEquals("Pjava/lang/Comparable<TE;>;", comparable.getSignature());
+               UnresolvedType serializable = BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(
+                               cSig.superInterfaceSignatures[1], cSig.formalTypeParameters, world);
+               assertEquals("Ljava/io/Serializable;", serializable.getSignature());
        }
-       
+
        public void testColonColon() throws Exception {
                BcelWorld world = new BcelWorld();
-               Signature.ClassSignature cSig = new GenericSignatureParser().parseAsClassSignature("<T::Ljava/io/Serializable;>Ljava/lang/Object;Ljava/lang/Comparable<TT;>;");
-               UnresolvedType resolved = BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(
-                               cSig.superclassSignature,
-                               cSig.formalTypeParameters,
+               GenericSignature.ClassSignature cSig = new GenericSignatureParser()
+                               .parseAsClassSignature("<T::Ljava/io/Serializable;>Ljava/lang/Object;Ljava/lang/Comparable<TT;>;");
+               UnresolvedType resolved = BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(cSig.superclassSignature,
+                               cSig.formalTypeParameters, world);
+               assertEquals("Ljava/lang/Object;", resolved.getSignature());
+               BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(cSig.superInterfaceSignatures[0], cSig.formalTypeParameters,
                                world);
-               assertEquals("Ljava/lang/Object;",resolved.getSignature());
-                       BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(
-                               cSig.superInterfaceSignatures[0],
-                               cSig.formalTypeParameters,
-                               world);
-               
+
        }
-       
+
 }