[jboss-cvs] javassist SVN: r640 - in trunk/src: test/javassist/bytecode and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sun Jun 17 11:57:20 EDT 2012
Author: chiba
Date: 2012-06-17 11:57:19 -0400 (Sun, 17 Jun 2012)
New Revision: 640
Modified:
trunk/src/main/javassist/bytecode/SignatureAttribute.java
trunk/src/test/javassist/bytecode/BytecodeTest.java
Log:
implemented JASSIST-170
Modified: trunk/src/main/javassist/bytecode/SignatureAttribute.java
===================================================================
--- trunk/src/main/javassist/bytecode/SignatureAttribute.java 2012-06-17 15:01:27 UTC (rev 639)
+++ trunk/src/main/javassist/bytecode/SignatureAttribute.java 2012-06-17 15:57:19 UTC (rev 640)
@@ -182,14 +182,14 @@
/**
* Constructs a class signature.
*
- * @param p type parameters.
- * @param s the super class.
- * @param i the interface types.
+ * @param params type parameters.
+ * @param superClass the super class.
+ * @param interfaces the interface types.
*/
- public ClassSignature(TypeParameter[] p, ClassType s, ClassType[] i) {
- params = p == null ? new TypeParameter[0] : p;
- superClass = s == null ? ClassType.OBJECT : s;
- interfaces = i == null ? new ClassType[0] : i;
+ public ClassSignature(TypeParameter[] params, ClassType superClass, ClassType[] interfaces) {
+ this.params = params == null ? new TypeParameter[0] : params;
+ this.superClass = superClass == null ? ClassType.OBJECT : superClass;
+ this.interfaces = interfaces == null ? new ClassType[0] : interfaces;
}
/**
@@ -273,13 +273,13 @@
* to represent <code>void</code> or nothing.
*
* @param tp type parameters.
- * @param p parameter types.
- * @param ret a return type.
+ * @param params parameter types.
+ * @param ret a return type, or null if the return type is <code>void</code>.
* @param ex exception types.
*/
- public MethodSignature(TypeParameter[] tp, Type[] p, Type ret, ObjectType[] ex) {
+ public MethodSignature(TypeParameter[] tp, Type[] params, Type ret, ObjectType[] ex) {
typeParams = tp == null ? new TypeParameter[0] : tp;
- params = p == null ? new Type[0] : p;
+ this.params = params == null ? new Type[0] : params;
retType = ret == null ? new BaseType("void") : ret;
exceptions = ex == null ? new ObjectType[0] : ex;
}
@@ -689,6 +689,16 @@
}
/**
+ * Constructs a <code>ClassType</code>. It represents
+ * the name of a non-nested class.
+ *
+ * @param className a fully qualified class name.
+ */
+ public ClassType(String className) {
+ this(className, null);
+ }
+
+ /**
* Returns the class name.
*/
public String getName() {
Modified: trunk/src/test/javassist/bytecode/BytecodeTest.java
===================================================================
--- trunk/src/test/javassist/bytecode/BytecodeTest.java 2012-06-17 15:01:27 UTC (rev 639)
+++ trunk/src/test/javassist/bytecode/BytecodeTest.java 2012-06-17 15:57:19 UTC (rev 640)
@@ -5,6 +5,7 @@
import junit.framework.*;
import javassist.*;
import javassist.bytecode.annotation.*;
+import javassist.bytecode.SignatureAttribute.*;
public class BytecodeTest extends TestCase {
public static final String PATH = JvstTest.PATH;
@@ -488,6 +489,33 @@
assertEquals(result, r);
}
+ public void testSignatureEncode() throws Exception {
+ BaseType bt = new BaseType("int");
+ TypeVariable tv = new TypeVariable("S");
+ ArrayType at = new ArrayType(1, tv);
+ ClassType ct1 = new ClassType("test.Foo");
+ TypeArgument ta = new TypeArgument();
+ TypeArgument ta2 = new TypeArgument(ct1);
+ TypeArgument ta3 = TypeArgument.subclassOf(ct1);
+ ClassType ct2 = new ClassType("test.Foo", new TypeArgument[] { ta, ta2, ta3 });
+ ClassType ct3 = new ClassType("test.Bar");
+ ClassType ct4 = new ClassType("test.Bar", new TypeArgument[] { ta });
+ NestedClassType ct5 = new NestedClassType(ct4, "Baz", new TypeArgument[] { ta });
+ TypeParameter tp1 = new TypeParameter("U");
+ TypeParameter tp2 = new TypeParameter("V", ct1, new ObjectType[] { ct3 });
+ ClassSignature cs = new ClassSignature(new TypeParameter[] { tp1 },
+ ct1,
+ new ClassType[] { ct2 });
+ MethodSignature ms = new MethodSignature(new TypeParameter[] { tp1, tp2 },
+ new Type[] { bt, at, ct5 }, ct3,
+ new ObjectType[] { ct1, tv });
+
+ assertEquals("<U:Ljava/lang/Object;>Ltest/Foo;Ltest/Foo<*Ltest/Foo;+Ltest/Foo;>;",
+ cs.encode());
+ assertEquals("<U:Ljava/lang/Object;V:Ltest/Foo;:Ltest/Bar;>(I[TS;Ltest/Bar<*>$Baz<*>;)Ltest/Bar;^Ltest/Foo;^TS;",
+ ms.encode());
+ }
+
public void testModifiers() throws Exception {
CtClass c = loader.get("test3.Mods");
c.setModifiers(Modifier.PROTECTED);
More information about the jboss-cvs-commits
mailing list