- Revision
- 1120
- Author
- rfscholte
- Date
- 2011-03-16 16:18:33 -0500 (Wed, 16 Mar 2011)
Log Message
QDOX-227: introducing CommentHandler
Modified Paths
- trunk/qdox/pom.xml
- trunk/qdox/src/grammar/commentlexer.flex
- trunk/qdox/src/grammar/commentparser.y
- trunk/qdox/src/grammar/lexer.flex
- trunk/qdox/src/grammar/parser.y
- trunk/qdox/src/java/com/thoughtworks/qdox/builder/ModelBuilder.java
- trunk/qdox/src/java/com/thoughtworks/qdox/library/ClassLoaderLibrary.java
- trunk/qdox/src/java/com/thoughtworks/qdox/library/SourceLibrary.java
- trunk/qdox/src/java/com/thoughtworks/qdox/model/ClassLibrary.java
- trunk/qdox/src/java/com/thoughtworks/qdox/parser/CommentHandler.java
- trunk/qdox/src/test/com/thoughtworks/qdox/JavaProjectBuilderTest.java
- trunk/qdox/src/test/com/thoughtworks/qdox/parser/LexerTest.java
- trunk/qdox/src/test/com/thoughtworks/qdox/parser/ParserTest.java
Diff
Modified: trunk/qdox/pom.xml (1119 => 1120)
--- trunk/qdox/pom.xml 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/pom.xml 2011-03-16 21:18:33 UTC (rev 1120) @@ -243,7 +243,7 @@ <argument>-Jnorun</argument> <argument>-Jnoconstruct</argument> <argument>-Jclass=Parser</argument> - <!-- <argument>-Jimplements=CommentHandler</argument> --> + <argument>-Jimplements=CommentHandler</argument> <argument>-Jsemantic=Value</argument> <argument>-Jpackage=com.thoughtworks.qdox.parser.impl</argument> <argument>${basedir}/src/grammar/parser.y</argument>
Modified: trunk/qdox/src/grammar/commentlexer.flex (1119 => 1120)
--- trunk/qdox/src/grammar/commentlexer.flex 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/grammar/commentlexer.flex 2011-03-16 21:18:33 UTC (rev 1120) @@ -32,6 +32,8 @@ %column %{ + private int lineOffset = 1; + private int columnOffset =1; private int stateDepth = 0; private int[] stateStack = new int[10]; @@ -48,13 +50,21 @@ } public int getLine() { - return yyline + 1; + return yyline + lineOffset; } + + public void setLineOffset(int lineOffset) { + this.lineOffset = lineOffset; + } public int getColumn() { - return yycolumn + 1; + return yycolumn + columnOffset; } + public void setColumnOffset(int columnOffset) { + this.columnOffset = columnOffset; + } + public String getCodeBody(){ String s = codeBody.toString(); codeBody = new StringBuffer(8192); @@ -117,14 +127,22 @@ popState(); return DefaultJavaCommentParser.JAVADOCEND; } + "@" { + yypushback(1); + pushState(JAVADOCTAG); + } + [^ \t\r] { + yypushback(1); + pushState(JAVADOCLINE); + } } -<JAVADOCCONTENT,JAVADOC> { +<JAVADOCCONTENT> { [^ \t\r@] { yypushback(1); popState(); pushState(JAVADOCLINE); } - [ \t\r]* "@" { + "@" { yypushback(1); popState(); pushState(JAVADOCTAG);
Modified: trunk/qdox/src/grammar/commentparser.y (1119 => 1120)
--- trunk/qdox/src/grammar/commentparser.y 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/grammar/commentparser.y 2011-03-16 21:18:33 UTC (rev 1120) @@ -41,6 +41,9 @@ builder.addJavaDoc(buffer()); }; +javadoctokens_opt: + | javadoctokens; + javadoctokens: javadoctoken | javadoctokens javadoctoken; @@ -59,7 +62,7 @@ { line = lexer.getLine(); } - javadoctokens + javadoctokens_opt { builder.addJavaDocTag(new TagDef($1.substring(1), buffer(), line)); };
Modified: trunk/qdox/src/grammar/lexer.flex (1119 => 1120)
--- trunk/qdox/src/grammar/lexer.flex 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/grammar/lexer.flex 2011-03-16 21:18:33 UTC (rev 1120) @@ -20,12 +20,14 @@ */ import com.thoughtworks.qdox.parser.*; +import java.util.*; + %% // class and lexer definitions %class JFlexLexer %public -%implements Lexer +%implements JavaLexer %byaccj %unicode %line @@ -33,6 +35,7 @@ %{ private java.io.Writer writer; + private List<CommentHandler> commentHandlers = new ArrayList<CommentHandler>(); private int classDepth = 0; private int parenDepth = 0; @@ -110,6 +113,10 @@ return s; } + public void addCommentHandler(CommentHandler handler) { + this.commentHandlers.add(handler); + } + public JFlexLexer( java.io.Reader reader, java.io.Writer writer ) { this( reader ); this.writer = writer; @@ -236,9 +243,9 @@ } "/**" ~"*/" { - pushState(JAVADOC); - yypushStream(new java.io.StringReader(text().substring(2))); - return Parser.JAVADOCSTART; + for( CommentHandler handler: commentHandlers ) { + handler.onComment( text(), getLine(), getColumn() ); + } } "=" {WhiteSpace}* { @@ -290,26 +297,6 @@ } } } -<JAVADOC> { - "@" { yypushback(1); pushState(JAVADOCTAG); } - [^ \t\r*@] { yypushback(1); pushState(JAVADOCLINE); } - "*"+ [ \t]* / "@" { pushState(JAVADOCTAG); } - "*"+ [ \t]? { pushState(JAVADOCLINE); } - {JavadocEnd} { popState(); yypopStream(); return Parser.JAVADOCEND; } -} -<JAVADOCLINE> { - ~{Eol} { popState(); return Parser.JAVADOCLINE; } - .* [^ \t*] / [ \t]* {JavadocEnd} { popState(); return Parser.JAVADOCLINE;} - {JavadocEnd} { popState(); popState(); yypopStream(); return Parser.JAVADOCEND; } -} - -<JAVADOCTAG> { - "@" [^ \t\n\r]+ / {JavadocEnd} { popState(); return Parser.JAVADOCTAG; } - "@" [^ \t\n\r]+ { return Parser.JAVADOCTAG; } - [ \t]+ { popState();pushState(JAVADOCLINE);} - {Eol} { popState();return Parser.JAVADOCLINE;} -} - <CODEBLOCK> { "{" { if(codeblockDepth++ > 0 ) {
Modified: trunk/qdox/src/grammar/parser.y (1119 => 1120)
--- trunk/qdox/src/grammar/parser.y 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/grammar/parser.y 2011-03-16 21:18:33 UTC (rev 1120) @@ -38,12 +38,11 @@ %token TILDE AMPERSAND VERTLINE CIRCUMFLEX %token VOID %token QUERY COLON AT -%token JAVADOCSTART JAVADOCEND JAVADOCEOL %token CODEBLOCK PARENBLOCK %token BYTE SHORT INT LONG CHAR FLOAT DOUBLE BOOLEAN // strongly typed tokens/types -%token <sval> IDENTIFIER JAVADOCTAG JAVADOCLINE +%token <sval> IDENTIFIER %token <sval> BOOLEAN_LITERAL %token <sval> INTEGER_LITERAL %token <sval> LONG_LITERAL @@ -78,7 +77,6 @@ | PackageDeclaration_opt PackageDeclaration; PackageDeclaration: package - | javadoc | annotation; package: PACKAGE @@ -94,8 +92,7 @@ ImportDeclarations_opt: | ImportDeclarations_opt ImportDeclaration; -ImportDeclaration: javadoc /*tmp*/ | - SingleTypeImportDeclaration +ImportDeclaration: SingleTypeImportDeclaration | TypeImportOnDemandDeclaration | SingleStaticImportDeclaration | StaticImportOnDemandDeclaration; @@ -132,8 +129,7 @@ } TypeDeclaration; -TypeDeclaration: javadoc /*tmp*/ | - ClassDeclaration +TypeDeclaration: ClassDeclaration /* | InterfaceDeclaration */ | SEMI; @@ -142,31 +138,6 @@ ClassDeclaration: NormalClassDeclaration | EnumDeclaration; -// ----- JAVADOC - -javadoc: JAVADOCSTART javadocdescription javadoctags JAVADOCEND; - -javadocdescription: - javadoctokens { - builder.addJavaDoc(buffer()); - }; - -javadoctokens: | javadoctokens javadoctoken; - -javadoctoken: - JAVADOCLINE { - appendToBuffer($1); - }; - -javadoctags: | javadoctags javadoctag; - -javadoctag: - JAVADOCTAG { line = lexer.getLine(); } - javadoctokens { - builder.addJavaDocTag(new TagDef($1.substring(1), buffer(), line)); - }; - - // ----- COMMON TOKENS // A fullidentifier is "a", "a.b", "a.b.c", etc... @@ -191,7 +162,6 @@ modifiers: modifiers modifier | - modifiers javadoc | ; @@ -591,10 +561,7 @@ extrafields: | extrafields COMMA { line = lexer.getLine(); } VariableDeclaratorId { makeField($4, lexer.getCodeBody()); - } | - extrafields COMMA javadoc { line = lexer.getLine(); } VariableDeclaratorId { - makeField($5, lexer.getCodeBody()); - }; + }; // 8.3 Field Declarations... VariableDeclaratorId: IDENTIFIER Dims_opt @@ -714,14 +681,13 @@ opt_annotations: | opt_annotations annotation; - | opt_annotations javadoc; VariableModifiers_opt: | VariableModifiers_opt modifier; %% -private Lexer lexer; +private JavaLexer lexer; private Builder builder; private StringBuffer textBuffer = new StringBuffer(); private ClassDef cls = new ClassDef(); @@ -755,7 +721,9 @@ return result; } -public Parser(Lexer lexer, Builder builder) { +public Parser( JavaLexer lexer, Builder builder ) +{ + lexer.addCommentHandler( this ); this.lexer = lexer; this.builder = builder; } @@ -815,6 +783,16 @@ builder.addField(fd); } +public void onComment( String comment, int line, int column ) { + DefaultJavaCommentLexer commentLexer = new DefaultJavaCommentLexer( new java.io.StringReader( comment ) ); + commentLexer.setLineOffset( line ); + commentLexer.setColumnOffset( column ); + DefaultJavaCommentParser commentParser = new DefaultJavaCommentParser( commentLexer, builder); + commentParser.setDebugLexer( this.debugLexer ); + commentParser.setDebugParser( this.yydebug ); + commentParser.parse(); +} + private String convertString(String str) { StringBuffer buf = new StringBuffer(); boolean escaped = false;
Modified: trunk/qdox/src/java/com/thoughtworks/qdox/builder/ModelBuilder.java (1119 => 1120)
--- trunk/qdox/src/java/com/thoughtworks/qdox/builder/ModelBuilder.java 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/java/com/thoughtworks/qdox/builder/ModelBuilder.java 2011-03-16 21:18:33 UTC (rev 1120) @@ -59,7 +59,7 @@ private DefaultJavaMethod currentMethod; private List<AnnoDef> currentAnnoDefs; private String lastComment; - private List<TagDef> lastTagSet; + private List<TagDef> lastTagSet = new LinkedList<TagDef>(); private DocletTagFactory docletTagFactory; private ModelWriterFactory modelWriterFactory; @@ -91,7 +91,6 @@ public void addJavaDoc(String text) { lastComment = text; - lastTagSet = new LinkedList<TagDef>(); } public void addJavaDocTag(TagDef tagDef) { @@ -184,9 +183,6 @@ } private void addJavaDoc(AbstractBaseJavaEntity entity) { - if (lastComment == null) { - return; - } entity.setComment(lastComment); List<DocletTag> tagList = new LinkedList<DocletTag>(); for (TagDef tagDef : lastTagSet) { @@ -199,6 +195,7 @@ } entity.setTags(tagList); + lastTagSet.clear(); lastComment = null; }
Modified: trunk/qdox/src/java/com/thoughtworks/qdox/library/ClassLoaderLibrary.java (1119 => 1120)
--- trunk/qdox/src/java/com/thoughtworks/qdox/library/ClassLoaderLibrary.java 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/java/com/thoughtworks/qdox/library/ClassLoaderLibrary.java 2011-03-16 21:18:33 UTC (rev 1120) @@ -30,7 +30,7 @@ import com.thoughtworks.qdox.model.DefaultJavaPackage; import com.thoughtworks.qdox.model.JavaClass; import com.thoughtworks.qdox.model.JavaPackage; -import com.thoughtworks.qdox.parser.Lexer; +import com.thoughtworks.qdox.parser.JavaLexer; import com.thoughtworks.qdox.parser.impl.BinaryClassParser; import com.thoughtworks.qdox.parser.impl.JFlexLexer; import com.thoughtworks.qdox.parser.impl.Parser; @@ -108,7 +108,7 @@ InputStream sourceStream = classLoader.getResourceAsStream( resource ); if(sourceStream != null) { ModelBuilder builder = getModelBuilder(); - Lexer lexer = new JFlexLexer( sourceStream ); + JavaLexer lexer = new JFlexLexer( sourceStream ); Parser parser = new Parser( lexer, builder ); parser.setDebugLexer( debugLexer ); parser.setDebugParser( debugParser );
Modified: trunk/qdox/src/java/com/thoughtworks/qdox/library/SourceLibrary.java (1119 => 1120)
--- trunk/qdox/src/java/com/thoughtworks/qdox/library/SourceLibrary.java 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/java/com/thoughtworks/qdox/library/SourceLibrary.java 2011-03-16 21:18:33 UTC (rev 1120) @@ -31,11 +31,10 @@ import java.util.List; import com.thoughtworks.qdox.builder.ModelBuilder; -import com.thoughtworks.qdox.model.DefaultJavaPackage; import com.thoughtworks.qdox.model.JavaClass; import com.thoughtworks.qdox.model.JavaPackage; import com.thoughtworks.qdox.model.JavaSource; -import com.thoughtworks.qdox.parser.Lexer; +import com.thoughtworks.qdox.parser.JavaLexer; import com.thoughtworks.qdox.parser.ParseException; import com.thoughtworks.qdox.parser.impl.JFlexLexer; import com.thoughtworks.qdox.parser.impl.Parser; @@ -168,7 +167,7 @@ } } - private JavaSource parse( Lexer lexer ) + private JavaSource parse( JavaLexer lexer ) throws ParseException { JavaSource result = null;
Modified: trunk/qdox/src/java/com/thoughtworks/qdox/model/ClassLibrary.java (1119 => 1120)
--- trunk/qdox/src/java/com/thoughtworks/qdox/model/ClassLibrary.java 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/java/com/thoughtworks/qdox/model/ClassLibrary.java 2011-03-16 21:18:33 UTC (rev 1120) @@ -37,7 +37,7 @@ import com.thoughtworks.qdox.builder.ModelBuilder; import com.thoughtworks.qdox.builder.ModelBuilderFactory; import com.thoughtworks.qdox.library.JavaClassContext; -import com.thoughtworks.qdox.parser.Lexer; +import com.thoughtworks.qdox.parser.JavaLexer; import com.thoughtworks.qdox.parser.ParseException; import com.thoughtworks.qdox.parser.impl.BinaryClassParser; import com.thoughtworks.qdox.parser.impl.JFlexLexer; @@ -328,7 +328,7 @@ public JavaSource addSource(Reader reader, String sourceInfo) { ModelBuilder builder = modelBuilderFactory.newInstance(); - Lexer lexer = new JFlexLexer(reader); + JavaLexer lexer = new JFlexLexer(reader); Parser parser = new Parser(lexer, builder); parser.setDebugLexer(debugLexer); parser.setDebugParser(debugParser);
Modified: trunk/qdox/src/java/com/thoughtworks/qdox/parser/CommentHandler.java (1119 => 1120)
--- trunk/qdox/src/java/com/thoughtworks/qdox/parser/CommentHandler.java 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/java/com/thoughtworks/qdox/parser/CommentHandler.java 2011-03-16 21:18:33 UTC (rev 1120) @@ -30,5 +30,5 @@ */ public interface CommentHandler { - public void onComment(String comment); + public void onComment(String comment, int line, int column); }
Modified: trunk/qdox/src/test/com/thoughtworks/qdox/JavaProjectBuilderTest.java (1119 => 1120)
--- trunk/qdox/src/test/com/thoughtworks/qdox/JavaProjectBuilderTest.java 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/test/com/thoughtworks/qdox/JavaProjectBuilderTest.java 2011-03-16 21:18:33 UTC (rev 1120) @@ -39,6 +39,8 @@ protected void setUp() throws Exception { super.setUp(); builder = new JavaProjectBuilder(); + builder.setDebugLexer( true ); + builder.setDebugParser( true ); createFile("target/test-source/com/blah/Thing.java", "com.blah", "Thing"); createFile("target/test-source/com/blah/Another.java", "com.blah", "Another"); createFile("target/test-source/com/blah/subpackage/Cheese.java", "com.blah.subpackage", "Cheese");
Modified: trunk/qdox/src/test/com/thoughtworks/qdox/parser/LexerTest.java (1119 => 1120)
--- trunk/qdox/src/test/com/thoughtworks/qdox/parser/LexerTest.java 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/test/com/thoughtworks/qdox/parser/LexerTest.java 2011-03-16 21:18:33 UTC (rev 1120) @@ -302,167 +302,6 @@ assertLex(0, lexer); } - public void testDocletTags() throws Exception { - String in = "" - + "/**\n" - + " * @hello world\n" - + " * @a b c d\n" - + " * @bye\n" - + " * @bye:bye\n" - + " */"; - Lexer lexer = new JFlexLexer(new StringReader(in)); - assertLex(Parser.JAVADOCSTART, lexer); - - assertLex(Parser.JAVADOCLINE, "\n",lexer); - assertLex(Parser.JAVADOCTAG, "@hello", lexer); - assertLex(Parser.JAVADOCLINE, "world\n", lexer); - - assertLex(Parser.JAVADOCTAG, "@a", lexer); - assertLex(Parser.JAVADOCLINE, "b c d\n", lexer); - - assertLex(Parser.JAVADOCTAG, "@bye", lexer); - assertLex(Parser.JAVADOCLINE, "\n",lexer); - - assertLex(Parser.JAVADOCTAG, "@bye:bye", lexer); - assertLex(Parser.JAVADOCLINE, "\n",lexer); - - assertLex(Parser.JAVADOCEND, lexer); - assertLex(0, lexer); - } - - public void testOneLinerDocComment() throws Exception { - String in = "/** @hello world */"; - Lexer lexer = new JFlexLexer(new StringReader(in)); - assertLex(Parser.JAVADOCSTART, lexer); - - assertLex(Parser.JAVADOCTAG, "@hello", lexer); - assertLex(Parser.JAVADOCLINE, "world", lexer); - - assertLex(Parser.JAVADOCEND, lexer); - assertLex(0, lexer); - } - - public void testCompressedDocComment() throws Exception { - String in = "/**@foo bar*/"; - Lexer lexer = new JFlexLexer(new StringReader(in)); - assertLex(Parser.JAVADOCSTART, lexer); - - assertLex(Parser.JAVADOCTAG, "@foo", lexer); - assertLex(Parser.JAVADOCLINE, "bar", lexer); - - assertLex(Parser.JAVADOCEND, lexer); - assertLex(0, lexer); - } - - public void testDeepJavadocTag() throws Exception { - String in = " /** * *** * @m x \n" + - "*/"; - Lexer lexer = new JFlexLexer(new StringReader(in)); - assertLex(Parser.JAVADOCSTART, lexer); - - assertLex(Parser.JAVADOCLINE, "* *** * @m x \n", lexer); - - assertLex(Parser.JAVADOCEND, lexer); - assertLex(0, lexer); - } - - public void testDocCommentContainingAtSymbols() throws Exception { - String in = "" - + "/**\n" - + " * [email protected]\n" - + " * {@link here}.\n" - + " * me @home\n" - + " * geeks @ play\n" - + " */"; - Lexer lexer = new JFlexLexer(new StringReader(in)); - assertLex(Parser.JAVADOCSTART, lexer); - - assertLex(Parser.JAVADOCLINE, "\n", lexer); - assertLex(Parser.JAVADOCLINE, "[email protected]\n", lexer); - assertLex(Parser.JAVADOCLINE, "{@link here}.\n", lexer); - assertLex(Parser.JAVADOCLINE, "me @home\n", lexer); - assertLex(Parser.JAVADOCLINE, "geeks @ play\n", lexer); - - assertLex(Parser.JAVADOCEND, lexer); - assertLex(0, lexer); - } - - public void testDocCommentContainingStars() throws Exception { - String in = "" - + "/**\n" - + " * 5 * 4\n" - + " * SELECT COUNT(*)\n" - + " * **stars**everywhere** \n" - + " */"; - Lexer lexer = new JFlexLexer(new StringReader(in)); - assertLex(Parser.JAVADOCSTART, lexer); - - assertLex(Parser.JAVADOCLINE, "\n", lexer); - assertLex(Parser.JAVADOCLINE, "5 * 4\n", lexer); - assertLex(Parser.JAVADOCLINE, "SELECT COUNT(*)\n", lexer); - assertLex(Parser.JAVADOCLINE, "**stars**everywhere** \n", lexer); - - assertLex(Parser.JAVADOCEND, lexer); - assertLex(0, lexer); - } - - public void testExtraStarsAreIgnoredAtStartAndEnd() throws Exception { - String in = "" - + "/*****\n" - + " * blah\n" - + " *****/"; - Lexer lexer = new JFlexLexer(new StringReader(in)); - assertLex(Parser.JAVADOCSTART, lexer); - assertLex(Parser.JAVADOCLINE, "\n", lexer); - assertLex(Parser.JAVADOCLINE, "blah\n", lexer); - assertLex(Parser.JAVADOCEND, lexer); - assertLex(0, lexer); - } - - public void testExtraStarsCompressed() throws Exception { - String in = "" - + "/***blah***/public"; - Lexer lexer = new JFlexLexer(new StringReader(in)); - assertLex(Parser.JAVADOCSTART, lexer); - assertLex(Parser.JAVADOCLINE, "blah", lexer); - assertLex(Parser.JAVADOCEND, lexer); - assertLex(Parser.PUBLIC, lexer); - assertLex(0, lexer); - } - - public void testIgnoreStarPrefix() throws Exception { - String in = "" - + "/**\n" - + " * simple\n" - + "\t * indented\n" - + " *nospace\n" - + " *** multistar\n" - + " *\n" - + " */"; - Lexer lexer = new JFlexLexer(new StringReader(in)); - assertLex(Parser.JAVADOCSTART, lexer); - - assertLex(Parser.JAVADOCLINE, "\n", lexer); - assertLex(Parser.JAVADOCLINE, "simple\n", lexer); - assertLex(Parser.JAVADOCLINE, "indented\n", lexer); - assertLex(Parser.JAVADOCLINE, "nospace\n", lexer); - assertLex(Parser.JAVADOCLINE, "multistar\n", lexer); - assertLex(Parser.JAVADOCLINE, "\n", lexer); - - assertLex(Parser.JAVADOCEND, lexer); - assertLex(0, lexer); - } - - // QDOX-200 - public void testCompactJavaDocTag() throws Exception { - String in = "/** @foo*/"; - Lexer lexer = new JFlexLexer(new StringReader(in)); - assertLex(Parser.JAVADOCSTART, lexer); - assertLex(Parser.JAVADOCTAG, "@foo", lexer); - assertLex(Parser.JAVADOCEND, lexer); - assertLex(0, lexer); - } - public void testArrayTokens() throws Exception { String in = "String[] []o[]"; Lexer lexer = new JFlexLexer(new StringReader(in));
Modified: trunk/qdox/src/test/com/thoughtworks/qdox/parser/ParserTest.java (1119 => 1120)
--- trunk/qdox/src/test/com/thoughtworks/qdox/parser/ParserTest.java 2011-03-15 21:39:36 UTC (rev 1119) +++ trunk/qdox/src/test/com/thoughtworks/qdox/parser/ParserTest.java 2011-03-16 21:18:33 UTC (rev 1120) @@ -29,7 +29,7 @@ private Collection<Integer> lexValues = new LinkedList<Integer>(); private Collection<String> textValues = new LinkedList<String>(); - private Lexer lexer; + private JavaLexer lexer; private Builder builder; public ParserTest(String s) { @@ -38,7 +38,7 @@ protected void setUp() throws Exception { builder = mock(Builder.class); - lexer = mock(Lexer.class); + lexer = mock(JavaLexer.class); lexValues.clear(); textValues.clear(); } @@ -248,134 +248,6 @@ verify( builder ).addImport( "static com.blah.Thingy.*" ); } - public void testOneLineJavaDoc() throws Exception { - - // setup values - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "This is great!"); - setupLex(Parser.JAVADOCEND); - setupLex(0); - - // execute - Parser parser = new Parser(lexer, builder); - parser.parse(); - - // verify - verify(builder).addJavaDoc( "This is great!" ); - } - - public void testOneJavaDocTag() throws Exception { - - // setup values - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCTAG, "@This"); - setupLex(Parser.JAVADOCLINE, "is great!"); - setupLex(Parser.JAVADOCEND); - setupLex(0); - - // execute - Parser parser = new Parser(lexer, builder); - parser.parse(); - - // verify - verify(builder).addJavaDoc( "" ); - verify(builder).addJavaDocTag( new TagDef("This", "is great!") ); - } - - public void testOneJavaDocTagWithNoValue() throws Exception { - - // setup values - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCTAG, "@eatme"); - setupLex(Parser.JAVADOCEND); - setupLex(0); - - // execute - Parser parser = new Parser(lexer, builder); - parser.parse(); - - // verify - verify(builder).addJavaDoc( "" ); - verify(builder).addJavaDocTag( new TagDef("eatme", "") ); - } - - public void testOneMultiLineJavaDocTag() throws Exception { - - // setup values - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCTAG, "@This"); - setupLex(Parser.JAVADOCLINE, "is great! Mmmkay."); - setupLex(Parser.JAVADOCEND); - setupLex(0); - - // execute - Parser parser = new Parser(lexer, builder); - parser.parse(); - - // verify - verify(builder).addJavaDoc( "" ); - verify(builder).addJavaDocTag( new TagDef("This", "is great! Mmmkay.") ); - } - - public void testMultipleJavaDocTags() throws Exception { - - // setup values - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCTAG, "@This"); - setupLex(Parser.JAVADOCLINE, "is great!"); - setupLex(Parser.JAVADOCTAG, "@mock"); - setupLex(Parser.JAVADOCLINE, "generate"); - setupLex(Parser.JAVADOCEND); - setupLex(0); - - // execute - Parser parser = new Parser(lexer, builder); - parser.parse(); - - // verify - verify(builder).addJavaDoc( "" ); - verify(builder).addJavaDocTag( new TagDef("This", "is great!") ); - verify(builder).addJavaDocTag( new TagDef("mock", "generate") ); - } - - public void testJavaDocTextAndMultipleJavaDocTags() throws Exception { - - // setup values - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "Welcome! Here is my class."); - setupLex(Parser.JAVADOCTAG, "@This"); - setupLex(Parser.JAVADOCLINE, "is great!"); - setupLex(Parser.JAVADOCTAG, "@mock"); - setupLex(Parser.JAVADOCLINE, "generate"); - setupLex(Parser.JAVADOCEND); - setupLex(0); - - // execute - Parser parser = new Parser(lexer, builder); - parser.parse(); - - // verify - verify(builder).addJavaDoc( "Welcome! Here is my class." ); - verify(builder).addJavaDocTag( new TagDef("This", "is great!") ); - verify(builder).addJavaDocTag( new TagDef("mock", "generate") ); - - } - - public void testJavaDocEmpty() throws Exception { - - // setup values - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCEND); - setupLex(0); - - // execute - Parser parser = new Parser(lexer, builder); - parser.parse(); - - // verify - verify(builder).addJavaDoc( "" ); - } - public void testEmptyVanillaClass() throws Exception { // setup values @@ -793,101 +665,102 @@ verify(builder, times(2)).endClass(); } - public void testJavaDocAppearingAllOverThePlace() throws Exception { +/*can't be tested like this anymore*/ +// public void testJavaDocAppearingAllOverThePlace() throws Exception { +// +// // setup values +// setupLex(Parser.JAVADOCSTART); +// setupLex(Parser.JAVADOCLINE, "javadoc1"); +// setupLex(Parser.JAVADOCEND); +// +// setupLex(Parser.JAVADOCSTART); +// setupLex(Parser.JAVADOCLINE, "javadoc2"); +// setupLex(Parser.JAVADOCEND); +// +// setupLex(Parser.PACKAGE); +// setupLex(Parser.IDENTIFIER, "mypackage"); +// setupLex(Parser.SEMI); +// +// setupLex(Parser.JAVADOCSTART); +// setupLex(Parser.JAVADOCLINE, "javadoc3"); +// setupLex(Parser.JAVADOCEND); +// +// setupLex(Parser.JAVADOCSTART); +// setupLex(Parser.JAVADOCLINE, "javadoc4"); +// setupLex(Parser.JAVADOCEND); +// +// setupLex(Parser.IMPORT); +// setupLex(Parser.IDENTIFIER, "anotherpackage"); +// setupLex(Parser.DOT); +// setupLex(Parser.IDENTIFIER, "Something"); +// setupLex(Parser.SEMI); +// +// setupLex(Parser.JAVADOCSTART); +// setupLex(Parser.JAVADOCLINE, "javadoc5"); +// setupLex(Parser.JAVADOCEND); +// +// setupLex(Parser.JAVADOCSTART); +// setupLex(Parser.JAVADOCLINE, "javadoc6"); +// setupLex(Parser.JAVADOCEND); +// +// setupLex(Parser.IMPORT); +// setupLex(Parser.IDENTIFIER, "elsewhere"); +// setupLex(Parser.DOT); +// setupLex(Parser.STAR); +// setupLex(Parser.SEMI); +// +// setupLex(Parser.JAVADOCSTART); +// setupLex(Parser.JAVADOCLINE, "javadoc7"); +// setupLex(Parser.JAVADOCEND); +// +// setupLex(Parser.JAVADOCSTART); +// setupLex(Parser.JAVADOCLINE, "javadoc8"); +// setupLex(Parser.JAVADOCEND); +// +// setupLex(Parser.PUBLIC); +// setupLex(Parser.CLASS); +// setupLex(Parser.IDENTIFIER, "MyClass"); +// setupLex(Parser.BRACEOPEN); +// setupLex(Parser.BRACECLOSE); +// +// setupLex(Parser.JAVADOCSTART); +// setupLex(Parser.JAVADOCLINE, "javadoc9"); +// setupLex(Parser.JAVADOCEND); +// +// setupLex(Parser.JAVADOCSTART); +// setupLex(Parser.JAVADOCLINE, "javadoc10"); +// setupLex(Parser.JAVADOCEND); +// +// setupLex(0); +// +// // execute +// Parser parser = new Parser(lexer, builder); +// parser.parse(); +// +// // expectations +// ClassDef cls = new ClassDef(); +// cls.name = "MyClass"; +// cls.modifiers.add("public"); +// +// // verify +// verify(builder).addJavaDoc("javadoc1"); +// verify(builder).addJavaDoc("javadoc2"); +// verify(builder).addPackage( new PackageDef( "mypackage" ) ); +// verify(builder).addJavaDoc("javadoc3"); +// verify(builder).addJavaDoc("javadoc4"); +// verify(builder).addImport( "anotherpackage.Something" ); +// verify(builder).addJavaDoc("javadoc5"); +// verify(builder).addJavaDoc("javadoc6"); +// verify(builder).addImport("elsewhere.*"); +// verify(builder).addJavaDoc("javadoc7"); +// verify(builder).beginClass( cls ); +// verify(builder).endClass(); +// verify(builder).addJavaDoc("javadoc8"); +// verify(builder).addJavaDoc("javadoc9"); +// verify(builder).addJavaDoc("javadoc10"); +// +// } - // setup values - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "javadoc1"); - setupLex(Parser.JAVADOCEND); - - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "javadoc2"); - setupLex(Parser.JAVADOCEND); - - setupLex(Parser.PACKAGE); - setupLex(Parser.IDENTIFIER, "mypackage"); - setupLex(Parser.SEMI); - - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "javadoc3"); - setupLex(Parser.JAVADOCEND); - - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "javadoc4"); - setupLex(Parser.JAVADOCEND); - - setupLex(Parser.IMPORT); - setupLex(Parser.IDENTIFIER, "anotherpackage"); - setupLex(Parser.DOT); - setupLex(Parser.IDENTIFIER, "Something"); - setupLex(Parser.SEMI); - - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "javadoc5"); - setupLex(Parser.JAVADOCEND); - - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "javadoc6"); - setupLex(Parser.JAVADOCEND); - - setupLex(Parser.IMPORT); - setupLex(Parser.IDENTIFIER, "elsewhere"); - setupLex(Parser.DOT); - setupLex(Parser.STAR); - setupLex(Parser.SEMI); - - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "javadoc7"); - setupLex(Parser.JAVADOCEND); - - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "javadoc8"); - setupLex(Parser.JAVADOCEND); - - setupLex(Parser.PUBLIC); - setupLex(Parser.CLASS); - setupLex(Parser.IDENTIFIER, "MyClass"); - setupLex(Parser.BRACEOPEN); - setupLex(Parser.BRACECLOSE); - - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "javadoc9"); - setupLex(Parser.JAVADOCEND); - - setupLex(Parser.JAVADOCSTART); - setupLex(Parser.JAVADOCLINE, "javadoc10"); - setupLex(Parser.JAVADOCEND); - - setupLex(0); - - // execute - Parser parser = new Parser(lexer, builder); - parser.parse(); - - // expectations - ClassDef cls = new ClassDef(); - cls.name = "MyClass"; - cls.modifiers.add("public"); - - // verify - verify(builder).addJavaDoc("javadoc1"); - verify(builder).addJavaDoc("javadoc2"); - verify(builder).addPackage( new PackageDef( "mypackage" ) ); - verify(builder).addJavaDoc("javadoc3"); - verify(builder).addJavaDoc("javadoc4"); - verify(builder).addImport( "anotherpackage.Something" ); - verify(builder).addJavaDoc("javadoc5"); - verify(builder).addJavaDoc("javadoc6"); - verify(builder).addImport("elsewhere.*"); - verify(builder).addJavaDoc("javadoc7"); - verify(builder).beginClass( cls ); - verify(builder).endClass(); - verify(builder).addJavaDoc("javadoc8"); - verify(builder).addJavaDoc("javadoc9"); - verify(builder).addJavaDoc("javadoc10"); - - } - public void testSimpleVoidMethod() throws Exception { // setup values
To unsubscribe from this list please visit:
