[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