Title: [728] trunk/qdox/src/grammar: Fix for QDOX-209: Annotation Value polluted
Revision
728
Author
rfscholte
Date
2010-05-01 15:20:08 -0500 (Sat, 01 May 2010)

Log Message

Fix for QDOX-209: Annotation Value polluted

Modified Paths

Diff

Modified: trunk/qdox/src/grammar/lexer.flex (727 => 728)

--- trunk/qdox/src/grammar/lexer.flex	2010-04-19 13:05:47 UTC (rev 727)
+++ trunk/qdox/src/grammar/lexer.flex	2010-05-01 20:20:08 UTC (rev 728)
@@ -162,6 +162,7 @@
     {Annotation} "(" {
         parenMode = ANNOTATION;
         yypushback(text().length()-1);
+        getCodeBody(); /* reset codebody */
         return Parser.AT;
     }
     "@"                 {

Modified: trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java (727 => 728)

--- trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java	2010-04-19 13:05:47 UTC (rev 727)
+++ trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java	2010-05-01 20:20:08 UTC (rev 728)
@@ -9,6 +9,7 @@
 import java.io.*;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.HashSet;
 
@@ -1253,5 +1254,30 @@
         assertEquals("com.blah.Thing", thing.getFullyQualifiedName());
         assertNotNull(thing.getSource());
     }
+    
+    // for QDOX-209
+    public void testAnnotationMap() throws Exception{
+        JavaDocBuilder javaDocBuilder = new JavaDocBuilder();
+        String source = "import javax.persistence.JoinColumn;\n" + 
+        		"public class Instruction {\n" + 
+        		"    private static final int something = 40;\n" + 
+        		"    //-----------------------------------------------------------------------\r\n" + 
+        		"    @JoinColumn(name=\"test\",bla=\"hi\")\n" + 
+        		"    int testfield;\r\n" + 
+        		"}";
+        javaDocBuilder.addSource(new StringReader( source ));
+        JavaClass classByName = javaDocBuilder.getClassByName("Instruction");
+        JavaField fieldByName = classByName.getFieldByName("testfield");
+        Annotation[] annotations = fieldByName.getAnnotations();
+        
+        // Now we do have the annotation "JoinColumn" in annotations[0]
+        Map propertyMap = annotations[0].getNamedParameterMap();
+        // This one works
+        assertEquals("\"hi\"", propertyMap.get("bla"));
+        String string = (String) propertyMap.get("name");
+        // This one does not work
+        assertEquals("\"test\"", string);
+    }
+
 }
 


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to