Title: [1317] trunk/qdox/src/test/java/com/thoughtworks/qdox: Use Collection for JavaPackage.getClasses() and JavaPackage.getSubPackages() as we cannot guarantee the order.
Revision
1317
Author
rfscholte
Date
2011-09-10 09:41:30 -0500 (Sat, 10 Sep 2011)

Log Message

Use Collection for JavaPackage.getClasses() and JavaPackage.getSubPackages() as we cannot guarantee the order.
Add JavaPackage.getClassByName()

Modified Paths

Diff

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaPackage.java (1316 => 1317)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaPackage.java	2011-09-10 14:11:04 UTC (rev 1316)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaPackage.java	2011-09-10 14:41:30 UTC (rev 1317)
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -72,7 +73,7 @@
     /* (non-Javadoc)
      * @see com.thoughtworks.qdox.model.JavaPackage#getClasses()
      */
-	public List<JavaClass> getClasses() {
+	public Collection<JavaClass> getClasses() {
 	    //avoid infinitive  recursion
 	    if (this == classLibrary.getJavaPackage( name )) {
 	        return classes;
@@ -81,6 +82,46 @@
 	        return classLibrary.getJavaPackage( name ).getClasses();
 	    }
 	}
+	
+	public JavaClass getClassByName(String name) 
+    {
+        JavaClass result = null;
+        
+        for ( JavaClass candidateCls : classes )
+        {
+            result = getClassByName( candidateCls, name );
+            if ( result != null ) 
+            {
+                result = candidateCls;
+                break;
+            }
+        }
+        return result;
+    }
+	
+	private static JavaClass getClassByName(JavaClass cls, String name) 
+    {
+        JavaClass result = null;
+        if ( cls.getFullyQualifiedName().equals( name ) ) 
+        {
+            result = cls;
+        }
+        else if ( cls.getName().equals(name)) 
+        {
+            result = cls;
+        }
+        else {
+            for ( JavaClass innerCls : cls.getClasses() )
+            {
+                result = getClassByName( innerCls, name );
+                if ( result != null ) 
+                {
+                    break;
+                }
+            }
+        }
+        return result;
+    }
 
     public JavaPackage getParentPackage()
     {

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaPackage.java (1316 => 1317)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaPackage.java	2011-09-10 14:11:04 UTC (rev 1316)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaPackage.java	2011-09-10 14:41:30 UTC (rev 1317)
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import java.util.List;
+import java.util.Collection;
 
 public interface JavaPackage extends JavaModel, JavaAnnotatedElement
 {
@@ -29,7 +29,17 @@
      *
      * @return all the classes found for the package, never <code>null</code>
      */
-    List<JavaClass> getClasses();
+    Collection<JavaClass> getClasses();
+    
+    /**
+     * Try to get any class of this package by name.
+     * The name can be both the fully qualified name or just the name of the class.
+     * 
+     * @param name the (fully qualified) name of the class 
+     * @return the matching class, otherwise <code>null</code>
+     * @since 2.0
+     */
+    JavaClass getClassByName( String name );
 
     /**
      * The parent of this package
@@ -45,7 +55,7 @@
      * 
      * @return all the children of this package , never <code>null</code>
      */
-    List<JavaPackage> getSubPackages();
+    Collection<JavaPackage> getSubPackages();
 
     /**
      * The name of this package

Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/JavaProjectBuilderTest.java (1316 => 1317)

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/JavaProjectBuilderTest.java	2011-09-10 14:11:04 UTC (rev 1316)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/JavaProjectBuilderTest.java	2011-09-10 14:41:30 UTC (rev 1317)
@@ -135,20 +135,17 @@
         JavaPackage comBlah = builder.getPackageByName( "com.blah" );
         JavaPackage comBlahSubpackage = builder.getPackageByName( "com.blah.subpackage" );
         assertEquals("com.blah.subpackage", comBlahSubpackage.getName());
-        List<JavaClass> classes = comBlahSubpackage.getClasses();
-        assertEquals(1, classes.size());
-        assertEquals("Cheese", classes.get(0).getName());
-        classes = comBlah.getClasses();
-        assertEquals(2, classes.size());
-        assertEquals("Another", classes.get(0).getName());
-        assertEquals("Thing", classes.get(1).getName());
+        assertEquals(1, comBlahSubpackage.getClasses().size());
+        assertNotNull("Cheese", comBlahSubpackage.getClassByName( "Cheese" ) );
+        assertEquals(2, comBlah.getClasses().size());
+        assertNotNull( comBlah.getClassByName( "Another" ));
+        assertNotNull( comBlah.getClassByName( "Thing" ));
         assertEquals(comBlah, comBlahSubpackage.getParentPackage());
         assertNull(comBlah.getParentPackage());
-        List<JavaPackage> comBlahSubpackages = comBlah.getSubPackages();
+        Collection<JavaPackage> comBlahSubpackages = comBlah.getSubPackages();
         assertEquals(1, comBlahSubpackages.size());
-        assertEquals(comBlahSubpackage, comBlahSubpackages.get(0));
-        List<JavaPackage> comBlahSubpackageSubpackages = comBlahSubpackage.getSubPackages();
-        assertEquals(0, comBlahSubpackageSubpackages.size());
+        assertEquals(comBlahSubpackage, comBlahSubpackages.iterator().next());
+        assertEquals(0, comBlahSubpackage.getSubPackages().size());
     }
 
     private String createOuter() {


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to