From 315fa045aa378b43c36635b4e2edc435ab324737 Mon Sep 17 00:00:00 2001 From: aclement Date: Mon, 20 Oct 2008 18:31:36 +0000 Subject: [PATCH] 246125: promoted generic sig parsing code to util --- .../BcelGenericSignatureToTypeXTestCase.java | 71 +++++++++---------- 1 file changed, 34 insertions(+), 37 deletions(-) diff --git a/weaver5/java5-testsrc/org/aspectj/weaver/bcel/BcelGenericSignatureToTypeXTestCase.java b/weaver5/java5-testsrc/org/aspectj/weaver/bcel/BcelGenericSignatureToTypeXTestCase.java index f849352d7..58f774840 100644 --- a/weaver5/java5-testsrc/org/aspectj/weaver/bcel/BcelGenericSignatureToTypeXTestCase.java +++ b/weaver5/java5-testsrc/org/aspectj/weaver/bcel/BcelGenericSignatureToTypeXTestCase.java @@ -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;",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;", 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("Ljava/lang/Object;Ljava/lang/Comparable;"); - UnresolvedType resolved = BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX( - cSig.superclassSignature, - cSig.formalTypeParameters, + GenericSignature.ClassSignature cSig = new GenericSignatureParser() + .parseAsClassSignature("Ljava/lang/Object;Ljava/lang/Comparable;"); + 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); - + } - + } -- 2.39.5