Title: [1308] trunk/qdox/src/grammar: Split Builder.addField() into Builder.startField() and Builder.endField() for better support of EnumConstants

Diff

Modified: trunk/qdox/src/grammar/parser.y (1307 => 1308)

--- trunk/qdox/src/grammar/parser.y	2011-09-04 11:11:58 UTC (rev 1307)
+++ trunk/qdox/src/grammar/parser.y	2011-09-04 12:44:47 UTC (rev 1308)
@@ -911,7 +911,8 @@
     fd.setDimensions(field.getDimensions());
     fd.setEnumConstant(enumConstant);
     fd.setBody(body);
-    builder.addField(fd);
+    builder.beginField(fd);
+    builder.endField();
 }
 
 public void onComment( String comment, int line, int column ) {

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/Builder.java (1307 => 1308)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/Builder.java	2011-09-04 11:11:58 UTC (rev 1307)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/Builder.java	2011-09-04 12:44:47 UTC (rev 1308)
@@ -48,9 +48,10 @@
     void beginMethod();
     void endMethod(MethodDef def);
 
+    void beginField(FieldDef def);
+    void endField();
+
     void addParameter(FieldDef def);
-    
-    void addField(FieldDef def);
 
     void addAnnotation(AnnoDef annotation);
 }

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/ModelBuilder.java (1307 => 1308)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/ModelBuilder.java	2011-09-04 11:11:58 UTC (rev 1307)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/ModelBuilder.java	2011-09-04 12:44:47 UTC (rev 1308)
@@ -323,7 +323,7 @@
         return result;
     }
 
-	public void addField(FieldDef def) {
+	public void beginField(FieldDef def) {
         DefaultJavaField currentField = new DefaultJavaField();
         currentField.setParentClass(classStack.getFirst());
         currentField.setLineNumber(def.getLineNumber());
@@ -350,6 +350,11 @@
         classStack.getFirst().addField(currentField);
     }
 	
+	public void endField() 
+	{
+	    
+	}
+	
 	public void addParameter(FieldDef fieldDef) {
 	    DefaultJavaParameter jParam = new DefaultJavaParameter(createType(fieldDef.getType(), fieldDef.getDimensions()), fieldDef.getName(), fieldDef.isVarArgs());
         jParam.setParentMethod( currentMethod );

Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/parser/impl/BinaryClassParser.java (1307 => 1308)

--- trunk/qdox/src/main/java/com/thoughtworks/qdox/parser/impl/BinaryClassParser.java	2011-09-04 11:11:58 UTC (rev 1307)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/parser/impl/BinaryClassParser.java	2011-09-04 12:44:47 UTC (rev 1308)
@@ -37,48 +37,57 @@
 public class BinaryClassParser
 {
     private Class<?> clazz;
+
     private ModelBuilder binaryBuilder;
-    
-    public BinaryClassParser(Class<?> clazz, ModelBuilder modelBuilder)
+
+    public BinaryClassParser( Class<?> clazz, ModelBuilder modelBuilder )
     {
         this.clazz = clazz;
         this.binaryBuilder = modelBuilder;
     }
-    
-    public boolean parse() {
-        try {
+
+    public boolean parse()
+    {
+        try
+        {
             String name = clazz.getName();
 
             // Set the package name and class name
-            String packageName = getPackageName(name);
-            binaryBuilder.addPackage(new PackageDef(packageName));
+            String packageName = getPackageName( name );
+            binaryBuilder.addPackage( new PackageDef( packageName ) );
 
-            ClassDef classDef = new ClassDef( getClassName(name) );
+            ClassDef classDef = new ClassDef( getClassName( name ) );
 
             // Set the extended class and interfaces.
             Class<?>[] interfaces = clazz.getInterfaces();
-            if (clazz.isInterface()) {
+            if ( clazz.isInterface() )
+            {
                 // It's an interface
                 classDef.setType( ClassDef.INTERFACE );
-                for (int i = 0; i < interfaces.length; i++) {
+                for ( int i = 0; i < interfaces.length; i++ )
+                {
                     Class<?> anInterface = interfaces[i];
-                    classDef.getExtends().add(new TypeDef(anInterface.getName()));
+                    classDef.getExtends().add( new TypeDef( anInterface.getName() ) );
                 }
-            } else {
+            }
+            else
+            {
                 // It's a class
-                for (int i = 0; i < interfaces.length; i++) {
+                for ( int i = 0; i < interfaces.length; i++ )
+                {
                     Class<?> anInterface = interfaces[i];
-                    classDef.getImplements().add(new TypeDef(anInterface.getName()));
+                    classDef.getImplements().add( new TypeDef( anInterface.getName() ) );
                 }
                 Class<?> superclass = clazz.getSuperclass();
-                if (superclass != null) {
-                    classDef.getExtends().add(new TypeDef(superclass.getName()));
+                if ( superclass != null )
+                {
+                    classDef.getExtends().add( new TypeDef( superclass.getName() ) );
                 }
             }
 
-            addModifiers(classDef.getModifiers(), clazz.getModifiers());
+            addModifiers( classDef.getModifiers(), clazz.getModifiers() );
 
-            binaryBuilder.beginClass(classDef);
+            binaryBuilder.beginClass( classDef );
 
             // add the constructors
             //
@@ -86,112 +95,131 @@
             // to the source code as that does not create a default constructor
             // if no constructor exists.
             Constructor<?>[] constructors = clazz.getDeclaredConstructors();
-            for (int i = 0; i < constructors.length; i++) {
+            for ( int i = 0; i < constructors.length; i++ )
+            {
                 binaryBuilder.beginConstructor();
-                MethodDef methodDef = createMethodDef(constructors[i], binaryBuilder);
+                MethodDef methodDef = createMethodDef( constructors[i], binaryBuilder );
                 binaryBuilder.endConstructor( methodDef );
             }
 
             // add the methods
             Method[] methods = clazz.getDeclaredMethods();
-            for (int i = 0; i < methods.length; i++) {
+            for ( int i = 0; i < methods.length; i++ )
+            {
                 binaryBuilder.beginMethod();
-                MethodDef methodDef = createMethodDef(methods[i], binaryBuilder);
+                MethodDef methodDef = createMethodDef( methods[i], binaryBuilder );
                 binaryBuilder.endMethod( methodDef );
             }
 
             Field[] fields = clazz.getDeclaredFields();
-            for (int i = 0; i < fields.length; i++) {
-                addField(fields[i], binaryBuilder);
+            for ( int i = 0; i < fields.length; i++ )
+            {
+                addField( fields[i], binaryBuilder );
             }
 
             binaryBuilder.endClass();
-            
+
             return true;
-        } catch (NoClassDefFoundError e) {
+        }
+        catch ( NoClassDefFoundError e )
+        {
             return false;
         }
     }
-    
-    private void addModifiers(Set<String> set, int modifier) {
-        String modifierString = Modifier.toString(modifier);
-        for (StringTokenizer stringTokenizer = new StringTokenizer(modifierString); stringTokenizer.hasMoreTokens();) {
-            set.add(stringTokenizer.nextToken());
+
+    private void addModifiers( Set<String> set, int modifier )
+    {
+        String modifierString = Modifier.toString( modifier );
+        for ( StringTokenizer stringTokenizer = new StringTokenizer( modifierString ); stringTokenizer.hasMoreTokens(); )
+        {
+            set.add( stringTokenizer.nextToken() );
         }
     }
 
-    private void addField(Field field, ModelBuilder binaryBuilder) {
+    private void addField( Field field, ModelBuilder binaryBuilder )
+    {
         FieldDef fieldDef = new FieldDef( field.getName() );
         Class<?> fieldType = field.getType();
-        fieldDef.setType( getTypeDef(fieldType) );
-        fieldDef.setDimensions( getDimension(fieldType) );
+        fieldDef.setType( getTypeDef( fieldType ) );
+        fieldDef.setDimensions( getDimension( fieldType ) );
         fieldDef.setEnumConstant( field.isEnumConstant() );
-        addModifiers( fieldDef.getModifiers(), field.getModifiers());
-        binaryBuilder.addField(fieldDef);
+        addModifiers( fieldDef.getModifiers(), field.getModifiers() );
+        binaryBuilder.beginField( fieldDef );
+        binaryBuilder.endField();
     }
 
-    private MethodDef createMethodDef(Member member, ModelBuilder binaryBuilder) {
+    private MethodDef createMethodDef( Member member, ModelBuilder binaryBuilder )
+    {
         MethodDef methodDef = new MethodDef();
         // The name of constructors are qualified. Need to strip it.
         // This will work for regular methods too, since -1 + 1 = 0
-        int lastDot = member.getName().lastIndexOf('.');
-        methodDef.setName(member.getName().substring(lastDot + 1));
+        int lastDot = member.getName().lastIndexOf( '.' );
+        methodDef.setName( member.getName().substring( lastDot + 1 ) );
 
-        addModifiers(methodDef.getModifiers(), member.getModifiers());
+        addModifiers( methodDef.getModifiers(), member.getModifiers() );
         Class<?>[] exceptions;
         Class<?>[] parameterTypes;
-        if (member instanceof Method) {
-            methodDef.setConstructor(false);
+        if ( member instanceof Method )
+        {
+            methodDef.setConstructor( false );
 
             // For some stupid reason, these methods are not defined in Member,
             // but in both Method and Construcotr.
-            exceptions = ((Method) member).getExceptionTypes();
-            parameterTypes = ((Method) member).getParameterTypes();
+            exceptions = ( (Method) member ).getExceptionTypes();
+            parameterTypes = ( (Method) member ).getParameterTypes();
 
-            Class<?> returnType = ((Method) member).getReturnType();
-            methodDef.setReturnType(getTypeDef(returnType));
-            methodDef.setDimensions(getDimension(returnType));
+            Class<?> returnType = ( (Method) member ).getReturnType();
+            methodDef.setReturnType( getTypeDef( returnType ) );
+            methodDef.setDimensions( getDimension( returnType ) );
 
-        } else {
-            methodDef.setConstructor(true);
+        }
+        else
+        {
+            methodDef.setConstructor( true );
 
-            exceptions = ((Constructor<?>) member).getExceptionTypes();
-            parameterTypes = ((Constructor<?>) member).getParameterTypes();
+            exceptions = ( (Constructor<?>) member ).getExceptionTypes();
+            parameterTypes = ( (Constructor<?>) member ).getParameterTypes();
         }
-        for (int j = 0; j < exceptions.length; j++) {
+        for ( int j = 0; j < exceptions.length; j++ )
+        {
             Class<?> exception = exceptions[j];
-            methodDef.getExceptions().add(getTypeDef(exception));
+            methodDef.getExceptions().add( getTypeDef( exception ) );
         }
-        for (int j = 0; j < parameterTypes.length; j++) {
+        for ( int j = 0; j < parameterTypes.length; j++ )
+        {
             FieldDef param = new FieldDef( "p" + j );
             Class<?> parameterType = parameterTypes[j];
-            param.setType( getTypeDef(parameterType) );
-            param.setDimensions( getDimension(parameterType) );
+            param.setType( getTypeDef( parameterType ) );
+            param.setDimensions( getDimension( parameterType ) );
             binaryBuilder.addParameter( param );
         }
         return methodDef;
     }
 
-    private static int getDimension(Class<?> c) {
-        return c.getName().lastIndexOf('[') + 1;
+    private static int getDimension( Class<?> c )
+    {
+        return c.getName().lastIndexOf( '[' ) + 1;
     }
 
-    private static String getTypeName(Class<?> c) {
+    private static String getTypeName( Class<?> c )
+    {
         return c.getComponentType() != null ? c.getComponentType().getName() : c.getName();
     }
-    
-    private static TypeDef getTypeDef(Class<?> c) {
-        return new TypeDef(getTypeName(c));
+
+    private static TypeDef getTypeDef( Class<?> c )
+    {
+        return new TypeDef( getTypeName( c ) );
     }
-    
 
-    private String getPackageName(String fullClassName) {
-        int lastDot = fullClassName.lastIndexOf('.');
-        return lastDot == -1 ? "" : fullClassName.substring(0, lastDot);
+    private String getPackageName( String fullClassName )
+    {
+        int lastDot = fullClassName.lastIndexOf( '.' );
+        return lastDot == -1 ? "" : fullClassName.substring( 0, lastDot );
     }
 
-    private String getClassName(String fullClassName) {
-        int lastDot = fullClassName.lastIndexOf('.');
-        return lastDot == -1 ? fullClassName : fullClassName.substring(lastDot + 1);
+    private String getClassName( String fullClassName )
+    {
+        int lastDot = fullClassName.lastIndexOf( '.' );
+        return lastDot == -1 ? fullClassName : fullClassName.substring( lastDot + 1 );
     }
 }

Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/builder/ModelBuilderTest.java (1307 => 1308)

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/builder/ModelBuilderTest.java	2011-09-04 11:11:58 UTC (rev 1307)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/builder/ModelBuilderTest.java	2011-09-04 12:44:47 UTC (rev 1308)
@@ -478,7 +478,8 @@
         FieldDef fld = new FieldDef();
         fld.setName( "count" );
         fld.setType( new TypeDef("int") );
-        builder.addField(fld);
+        builder.beginField(fld);
+        builder.endField();
         builder.endClass();
 
         JavaSource source = builder.getSource();
@@ -496,7 +497,8 @@
         FieldDef fld = new FieldDef();
         fld.getModifiers().add("blah2");
         fld.getModifiers().add("blah");
-        builder.addField(fld);
+        builder.beginField(fld);
+        builder.endField();
         builder.endClass();
 
         JavaSource source = builder.getSource();
@@ -515,7 +517,8 @@
         fld.setName( "count" );
         fld.setType( new TypeDef("int") );
         fld.setDimensions( 0 );
-        builder.addField(fld);
+        builder.beginField(fld);
+        builder.endField();
         builder.endClass();
 
         JavaSource source = builder.getSource();
@@ -533,7 +536,8 @@
         fld.setType( new TypeDef("int") );
         fld.setDimensions( 1 );
         
-        builder.addField(fld);
+        builder.beginField(fld);
+        builder.endField();
         builder.endClass();
 
         JavaSource source = builder.getSource();
@@ -550,7 +554,8 @@
         fld.setName( "count" );
         fld.setType( new TypeDef("int") );
         fld.setDimensions( 2 );
-        builder.addField(fld);
+        builder.beginField(fld);
+        builder.endField();
         builder.endClass();
 
         JavaSource source = builder.getSource();
@@ -631,7 +636,8 @@
         builder.beginClass(new ClassDef());
 
         builder.addJavaDoc("Hello");
-        builder.addField(new FieldDef());
+        builder.beginField(new FieldDef());
+        builder.endField();
         builder.endClass();
 
         JavaSource source = builder.getSource();
@@ -644,14 +650,16 @@
         builder.addJavaDoc("Thing");
         builder.beginClass(new ClassDef());
 
-        builder.addField(new FieldDef());// f0
+        builder.beginField(new FieldDef());// f0
+        builder.endField();
 
         builder.addJavaDoc("Hello");
         builder.beginMethod();
         builder.endMethod(new MethodDef());//m0
 
         builder.addJavaDoc("Hello field");
-        builder.addField(new FieldDef());//f1
+        builder.beginField(new FieldDef());//f1
+        builder.endField();
 
         builder.beginMethod();
         builder.endMethod(new MethodDef());//m1
@@ -735,7 +743,8 @@
 
         builder.addJavaDoc("");
         builder.addJavaDocTag(new TagDef("chairs", "are boring"));
-        builder.addField(new FieldDef());
+        builder.beginField(new FieldDef());
+        builder.endField();
         builder.endClass();
 
         JavaSource source = builder.getSource();

Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/parser/ParserTest.java (1307 => 1308)

--- trunk/qdox/src/test/java/com/thoughtworks/qdox/parser/ParserTest.java	2011-09-04 11:11:58 UTC (rev 1307)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/parser/ParserTest.java	2011-09-04 12:44:47 UTC (rev 1308)
@@ -1706,7 +1706,8 @@
 
         // verify
         verify(builder).beginClass( classCaptor.capture() );
-        verify(builder).addField( fieldCaptor.capture() );
+        verify(builder).beginField( fieldCaptor.capture() );
+        verify(builder).endField();
         verify(builder).endClass();
         
         ClassDef cls = classCaptor.getValue();
@@ -1745,7 +1746,8 @@
 
         // verify
         verify( builder ).beginClass( classCaptor.capture() );
-        verify( builder ).addField( fieldCaptor.capture() );
+        verify( builder ).beginField( fieldCaptor.capture() );
+        verify( builder ).endField();
         verify( builder ).endClass();
 
         ClassDef cls = classCaptor.getValue();
@@ -1785,9 +1787,10 @@
         ArgumentCaptor<FieldDef> fieldCaptor = ArgumentCaptor.forClass(FieldDef.class);
         
         // verify
-        verify(builder).beginClass( classCaptor.capture() );
-        verify(builder).addField( fieldCaptor.capture() );
-        verify(builder).endClass();
+        verify( builder ).beginClass( classCaptor.capture() );
+        verify( builder ).beginField( fieldCaptor.capture() );
+        verify( builder ).endField();
+        verify( builder ).endClass();
         ClassDef cls = classCaptor.getValue();
         assertEquals( "MyClass", cls.getName() );
         FieldDef fld = fieldCaptor.getValue();
@@ -1822,9 +1825,10 @@
         ArgumentCaptor<FieldDef> fieldCaptor = ArgumentCaptor.forClass(FieldDef.class);
 
         // verify
-        verify(builder).beginClass( classCaptor.capture() );
-        verify(builder, times(2)).addField( fieldCaptor.capture() );
-        verify(builder).endClass();
+        verify( builder ).beginClass( classCaptor.capture() );
+        verify( builder, times( 2 ) ).beginField( fieldCaptor.capture() );
+        verify( builder, times( 2 ) ).endField();
+        verify( builder ).endClass();
         
         ClassDef cls = classCaptor.getValue();
         assertEquals( "MyClass", cls.getName() );
@@ -1864,7 +1868,8 @@
 
         // verify
         verify( builder ).beginClass( classCaptor.capture() );
-        verify( builder ).addField( fieldCaptor.capture() );
+        verify( builder ).beginField( fieldCaptor.capture() );
+        verify( builder ).endField();
         verify( builder ).endClass();
 
         ClassDef cls = classCaptor.getValue();
@@ -1906,7 +1911,8 @@
 
         // verify
         verify( builder ).beginClass( classCaptor.capture() );
-        verify( builder ).addField( fieldCaptor.capture() );
+        verify( builder ).beginField( fieldCaptor.capture() );
+        verify( builder ).endField();
         verify( builder ).endClass();
 
         ClassDef cls = classCaptor.getValue();
@@ -2047,9 +2053,10 @@
         ArgumentCaptor<FieldDef> fieldCaptor = ArgumentCaptor.forClass(FieldDef.class);
         
         // verify
-        verify(builder).beginClass( classCaptor.capture() );
-        verify(builder).addField( fieldCaptor.capture() );
-        verify(builder).endClass();
+        verify( builder ).beginClass( classCaptor.capture() );
+        verify( builder ).beginField( fieldCaptor.capture() );
+        verify( builder ).endField();
+        verify( builder ).endClass();
         
         ClassDef cls = classCaptor.getValue();
         assertEquals( "x", cls.getName() );
@@ -2085,7 +2092,8 @@
 
         // verify
         verify( builder ).beginClass( classCaptor.capture() );
-        verify( builder ).addField( fieldCaptor.capture() );
+        verify( builder ).beginField( fieldCaptor.capture() );
+        verify( builder ).endField();
         verify( builder ).endClass();
 
         ClassDef cls = classCaptor.getValue();
@@ -2125,7 +2133,8 @@
 
         // verify
         verify( builder ).beginClass( classCaptor.capture() );
-        verify( builder ).addField( fieldCaptor.capture() );
+        verify( builder ).beginField( fieldCaptor.capture() );
+        verify( builder ).endField();
         verify( builder ).endClass();
 
         ClassDef cls = classCaptor.getValue();
@@ -2163,7 +2172,8 @@
 
         // verify
         verify( builder ).beginClass( classCaptor.capture() );
-        verify( builder ).addField( fieldCaptor.capture() );
+        verify( builder ).beginField( fieldCaptor.capture() );
+        verify( builder ).endField();
         verify( builder ).endClass();
 
         ClassDef cls = classCaptor.getValue();
@@ -2202,9 +2212,10 @@
         ArgumentCaptor<FieldDef> fieldCaptor = ArgumentCaptor.forClass(FieldDef.class);
 
         // verify
-        verify(builder).beginClass( classCaptor.capture() );
-        verify(builder).addField( fieldCaptor.capture() );
-        verify(builder).endClass();
+        verify( builder ).beginClass( classCaptor.capture() );
+        verify( builder ).beginField( fieldCaptor.capture() );
+        verify( builder ).endField();
+        verify( builder ).endClass();
 
         ClassDef cls = classCaptor.getValue();
         assertEquals( "x", cls.getName() );
@@ -2245,7 +2256,8 @@
 
         // verify
         verify( builder ).beginClass( classCaptor.capture() );
-        verify( builder, times( 2 ) ).addField( fieldCaptor.capture() );
+        verify( builder, times( 2 ) ).beginField( fieldCaptor.capture() );
+        verify( builder, times( 2 ) ).endField();
         verify( builder ).endClass();
 
         ClassDef cls = classCaptor.getValue();
@@ -2617,7 +2629,8 @@
         verify( builder ).beginClass( classCaptor.capture() );
         // verify(mockBuilder).beginConstructor();
         // verify(mockBuilder).endConstructor(mth);
-        verify( builder, times( 2 ) ).addField( f.capture() );
+        verify( builder, times( 2 ) ).beginField( f.capture() );
+        verify( builder, times( 2 ) ).endField();
         verify( builder ).endClass();
 
         ClassDef cls = classCaptor.getValue();
@@ -2655,11 +2668,12 @@
         ArgumentCaptor<FieldDef> f = ArgumentCaptor.forClass(FieldDef.class);
 
         // verify
-        verify(builder).beginClass( classCaptor.capture() );
-//      verify(mockBuilder).beginConstructor();
-//      verify(mockBuilder).endConstructor(mth);
-        verify(builder).addField( f.capture() );
-        verify(builder).endClass();
+        verify( builder ).beginClass( classCaptor.capture() );
+        // verify(mockBuilder).beginConstructor();
+        // verify(mockBuilder).endConstructor(mth);
+        verify( builder ).beginField( f.capture() );
+        verify( builder ).endField();
+        verify( builder ).endClass();
         
         ClassDef cls = classCaptor.getValue();
         assertEquals( "x", cls.getName() );


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to