Title: [549] trunk/qdox/src/test/com/thoughtworks/qdox: towards QDOX-65

Diff

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/JavaDocBuilder.java (548 => 549)

--- trunk/qdox/src/java/com/thoughtworks/qdox/JavaDocBuilder.java	2009-02-16 20:17:41 UTC (rev 548)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/JavaDocBuilder.java	2009-02-16 20:39:16 UTC (rev 549)
@@ -10,6 +10,7 @@
 import com.thoughtworks.qdox.model.JavaClassCache;
 import com.thoughtworks.qdox.model.JavaSource;
 import com.thoughtworks.qdox.model.ModelBuilder;
+import com.thoughtworks.qdox.model.JavaPackage;
 import com.thoughtworks.qdox.parser.Lexer;
 import com.thoughtworks.qdox.parser.ParseException;
 import com.thoughtworks.qdox.parser.impl.JFlexLexer;
@@ -80,6 +81,7 @@
 public class JavaDocBuilder implements Serializable, JavaClassCache {
 
     private Map classes = new HashMap();
+    private Set packages = new HashSet();
     private ClassLibrary classLibrary;
     private List sources = new ArrayList();
     private DocletTagFactory docletTagFactory;
@@ -323,6 +325,18 @@
         JavaSource source = builder.getSource();
         sources.add(source);
         addClasses(source);
+
+        JavaPackage pkg = source.getPackage();
+        JavaClass[] classes = getClasses();
+        if (!packages.contains(pkg)) {
+            packages.add(pkg);
+        }
+        for (int i = 0; i < classes.length; i++) {
+            if (pkg != null) {
+                pkg.addClass(classes[i]);
+            }
+        }
+
         return source;
     }
 
@@ -362,6 +376,16 @@
         return result;
     }
 
+    /**
+     * Returns all the packages found in all the sources.
+     *
+     * @return all the packages found in all the sources.
+     * @since 1.9
+     */
+    public JavaPackage[] getPackages() {
+        return (JavaPackage[]) packages.toArray(new JavaPackage[packages.size()]);
+    }
+
     private void addClassesRecursive(JavaSource javaSource, Set resultSet) {
         JavaClass[] classes = javaSource.getClasses();
         for (int j = 0; j < classes.length; j++) {

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaPackage.java (548 => 549)

--- trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaPackage.java	2009-02-16 20:17:41 UTC (rev 548)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaPackage.java	2009-02-16 20:39:16 UTC (rev 549)
@@ -1,11 +1,15 @@
 package com.thoughtworks.qdox.model;
 
+import java.util.List;
+import java.util.ArrayList;
 
+
 public class JavaPackage extends AbstractBaseJavaEntity {
 
 	private String name;
 	private Annotation[] annotations = new Annotation[0];
 	private int lineNumber = -1;
+	private List classes = new ArrayList();
 
 	public JavaPackage() {
 	}
@@ -37,4 +41,18 @@
 	public void setLineNumber(int lineNumber) {
 		this.lineNumber = lineNumber;
 	}
+
+	public void addClass(JavaClass clazz) {
+		classes.add(clazz);
+	}
+
+    /**
+     * Returns all the classes found for the package.
+     *
+     * @return all the classes found for the package
+     * @since 1.9
+     */
+	public JavaClass[] getClasses() {
+		return (JavaClass[]) classes.toArray(new JavaClass[classes.size()]);
+	}
 }

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

--- trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java	2009-02-16 20:17:41 UTC (rev 548)
+++ trunk/qdox/src/test/com/thoughtworks/qdox/JavaDocBuilderTest.java	2009-02-16 20:39:16 UTC (rev 549)
@@ -107,6 +107,14 @@
         assertEquals(2, classes.length);
     }
 
+    public void testGetPackagesShowsOnePackageAndTwoClasses() {
+        builder.addSource(new StringReader(createOuter()));
+        JavaPackage[] packages = builder.getPackages();
+        assertEquals(1, packages.length);
+        assertEquals("foo.bar", packages[0].getName());
+        assertEquals(2, packages[0].getClasses().length); // same result as testGetClasses()
+    }
+
     private String createOuter() {
         StringBuffer buffer = new StringBuffer();
         buffer.append("package foo.bar;");


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to