org.aspectj/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/GenericsErasureTesting.java
2006-06-01 09:33:56 +00:00

51 lines
1.7 KiB
Java

/* *******************************************************************
* Copyright (c) 2005 Contributors
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/epl-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;
}
}