Title: [675] trunk/qdox/src/test/com/thoughtworks/qdox: fix for qdox-134: DocletTag.getParameters()
Revision
675
Author
rfscholte
Date
2009-10-12 03:43:47 -0500 (Mon, 12 Oct 2009)

Log Message

fix for qdox-134: DocletTag.getParameters()

Modified Paths


Diff

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/model/DefaultDocletTag.java (674 => 675)

--- trunk/qdox/src/java/com/thoughtworks/qdox/model/DefaultDocletTag.java	2009-09-24 11:00:14 UTC (rev 674)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/model/DefaultDocletTag.java	2009-10-12 08:43:47 UTC (rev 675)
@@ -38,7 +38,7 @@
 
     public String[] getParameters() {
         if (parameters == null) {
-            parameters = TagParser.parseWords(value);
+            parameters = TagParser.parseParameters(value);
         }
         return parameters;
     }

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/model/util/TagParser.java (674 => 675)

--- trunk/qdox/src/java/com/thoughtworks/qdox/model/util/TagParser.java	2009-09-24 11:00:14 UTC (rev 674)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/model/util/TagParser.java	2009-10-12 08:43:47 UTC (rev 675)
@@ -83,4 +83,42 @@
         return wordArray;
     }
     
+    /**
+     * Extract an array of parameters as name or name=value representation
+     * @since 1.11  
+     */
+    public static String[] parseParameters(String tagValue) {
+        StreamTokenizer tokenizer = makeTokenizer(tagValue);
+        ArrayList wordList = new ArrayList();
+        try {
+            while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
+                StringBuilder param = new StringBuilder();
+                if (tokenizer.sval != null) {
+                    param.append( tokenizer.sval );
+                }
+                
+                //check for parameterValues
+                while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
+                    if(tokenizer.sval == null && ('=' == (char)tokenizer.ttype || ','== (char)tokenizer.ttype)){
+                        param.append( Character.toString( (char)tokenizer.ttype ) );
+                        
+                        //file was parsed correctly, so this works.
+                        tokenizer.nextToken();
+                        param.append(tokenizer.sval); 
+                    }
+                    else {
+                        tokenizer.pushBack(); break;
+                    }
+                }
+                wordList.add(param.toString());
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new RuntimeException("error tokenizing tag");
+        }
+        String[] wordArray = new String[wordList.size()];
+        wordList.toArray(wordArray);
+        return wordArray;
+    }
+    
 }

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

--- trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java	2009-09-24 11:00:14 UTC (rev 674)
+++ trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java	2009-10-12 08:43:47 UTC (rev 675)
@@ -1045,6 +1045,20 @@
         assertEquals("\"test blah blah\"", javaMethod.getAnnotations()[0].getNamedParameter("description").toString());
     }
     
+    public void testJiraQdox134() throws Exception {
+        String sourceCode = "/**\n" + 
+        		"*\n" + 
+        		"@myTag name=TestClass attrs=Something1,Something2,Something3\n" + 
+        		"*/\n" + 
+        		"public class TestClassImpl {\r\n" + 
+        		"}";
+        JavaDocBuilder builder = new JavaDocBuilder();
+        builder.addSource(new StringReader(sourceCode));
+        JavaClass jClass = builder.getClasses()[0];
+        assertEquals( Arrays.toString( new String[] {"name=TestClass","attrs=Something1,Something2,Something3"}), Arrays.toString(jClass.getTags()[0].getParameters()));
+        //assertTrue( Arrays.equals( new String[] {"name=TestClass","attrs=Something1,Something2,Something3"}, jClass.getTags()[0].getParameters() ));
+    }
+    
     //for qdox-146
     public void testWhitespaceCanBeRetainedInJavadoc() {
         String sourceCode = ""


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to