- Revision
- 550
- Author
- paul
- Date
- 2009-02-16 16:49:08 -0600 (Mon, 16 Feb 2009)
Log Message
better test, eliminate bug
Modified Paths
- trunk/qdox/src/java/com/thoughtworks/qdox/JavaDocBuilder.java
- trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaPackage.java
- trunk/qdox/src/java/com/thoughtworks/qdox/model/ModelBuilder.java
- trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java
Diff
Modified: trunk/qdox/src/java/com/thoughtworks/qdox/JavaDocBuilder.java (549 => 550)
--- trunk/qdox/src/java/com/thoughtworks/qdox/JavaDocBuilder.java 2009-02-16 20:39:16 UTC (rev 549) +++ trunk/qdox/src/java/com/thoughtworks/qdox/JavaDocBuilder.java 2009-02-16 22:49:08 UTC (rev 550) @@ -89,6 +89,7 @@ private boolean debugLexer; private boolean debugParser; private ErrorHandler errorHandler; + private Map allPackages = new HashMap(); public static interface ErrorHandler { void handle(ParseException parseException); @@ -138,7 +139,7 @@ } private JavaClass createUnknownClass(String name) { - ModelBuilder unknownBuilder = new ModelBuilder(classLibrary, docletTagFactory); + ModelBuilder unknownBuilder = new ModelBuilder(classLibrary, docletTagFactory, new HashMap()); ClassDef classDef = new ClassDef(); classDef.name = name; unknownBuilder.beginClass(classDef); @@ -156,7 +157,7 @@ } else { // Create a new builder and mimic the behaviour of the parser. // We're getting all the information we need via reflection instead. - ModelBuilder binaryBuilder = new ModelBuilder(classLibrary, docletTagFactory); + ModelBuilder binaryBuilder = new ModelBuilder(classLibrary, docletTagFactory, new HashMap()); // Set the package name and class name String packageName = getPackageName(name); @@ -307,7 +308,7 @@ } public JavaSource addSource(Reader reader, String sourceInfo) { - ModelBuilder builder = new ModelBuilder(classLibrary, docletTagFactory); + ModelBuilder builder = new ModelBuilder(classLibrary, docletTagFactory, allPackages); Lexer lexer = new JFlexLexer(reader); Parser parser = new Parser(lexer, builder); parser.setDebugLexer(debugLexer); @@ -327,7 +328,7 @@ addClasses(source); JavaPackage pkg = source.getPackage(); - JavaClass[] classes = getClasses(); + JavaClass[] classes = source.getClasses(); if (!packages.contains(pkg)) { packages.add(pkg); }
Modified: trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaPackage.java (549 => 550)
--- trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaPackage.java 2009-02-16 20:39:16 UTC (rev 549) +++ trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaPackage.java 2009-02-16 22:49:08 UTC (rev 550) @@ -55,4 +55,19 @@ public JavaClass[] getClasses() { return (JavaClass[]) classes.toArray(new JavaClass[classes.size()]); } + + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + JavaPackage that = (JavaPackage) o; + + if (!name.equals(that.name)) return false; + + return true; + } + + public int hashCode() { + return name.hashCode(); + } }
Modified: trunk/qdox/src/java/com/thoughtworks/qdox/model/ModelBuilder.java (549 => 550)
--- trunk/qdox/src/java/com/thoughtworks/qdox/model/ModelBuilder.java 2009-02-16 20:39:16 UTC (rev 549) +++ trunk/qdox/src/java/com/thoughtworks/qdox/model/ModelBuilder.java 2009-02-16 22:49:08 UTC (rev 550) @@ -6,6 +6,8 @@ import java.util.List; import java.util.ListIterator; import java.util.Set; +import java.util.HashMap; +import java.util.Map; import com.thoughtworks.qdox.model.annotation.AnnotationFieldRef; import com.thoughtworks.qdox.model.annotation.AnnotationVisitor; @@ -32,14 +34,16 @@ private String lastComment; private List lastTagSet; private DocletTagFactory docletTagFactory; + private final Map allPackages; public ModelBuilder() { - this(new ClassLibrary(null), new DefaultDocletTagFactory()); + this(new ClassLibrary(null), new DefaultDocletTagFactory(), new HashMap()); } - public ModelBuilder(ClassLibrary classLibrary, DocletTagFactory docletTagFactory) { + public ModelBuilder(ClassLibrary classLibrary, DocletTagFactory docletTagFactory, Map allPackages) { this.classLibrary = classLibrary; this.docletTagFactory = docletTagFactory; + this.allPackages = allPackages; source = new JavaSource(); source.setClassLibrary(classLibrary); currentParent = source; @@ -47,8 +51,12 @@ } public void addPackage(PackageDef packageDef) { - JavaPackage jPackage = new JavaPackage(packageDef.name); - jPackage.setLineNumber(packageDef.lineNumber); + JavaPackage jPackage = (JavaPackage) allPackages.get(packageDef.name); + if (jPackage == null) { + jPackage = new JavaPackage(packageDef.name); + allPackages.put(packageDef.name, jPackage); + } + jPackage.setLineNumber(packageDef.lineNumber); setAnnotations(jPackage); source.setPackage(jPackage); //@todo introduce PackageDef? }
Modified: trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java (549 => 550)
--- trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java 2009-02-16 20:39:16 UTC (rev 549) +++ trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java 2009-02-16 22:49:08 UTC (rev 550) @@ -108,11 +108,18 @@ } public void testGetPackagesShowsOnePackageAndTwoClasses() { - builder.addSource(new StringReader(createOuter())); + builder.addSourceTree(new File("target/test-source")); JavaPackage[] packages = builder.getPackages(); - assertEquals(1, packages.length); - assertEquals("foo.bar", packages[0].getName()); - assertEquals(2, packages[0].getClasses().length); // same result as testGetClasses() + assertEquals(2, packages.length); + assertEquals("com.blah.subpackage", packages[0].getName()); + assertEquals("com.blah", packages[1].getName()); + JavaClass[] classes = packages[0].getClasses(); + assertEquals(1, classes.length); + assertEquals("Cheese", classes[0].getName()); + classes = packages[1].getClasses(); + assertEquals(2, classes.length); + assertEquals("Another", classes[0].getName()); + assertEquals("Thing", classes[1].getName()); } private String createOuter() {
To unsubscribe from this list please visit:
