[jboss-cvs] javassist SVN: r706 - in trunk: src/main/javassist/bytecode and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Apr 17 09:58:40 EDT 2013
Author: chiba
Date: 2013-04-17 09:58:39 -0400 (Wed, 17 Apr 2013)
New Revision: 706
Added:
trunk/src/test/test4/JIRA181.java
trunk/src/test/test4/JIRA181b.java
Modified:
trunk/Readme.html
trunk/src/main/javassist/bytecode/SignatureAttribute.java
trunk/src/main/javassist/bytecode/annotation/ClassMemberValue.java
trunk/src/test/javassist/JvstTest4.java
Log:
fixed JASSIST-181
Modified: trunk/Readme.html
===================================================================
--- trunk/Readme.html 2013-04-16 22:29:42 UTC (rev 705)
+++ trunk/Readme.html 2013-04-17 13:58:39 UTC (rev 706)
@@ -283,7 +283,7 @@
<p>-version 3.18
<ul>
-JIRA JASSIST-183, 184, 189, 162, 185, 186, 190.
+JIRA JASSIST-181, 183, 184, 189, 162, 185, 186, 190.
</ul>
<p>-version 3.17.1 on December 3, 2012
Modified: trunk/src/main/javassist/bytecode/SignatureAttribute.java
===================================================================
--- trunk/src/main/javassist/bytecode/SignatureAttribute.java 2013-04-16 22:29:42 UTC (rev 705)
+++ trunk/src/main/javassist/bytecode/SignatureAttribute.java 2013-04-17 13:58:39 UTC (rev 706)
@@ -942,6 +942,23 @@
}
}
+ /**
+ * Parses the given signature string as a type signature.
+ * The type signature is either the field type signature or a base type
+ * descriptor including <code>void</code> type.
+ *
+ * @throws BadBytecode thrown when a syntactical error is found.
+ * @since 3.18
+ */
+ public static Type toTypeSignature(String sig) throws BadBytecode {
+ try {
+ return parseType(sig, new Cursor());
+ }
+ catch (IndexOutOfBoundsException e) {
+ throw error(sig);
+ }
+ }
+
private static ClassSignature parseSig(String sig)
throws BadBytecode, IndexOutOfBoundsException
{
Modified: trunk/src/main/javassist/bytecode/annotation/ClassMemberValue.java
===================================================================
--- trunk/src/main/javassist/bytecode/annotation/ClassMemberValue.java 2013-04-16 22:29:42 UTC (rev 705)
+++ trunk/src/main/javassist/bytecode/annotation/ClassMemberValue.java 2013-04-17 13:58:39 UTC (rev 706)
@@ -17,8 +17,11 @@
package javassist.bytecode.annotation;
import javassist.ClassPool;
+import javassist.bytecode.BadBytecode;
import javassist.bytecode.ConstPool;
import javassist.bytecode.Descriptor;
+import javassist.bytecode.SignatureAttribute;
+
import java.io.IOException;
import java.lang.reflect.Method;
@@ -97,7 +100,11 @@
*/
public String getValue() {
String v = cp.getUtf8Info(valueIndex);
- return Descriptor.toClassName(v);
+ try {
+ return SignatureAttribute.toTypeSignature(v).toString();
+ } catch (BadBytecode e) {
+ throw new RuntimeException(e);
+ }
}
/**
@@ -114,7 +121,7 @@
* Obtains the string representation of this object.
*/
public String toString() {
- return "<" + getValue() + " class>";
+ return getValue() + ".class";
}
/**
Modified: trunk/src/test/javassist/JvstTest4.java
===================================================================
--- trunk/src/test/javassist/JvstTest4.java 2013-04-16 22:29:42 UTC (rev 705)
+++ trunk/src/test/javassist/JvstTest4.java 2013-04-17 13:58:39 UTC (rev 706)
@@ -839,6 +839,7 @@
assertEquals(12, invoke(obj, "test1"));
}
+ // JASSIST-185
public void testLocalVariableTypeTable() throws Exception {
CtClass cc = sloader.get("test4.Lvtt");
CtMethod m = cc.getDeclaredMethod("run");
@@ -846,4 +847,26 @@
cc.writeFile();
Object obj = make(cc.getName());
}
+
+ // JASSISt-181
+ public void testAnnotationWithGenerics() throws Exception {
+ CtClass cc0 = sloader.get("test4.JIRA181b");
+ CtField field0 = cc0.getField("aField");
+ String s0 = field0.getAnnotation(test4.JIRA181b.Condition.class).toString();
+ assertEquals("@test4.JIRA181b$Condition(condition=java.lang.String.class)", s0);
+ CtField field01 = cc0.getField("aField2");
+ String s01 = field01.getAnnotation(test4.JIRA181b.Condition.class).toString();
+ assertEquals("@test4.JIRA181b$Condition(condition=void.class)", s01);
+
+ CtClass cc = sloader.get("test4.JIRA181");
+ CtField field = cc.getField("aField");
+ String s = field.getAnnotation(test4.JIRA181.Condition.class).toString();
+ assertEquals("@test4.JIRA181$Condition(condition=test4.JIRA181<T>.B.class)", s);
+ CtField field2 = cc.getField("aField2");
+ String s2 = field2.getAnnotation(test4.JIRA181.Condition2.class).toString();
+ assertEquals("@test4.JIRA181$Condition2(condition=test4.JIRA181<T>.B[].class)", s2);
+ }
}
+
+
+
Added: trunk/src/test/test4/JIRA181.java
===================================================================
--- trunk/src/test/test4/JIRA181.java (rev 0)
+++ trunk/src/test/test4/JIRA181.java 2013-04-17 13:58:39 UTC (rev 706)
@@ -0,0 +1,29 @@
+package test4;
+
+import java.util.ArrayList;
+
+public class JIRA181<T extends Number> extends ArrayList<T> {
+ public @interface Condition {
+ Class<? extends ICondition> condition();
+ }
+
+ public @interface Condition2 {
+ Class<?> condition();
+ }
+
+ @Condition(condition = B.class)
+ public Object aField;
+
+ @Condition2(condition = B[].class)
+ public Object aField2;
+
+ public interface ICondition {
+ boolean match(Object src);
+ }
+
+ private class B implements ICondition {
+ public boolean match(Object src) {
+ return JIRA181.this.size() > 0;
+ }
+ }
+}
Property changes on: trunk/src/test/test4/JIRA181.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/src/test/test4/JIRA181b.java
===================================================================
--- trunk/src/test/test4/JIRA181b.java (rev 0)
+++ trunk/src/test/test4/JIRA181b.java 2013-04-17 13:58:39 UTC (rev 706)
@@ -0,0 +1,12 @@
+package test4;
+
+public class JIRA181b {
+ public @interface Condition {
+ Class<?> condition();
+ }
+
+ @Condition(condition = String.class)
+ public Object aField;
+ @Condition(condition = void.class)
+ public Object aField2;
+}
Property changes on: trunk/src/test/test4/JIRA181b.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
More information about the jboss-cvs-commits
mailing list