summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bcel-builder/testdata/ErasureTestData.java7
-rw-r--r--bcel-builder/testdata/testcode.jarbin16370 -> 16210 bytes
-rw-r--r--bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/AllTests.java1
-rw-r--r--bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/GenericsErasureTesting.java50
4 files changed, 58 insertions, 0 deletions
diff --git a/bcel-builder/testdata/ErasureTestData.java b/bcel-builder/testdata/ErasureTestData.java
new file mode 100644
index 000000000..493f59a14
--- /dev/null
+++ b/bcel-builder/testdata/ErasureTestData.java
@@ -0,0 +1,7 @@
+import java.util.*;
+
+public class ErasureTestData {
+
+ public Vector<String> getData() { return null; }
+
+}
diff --git a/bcel-builder/testdata/testcode.jar b/bcel-builder/testdata/testcode.jar
index d954f728a..884ed866f 100644
--- a/bcel-builder/testdata/testcode.jar
+++ b/bcel-builder/testdata/testcode.jar
Binary files differ
diff --git a/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/AllTests.java b/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/AllTests.java
index ff170ab07..f7ef2ab46 100644
--- a/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/AllTests.java
+++ b/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/AllTests.java
@@ -50,6 +50,7 @@ public class AllTests {
suite.addTestSuite(TypeAnnotationsTest.class);
suite.addTestSuite(UtilTests.class);
suite.addTestSuite(GenericSignatureParsingTest.class);
+ suite.addTestSuite(GenericsErasureTesting.class);
//$JUnit-END$
return suite;
}
diff --git a/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/GenericsErasureTesting.java b/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/GenericsErasureTesting.java
new file mode 100644
index 000000000..37883221d
--- /dev/null
+++ b/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/GenericsErasureTesting.java
@@ -0,0 +1,50 @@
+/* *******************************************************************
+ * Copyright (c) 2005 Contributors
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * Andy Clement (IBM) initial implementation
+ * ******************************************************************/
+package org.aspectj.apache.bcel.classfile.tests;
+
+import org.aspectj.apache.bcel.classfile.Attribute;
+import org.aspectj.apache.bcel.classfile.JavaClass;
+import org.aspectj.apache.bcel.classfile.Method;
+import org.aspectj.apache.bcel.classfile.Signature;
+
+/**
+ * Should be possible to recover original declared signatures after erasure by using
+ * the signature attribute.
+ */
+public class GenericsErasureTesting extends BcelTestCase {
+
+
+ public void testLoadingGenerics() throws ClassNotFoundException {
+ JavaClass clazz = getClassFromJar("ErasureTestData");
+ Method m = getMethod(clazz,"getData");
+ String sig = m.getDeclaredSignature();
+ System.err.println(getSignatureAttribute(clazz,"getData"));
+ System.err.println(sig);
+ assertTrue("Incorrect: "+sig,sig.equals("()Ljava/util/Vector<Ljava/lang/String;>;"));
+ }
+
+
+ // helper methods below
+
+ public Signature getSignatureAttribute(JavaClass clazz,String name) {
+ Method m = getMethod(clazz,name);
+ Attribute[] as = m.getAttributes();
+ for (int i = 0; i < as.length; i++) {
+ Attribute attribute = as[i];
+ if (attribute.getName().equals("Signature")) {
+ return (Signature)attribute;
+ }
+ }
+ return null;
+ }
+
+}