- Revision
- 1307
- Author
- rfscholte
- Date
- 2011-09-04 06:11:58 -0500 (Sun, 04 Sep 2011)
Log Message
Add JavaClass.getEnumConstants() and JavaClass.getEnumConstantByName()
Modified Paths
Diff
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaClass.java (1306 => 1307)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaClass.java 2011-09-03 17:32:37 UTC (rev 1306) +++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaClass.java 2011-09-04 11:11:58 UTC (rev 1307) @@ -605,7 +605,7 @@ public List<JavaField> getFields() { return fields; } - + /* (non-Javadoc) * @see com.thoughtworks.qdox.model.JavaClass#getFieldByName(java.lang.String) */ @@ -620,6 +620,28 @@ } return null; } + + public List<JavaField> getEnumConstants() + { + List<JavaField> result = isEnum() ? new LinkedList<JavaField>() : null; + if ( isEnum() ) + { + for ( JavaField field : getFields() ) + { + if ( field.isEnumConstant() ) + { + result.add( field ); + } + } + } + return result; + } + + public JavaField getEnumConstantByName( String name ) + { + JavaField field = getFieldByName( name ); + return field.isEnumConstant() ? field : null; + } public void addClass(JavaClass cls) { classes.add(cls);
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaClass.java (1306 => 1307)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaClass.java 2011-09-03 17:32:37 UTC (rev 1306) +++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/JavaClass.java 2011-09-04 11:11:58 UTC (rev 1307) @@ -274,8 +274,23 @@ * @return */ JavaField getFieldByName( String name ); + + /** + * Based on {@link java.lang.Class#getEnumConstants()}. + * + * + * @return a List of enum constants if this class is an <code>enum</code>, otherwise <code>null</code> + */ + List<JavaField> getEnumConstants(); /** + * + * + * @return the enumConstant matching the {@code name}, otherwise <code>null</code> + */ + JavaField getEnumConstantByName( String name ); + + /** * @deprecated Use {@link #getNestedClasses()} instead. */ List<JavaClass> getClasses();
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/Type.java (1306 => 1307)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/Type.java 2011-09-03 17:32:37 UTC (rev 1306) +++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/Type.java 2011-09-04 11:11:58 UTC (rev 1307) @@ -767,7 +767,17 @@ { return resolveRealClass().getFieldByName( name ); } - + + public List<JavaField> getEnumConstants() + { + return resolveRealClass().getEnumConstants(); + } + + public JavaField getEnumConstantByName( String name ) + { + return resolveRealClass().getEnumConstantByName( name ); + } + public List<JavaClass> getClasses() { return resolveRealClass().getClasses();
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaClassTest.java (1306 => 1307)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaClassTest.java 2011-09-03 17:32:37 UTC (rev 1306) +++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaClassTest.java 2011-09-04 11:11:58 UTC (rev 1307) @@ -479,6 +479,46 @@ assertEquals("enums cannot extend other classes", e.getMessage()); } } + + public void testGetEnumConstants() { + setName( cls, "MyEnum" ); + assertNull( cls.getEnumConstants() ); + + setEnum( cls, true ); + assertNotNull( cls.getEnumConstants() ); + assertEquals( 0, cls.getEnumConstants().size() ); + + List<JavaField> fields = new ArrayList<JavaField>(); + JavaField nonEnumConstantField = mock(JavaField.class); + fields.add( nonEnumConstantField ); + setFields( cls, fields ); + assertEquals( 0, cls.getEnumConstants().size() ); + + JavaField enumConstantField = mock(JavaField.class); + when ( enumConstantField.isEnumConstant() ).thenReturn( true ); + fields.add( enumConstantField ); + setFields( cls, fields ); + assertEquals( 1, cls.getEnumConstants().size() ); + } + + public void testGetEnumConstantByName() { + setName( cls, "MyEnum" ); + + List<JavaField> fields = new ArrayList<JavaField>(); + JavaField nonEnumConstantField = mock(JavaField.class); + when ( nonEnumConstantField.getName() ).thenReturn( "nonEnumField" ); + fields.add( nonEnumConstantField ); + setFields( cls, fields ); + assertEquals( null, cls.getEnumConstantByName( "nonEnumField" ) ); + + JavaField enumConstantField = mock(JavaField.class); + when ( enumConstantField.isEnumConstant() ).thenReturn( true ); + when ( enumConstantField.getName() ).thenReturn( "enumField" ); + fields.add( enumConstantField ); + setFields( cls, fields ); + assertEquals( enumConstantField, cls.getEnumConstantByName( "enumField" ) ); + } + public void testCanGetFieldByName() throws Exception { JavaField fredField = mock(JavaField.class);
To unsubscribe from this list please visit:
