- 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
- trunk/qdox/src/java/com/thoughtworks/qdox/model/DefaultDocletTag.java
- trunk/qdox/src/java/com/thoughtworks/qdox/model/util/TagParser.java
- trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java
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:
