- 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:
