Title: [676] trunk/qdox/src/grammar: fix for QDOX-178: Access parameter annotations

Diff

Modified: trunk/qdox/src/grammar/parser.y (675 => 676)

--- trunk/qdox/src/grammar/parser.y	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/grammar/parser.y	2009-10-12 15:13:33 UTC (rev 676)
@@ -466,34 +466,40 @@
 // ----- METHOD
 
 method:
-    modifiers typeparams type IDENTIFIER methoddef dimensions opt_exceptions memberend {
+    modifiers typeparams type IDENTIFIER {
+      builder.beginMethod();
+    } methoddef dimensions opt_exceptions memberend {
         mth.lineNumber = line;
         mth.modifiers.addAll(modifiers); modifiers.clear(); 
         mth.returnType = $3;
-        mth.dimensions = $6;
+        mth.dimensions = $7;
         mth.name = $4;
-        mth.body = $8;
-        builder.addMethod(mth);
+        mth.body = $9;
+        builder.endMethod(mth);
         mth = new MethodDef(); 
     } |
-    modifiers type IDENTIFIER methoddef dimensions opt_exceptions memberend {
+    modifiers type IDENTIFIER {
+      builder.beginMethod();
+    } methoddef dimensions opt_exceptions memberend {
         mth.lineNumber = line;
         mth.modifiers.addAll(modifiers); modifiers.clear();
         mth.returnType = $2;
-        mth.dimensions = $5;
+        mth.dimensions = $6;
         mth.name = $3;
-        mth.body = $7;
-        builder.addMethod(mth);
+        mth.body = $8;
+        builder.endMethod(mth);
         mth = new MethodDef();
     };
 
 constructor:
-    modifiers IDENTIFIER methoddef opt_exceptions memberend {
+    modifiers IDENTIFIER {
+      builder.beginMethod();
+    } methoddef opt_exceptions memberend {
         mth.lineNumber = line;
         mth.modifiers.addAll(modifiers); modifiers.clear(); 
         mth.constructor = true; mth.name = $2;
-        mth.body = $5;
-        builder.addMethod(mth);
+        mth.body = $6;
+        builder.endMethod(mth);
         mth = new MethodDef(); 
     };
 
@@ -517,7 +523,7 @@
         param.type = $3;
         param.dimensions = $5.dimensions;
         param.isVarArgs = $4;
-        mth.params.add(param);
+        builder.addParameter(param);
         param = new FieldDef();
     };
 
@@ -525,7 +531,7 @@
     /* empty */ { $$ = false; } |
     DOTDOTDOT   { $$ = true; } ;
 
-opt_annotations: | opt_annotations annotation;
+opt_annotations: | opt_annotations annotation { builder.addAnnotation((Annotation) $2); };
 
 opt_parammodifiers: |
     opt_parammodifiers modifier { param.modifiers.add($2); };

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/JavaDocBuilder.java (675 => 676)

--- trunk/qdox/src/java/com/thoughtworks/qdox/JavaDocBuilder.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/JavaDocBuilder.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -274,15 +274,15 @@
             Class exception = exceptions[j];
             methodDef.exceptions.add(exception.getName());
         }
+        binaryBuilder.addMethod(methodDef);
         for (int j = 0; j < parameterTypes.length; j++) {
             FieldDef param = new FieldDef();
             Class parameterType = parameterTypes[j];
             param.name = "p" + j;
             param.type = getTypeDef(parameterType);
             param.dimensions = getDimension(parameterType);
-            methodDef.params.add(param);
+            binaryBuilder.addParameter( param );
         }
-        binaryBuilder.addMethod(methodDef);
     }
 
     private static final int getDimension(Class c) {

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaMethod.java (675 => 676)

--- trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaMethod.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaMethod.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -1,6 +1,7 @@
 package com.thoughtworks.qdox.model;
 
 import java.beans.Introspector;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.ArrayList;
 
@@ -8,7 +9,8 @@
 
 	private TypeVariable[] typeParameters = TypeVariable.EMPTY_ARRAY; 
     private Type returns = Type.VOID;
-    private JavaParameter[] parameters = JavaParameter.EMPTY_ARRAY;
+    private List parameters = new LinkedList();
+    private JavaParameter[] parametersArray = JavaParameter.EMPTY_ARRAY;
     private Type[] exceptions = Type.EMPTY_ARRAY;
     private boolean constructor;
     private String sourceCode;
@@ -30,7 +32,11 @@
     }
 
     public JavaParameter[] getParameters() {
-        return parameters;
+        if(parametersArray == null) {
+            parametersArray = new JavaParameter[parameters.size()];
+            parameters.toArray( parametersArray );
+        }
+        return parametersArray;
     }
 
     public JavaParameter getParameterByName(String name) {
@@ -73,8 +79,8 @@
 
         result.write(name);
         result.write('(');
-        for (int i = 0; i < parameters.length; i++) {
-            JavaParameter parameter = parameters[i];
+        for (int i = 0; i < getParameters().length; i++) {
+            JavaParameter parameter = parametersArray[i];
             if (i > 0) result.write(", ");
             if (isDeclaration) {
                 result.write(parameter.getType().toString());
@@ -136,11 +142,10 @@
         this.returns = returns;
     }
 
-    public void setParameters(JavaParameter[] parameters) {
-        for (int i = 0; i < parameters.length; i++) {
-            parameters[i].setParentMethod(this);
-        }
-        this.parameters = parameters;
+    public void addParameter(JavaParameter javaParameter) {
+        javaParameter.setParentMethod( this );
+        parameters.add( javaParameter );
+        parametersArray = null;
     }
 
     public void setExceptions(Type[] exceptions) {
@@ -180,10 +185,10 @@
      */
     public boolean signatureMatches(String name, Type[] parameterTypes) {
         if (!name.equals(this.name)) return false;
-        parameterTypes = parameterTypes == null ? new Type[0] : parameterTypes;
-        if (parameterTypes.length != this.parameters.length) return false;
-        for (int i = 0; i < parameters.length; i++) {
-            if (!parameters[i].getType().equals(parameterTypes[i])) {
+        parameterTypes = (parameterTypes == null ? new Type[0] : parameterTypes);
+        if (parameterTypes.length != this.getParameters().length) return false;
+        for (int i = 0; i < parametersArray.length; i++) {
+            if (!parametersArray[i].getType().equals(parameterTypes[i])) {
                 return false;
             }
         }

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaParameter.java (675 => 676)

--- trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaParameter.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/model/JavaParameter.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -2,7 +2,7 @@
 
 import java.io.Serializable;
 
-public class JavaParameter implements Serializable {
+public class JavaParameter extends AbstractBaseJavaEntity implements Serializable {
 
     public static final JavaParameter[]
             EMPTY_ARRAY = new JavaParameter[0];

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/model/ModelBuilder.java (675 => 676)

--- trunk/qdox/src/java/com/thoughtworks/qdox/model/ModelBuilder.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/model/ModelBuilder.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -32,6 +32,7 @@
     private final JavaSource source;
     private JavaClassParent currentParent;
     private JavaClass currentClass;
+    private JavaMethod currentMethod;
     private List currentAnnoDefs;
     private String lastComment;
     private List lastTagSet;
@@ -187,7 +188,16 @@
     }
 
     public void addMethod(MethodDef def) {
-        JavaMethod currentMethod = new JavaMethod();
+    	beginMethod();
+    	endMethod(def);
+    }
+    
+    public void beginMethod() {
+    	currentMethod = new JavaMethod();
+    	setAnnotations(currentMethod);
+    }
+    
+    public void endMethod(MethodDef def) {
         currentMethod.setParentClass(currentClass);
         currentMethod.setLineNumber(def.lineNumber);
 
@@ -207,17 +217,6 @@
             currentMethod.setTypeParameters(typeParams);
         }
         
-        // parameters
-        {
-            JavaParameter[] params = new JavaParameter[def.params.size()];
-            int i = 0;
-            for (Iterator iterator = def.params.iterator(); iterator.hasNext();) {
-                FieldDef fieldDef = (FieldDef) iterator.next();
-                params[i++] = new JavaParameter(createType(fieldDef.type, fieldDef.dimensions), fieldDef.name, fieldDef.isVarArgs);
-            }
-            currentMethod.setParameters(params);
-        }
-
         // exceptions
         {
             Type[] exceptions = new Type[def.exceptions.size()];
@@ -240,9 +239,6 @@
         // javadoc
         addJavaDoc(currentMethod);
 
-        // annotations
-        setAnnotations( currentMethod );
-
         currentClass.addMethod(currentMethod);
     }
 
@@ -287,6 +283,12 @@
 
         currentClass.addField(currentField);
     }
+	
+	public void addParameter(FieldDef fieldDef) {
+        JavaParameter jParam = new JavaParameter(createType(fieldDef.type, fieldDef.dimensions), fieldDef.name, fieldDef.isVarArgs);
+        setAnnotations( jParam );
+        currentMethod.addParameter( jParam );
+	}
 
     private void setAnnotations( final AbstractBaseJavaEntity entity ) {
         if( !currentAnnoDefs.isEmpty() ) {

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/parser/Builder.java (675 => 676)

--- trunk/qdox/src/java/com/thoughtworks/qdox/parser/Builder.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/parser/Builder.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -23,8 +23,11 @@
 
     void endClass();
 
-    void addMethod(MethodDef def);
+    void beginMethod();
+    void endMethod(MethodDef def);
 
+    void addParameter(FieldDef def);
+    
     void addField(FieldDef def);
 
     void addAnnotation(Annotation annotation);

Modified: trunk/qdox/src/test/com/thoughtworks/qdox/AnnotationsTest.java (675 => 676)

--- trunk/qdox/src/test/com/thoughtworks/qdox/AnnotationsTest.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/test/com/thoughtworks/qdox/AnnotationsTest.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -4,6 +4,7 @@
 
 import junit.framework.TestCase;
 
+import com.thoughtworks.qdox.model.Annotation;
 import com.thoughtworks.qdox.model.JavaClass;
 import com.thoughtworks.qdox.model.JavaMethod;
 import com.thoughtworks.qdox.model.Type;
@@ -228,4 +229,17 @@
     			"}";   
     	builder.addSource(new StringReader(source));
     }
+    
+    public void testParameterAnnotations() throws Exception {
+        String source = "class Foo {\n" +
+        		"  @NativeAccessible\n" + 
+        		"  static void get_tmp_dir( String targetfilename, @ParamInfo( direction = ParamInfo.Direction.OUT ) byte[] tmpDirOutput ) throws IOException {}\n" + 
+        		"}";
+        builder.addSource( new StringReader( source ) );
+        JavaMethod jMethod = builder.getClasses()[0].getMethods()[0];
+        assertEquals( "NativeAccessible", jMethod.getAnnotations()[0].getType().getValue() );
+        Annotation annotation = jMethod.getParameters()[1].getAnnotations()[0];
+        assertEquals( "ParamInfo", annotation.getType().getValue() );
+        assertEquals( "ParamInfo.Direction.OUT", annotation.getProperty( "direction" ).getParameterValue() );
+    }
 }

Modified: trunk/qdox/src/test/com/thoughtworks/qdox/model/JavaClassTest.java (675 => 676)

--- trunk/qdox/src/test/com/thoughtworks/qdox/model/JavaClassTest.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/test/com/thoughtworks/qdox/model/JavaClassTest.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -435,11 +435,8 @@
         JavaMethod method = new JavaMethod();
         method.setReturns(new Type("void"));
         method.setName("doStuff");
-        JavaParameter[] parameters = {
-            new JavaParameter(new Type("int"), "x"),
-            new JavaParameter(new Type("double"), "y"),
-        };
-        method.setParameters(parameters);
+        method.addParameter( new JavaParameter(new Type("int"), "x") );
+        method.addParameter( new JavaParameter(new Type("double"), "y") );
         cls.addMethod(method);
 
         Type[] correctTypes = type(new String[]{"int", "double"});
@@ -487,11 +484,7 @@
 
     public void testGetBeanPropertiesFindsSimpleProperties() throws Exception {
         JavaMethod setFooMethod = new JavaMethod("setFoo");
-        setFooMethod.setParameters(
-            new JavaParameter[] {
-                new JavaParameter(new Type("int"), "foo")
-            }
-        );
+        setFooMethod.addParameter(new JavaParameter(new Type("int"), "foo"));
         cls.addMethod(setFooMethod);
 
         JavaMethod getFooMethod = new JavaMethod(new Type("int"), "getFoo");

Modified: trunk/qdox/src/test/com/thoughtworks/qdox/model/JavaMethodTest.java (675 => 676)

--- trunk/qdox/src/test/com/thoughtworks/qdox/model/JavaMethodTest.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/test/com/thoughtworks/qdox/model/JavaMethodTest.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -47,10 +47,8 @@
             new Type("FishException"),
             new Type("FruitException"),
         });
-        mth.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int"), "count"),
-            new JavaParameter(new Type("MyThing"), "t")
-        });
+        mth.addParameter(new JavaParameter(new Type("int"), "count"));
+        mth.addParameter(new JavaParameter(new Type("MyThing"), "t"));
     }
 
     public void testGetCodeBlockSimple() throws Exception {
@@ -62,28 +60,24 @@
     public void testGetCodeBlockOneParam() throws Exception {
         mth.setName("blah");
         mth.setReturns(new Type("void"));
-        mth.setParameters(new JavaParameter[]{new JavaParameter(new Type("String"), "thingy")});
+        mth.addParameter(new JavaParameter(new Type("String"), "thingy"));
         assertEquals("void blah(String thingy);\n", mth.getCodeBlock());
     }
 
     public void testGetCodeBlockTwoParams() throws Exception {
         mth.setName("blah");
         mth.setReturns(new Type("void"));
-        mth.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int"), "count"),
-            new JavaParameter(new Type("MyThing"), "t")
-        });
+        mth.addParameter(new JavaParameter(new Type("int"), "count"));
+        mth.addParameter(new JavaParameter(new Type("MyThing"), "t"));
         assertEquals("void blah(int count, MyThing t);\n", mth.getCodeBlock());
     }
 
     public void testGetCodeBlockThreeParams() throws Exception {
         mth.setName("blah");
         mth.setReturns(new Type("void"));
-        mth.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int"), "count"),
-            new JavaParameter(new Type("MyThing"), "t"),
-            new JavaParameter(new Type("java.lang.Meat"), "beef")
-        });
+        mth.addParameter(new JavaParameter(new Type("int"), "count"));
+        mth.addParameter(new JavaParameter(new Type("MyThing"), "t"));
+        mth.addParameter(new JavaParameter(new Type("java.lang.Meat"), "beef"));
         assertEquals("void blah(int count, MyThing t, java.lang.Meat beef);\n", mth.getCodeBlock());
     }
 
@@ -149,10 +143,8 @@
     public void testGetCodeBlockParamArray() throws Exception {
         mth.setName("blah");
         mth.setReturns(new Type("void"));
-        mth.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int", 2), "count"),
-            new JavaParameter(new Type("MyThing", 1), "t")
-        });
+        mth.addParameter(new JavaParameter(new Type("int", 2), "count"));
+        mth.addParameter(new JavaParameter(new Type("MyThing", 1), "t"));
         assertEquals("void blah(int[][] count, MyThing[] t);\n", mth.getCodeBlock());
     }
 
@@ -209,46 +201,36 @@
 
     public void testEqualsWithParameters() throws Exception {
         mth.setName("thing");
-        mth.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int", 1), "blah"),
-            new JavaParameter(new Type("java.lang.String", 2), "thing"),
-            new JavaParameter(new Type("X", 3), "")
-        });
+        mth.addParameter(new JavaParameter(new Type("int", 1), "blah"));
+        mth.addParameter(new JavaParameter(new Type("java.lang.String", 2), "thing"));
+        mth.addParameter(new JavaParameter(new Type("X", 3), ""));
         mth.setReturns(new Type("void"));
 
         JavaMethod m2 = new JavaMethod();
         m2.setName("thing");
-        m2.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int", 1), "blah"),
-            new JavaParameter(new Type("java.lang.String", 2), "anotherName"),
-            new JavaParameter(new Type("X", 3), "blah")
-        });
+        m2.addParameter(new JavaParameter(new Type("int", 1), "blah"));
+        m2.addParameter(new JavaParameter(new Type("java.lang.String", 2), "anotherName"));
+        m2.addParameter(new JavaParameter(new Type("X", 3), "blah"));
         m2.setReturns(new Type("void"));
 
         JavaMethod m3 = new JavaMethod();
         m3.setName("thing");
-        m3.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int", 1), "blah"),
-            new JavaParameter(new Type("java.lang.String", 2), "thing"),
-        });
+        m3.addParameter(new JavaParameter(new Type("int", 1), "blah"));
+        m3.addParameter(new JavaParameter(new Type("java.lang.String", 2), "thing"));
         m3.setReturns(new Type("void"));
 
         JavaMethod m4 = new JavaMethod();
         m4.setName("thing");
-        m4.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int", 1), "blah"),
-            new JavaParameter(new Type("java.lang.String", 2), "thing"),
-            new JavaParameter(new Type("TTTTTTTT", 3), "blah") // name
-        });
+        m4.addParameter(new JavaParameter(new Type("int", 1), "blah"));
+        m4.addParameter(new JavaParameter(new Type("java.lang.String", 2), "thing"));
+        m4.addParameter(new JavaParameter(new Type("TTTTTTTT", 3), "blah")); //name
         m4.setReturns(new Type("void"));
 
         JavaMethod m5 = new JavaMethod();
         m5.setName("thing");
-        m5.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int", 1), "blah"),
-            new JavaParameter(new Type("java.lang.String", 2), "thing"),
-            new JavaParameter(new Type("X", 9), "blah") // dimension
-        });
+        m5.addParameter(new JavaParameter(new Type("int", 1), "blah"));
+        m5.addParameter(new JavaParameter(new Type("java.lang.String", 2), "thing"));
+        m5.addParameter(new JavaParameter(new Type("X", 9), "blah")); // dimension
         m5.setReturns(new Type("void"));
 
         assertEquals(mth, m2);
@@ -260,28 +242,22 @@
 
     public void testHashCode() throws Exception {
         mth.setName("thing");
-        mth.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int", 1), "blah"),
-            new JavaParameter(new Type("java.lang.String", 2), "thing"),
-            new JavaParameter(new Type("X", 3), "")
-        });
+        mth.addParameter(new JavaParameter(new Type("int", 1), "blah"));
+        mth.addParameter(new JavaParameter(new Type("java.lang.String", 2), "thing"));
+        mth.addParameter(new JavaParameter(new Type("X", 3), ""));
         mth.setReturns(new Type("void"));
 
         JavaMethod m2 = new JavaMethod();
         m2.setName("thing");
-        m2.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int", 1), "blah"),
-            new JavaParameter(new Type("java.lang.String", 2), "anotherName"),
-            new JavaParameter(new Type("X", 3), "blah")
-        });
+        m2.addParameter(new JavaParameter(new Type("int", 1), "blah"));
+        m2.addParameter(new JavaParameter(new Type("java.lang.String", 2), "anotherName"));
+        m2.addParameter(new JavaParameter(new Type("X", 3), "blah"));
         m2.setReturns(new Type("void"));
 
         JavaMethod m3 = new JavaMethod();
         m3.setName("thing");
-        m3.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int", 1), "blah"),
-            new JavaParameter(new Type("java.lang.String", 2), "thing"),
-        });
+        m3.addParameter(new JavaParameter(new Type("int", 1), "blah"));
+        m3.addParameter(new JavaParameter(new Type("java.lang.String", 2), "thing"));
         m3.setReturns(new Type("void"));
 
         JavaMethod c1 = new JavaMethod();
@@ -299,10 +275,8 @@
 
     public void testSignatureMatches() throws Exception {
         mth.setName("thing");
-        mth.setParameters(new JavaParameter[]{
-            new JavaParameter(new Type("int"), "x"),
-            new JavaParameter(new Type("long", 2), "y")
-        });
+        mth.addParameter(new JavaParameter(new Type("int"), "x"));
+        mth.addParameter(new JavaParameter(new Type("long", 2), "y"));
         mth.setReturns(new Type("void"));
 
         Type[] correctTypes = new Type[]{
@@ -332,14 +306,10 @@
     }
 
     public void testCanGetParameterByName() throws Exception {
-        JavaParameter paramX =
-                new JavaParameter(new Type("int"), "x");
-        JavaParameter[] parameters = new JavaParameter[]{
-            paramX,
-            new JavaParameter(new Type("string"), "y")
-        };
-        mth.setParameters(parameters);
-
+        JavaParameter paramX = new JavaParameter(new Type("int"), "x");
+        mth.addParameter(paramX);
+        mth.addParameter(new JavaParameter(new Type("string"), "y"));
+        
         assertEquals(paramX, mth.getParameterByName("x"));
         assertEquals(null, mth.getParameterByName("z"));
     }
@@ -349,8 +319,7 @@
     	JavaMethod mthd = new JavaMethod(new Type("boolean"),"equals");
     	cls.addMethod(mthd);
     	mthd.setModifiers(new String[]{"public"});
-    	JavaParameter prmtr = new JavaParameter(new Type("java.lang.Object"), null);
-    	mthd.setParameters(new JavaParameter[] {prmtr});
+    	mthd.addParameter(new JavaParameter(new Type("java.lang.Object"), null));
     	assertEquals("public boolean java.lang.Object.equals(java.lang.Object)", mthd.toString());
     	
     }

Modified: trunk/qdox/src/test/com/thoughtworks/qdox/model/JavaParameterTest.java (675 => 676)

--- trunk/qdox/src/test/com/thoughtworks/qdox/model/JavaParameterTest.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/test/com/thoughtworks/qdox/model/JavaParameterTest.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -13,7 +13,7 @@
         assertNull(p.getParentMethod());
 
         JavaMethod m = new JavaMethod();
-        m.setParameters(new JavaParameter[]{p});
+        m.addParameter(p);
         assertSame(m, p.getParentMethod());
     }
 

Modified: trunk/qdox/src/test/com/thoughtworks/qdox/model/ModelBuilderTest.java (675 => 676)

--- trunk/qdox/src/test/com/thoughtworks/qdox/model/ModelBuilderTest.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/test/com/thoughtworks/qdox/model/ModelBuilderTest.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -366,18 +366,19 @@
         builder.beginClass(new ClassDef());
         MethodDef mth = new MethodDef();
 
+        builder.addMethod(mth);
+
         FieldDef f1 = new FieldDef();
         f1.name = "count";
         f1.type = new TypeDef("int");
         f1.modifiers.add("final");
-        mth.params.add(f1);
+        builder.addParameter( f1 );
 
         FieldDef f2 = new FieldDef();
         f2.name = "name";
         f2.type = new TypeDef("String");
-        mth.params.add(f2);
+        builder.addParameter( f2 );
 
-        builder.addMethod(mth);
         builder.endClass();
 
         JavaSource source = builder.getSource();
@@ -392,21 +393,22 @@
     public void testMethodParametersWithArrays() throws Exception {
         builder.beginClass(new ClassDef());
         MethodDef mth = new MethodDef();
+        builder.addMethod(mth);
 
         FieldDef f1 = new FieldDef();
         f1.name = "count";
         f1.type = new TypeDef("int");
         f1.modifiers.add("final");
         f1.dimensions = 1;
-        mth.params.add(f1);
+        builder.addParameter( f1 );
 
+
         FieldDef f2 = new FieldDef();
         f2.name = "name";
         f2.type = new TypeDef("String");
         f2.dimensions = 2;
-        mth.params.add(f2);
+        builder.addParameter( f2 );
 
-        builder.addMethod(mth);
         builder.endClass();
 
         JavaSource source = builder.getSource();

Modified: trunk/qdox/src/test/com/thoughtworks/qdox/parser/MockBuilder.java (675 => 676)

--- trunk/qdox/src/test/com/thoughtworks/qdox/parser/MockBuilder.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/test/com/thoughtworks/qdox/parser/MockBuilder.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -25,11 +25,15 @@
     private ExpectationCounter myBeginClassCalls = new ExpectationCounter("com.thoughtworks.qdox.parser.Builder BeginClassCalls");
     private ExpectationList myBeginClassParameter0Values = new ExpectationList("com.thoughtworks.qdox.parser.Builder.beginClass() : com.thoughtworks.qdox.parser.structs.ClassDef def");
     private ExpectationCounter myEndClassCalls = new ExpectationCounter("com.thoughtworks.qdox.parser.Builder EndClassCalls");
-    private ExpectationCounter myAddMethodCalls = new ExpectationCounter("com.thoughtworks.qdox.parser.Builder AddMethodCalls");
-    private ExpectationList myAddMethodParameter0Values = new ExpectationList("com.thoughtworks.qdox.parser.Builder.addMethod() : com.thoughtworks.qdox.parser.structs.MethodDef def");
+    private ExpectationCounter myBeginMethodCalls = new ExpectationCounter("com.thoughtworks.qdox.parser.Builder BeginMethodCalls");
+    private ExpectationCounter myEndMethodCalls = new ExpectationCounter("com.thoughtworks.qdox.parser.Builder EndMethodCalls");
+    private ExpectationList myEndMethodParameter0Values = new ExpectationList("com.thoughtworks.qdox.parser.Builder.endMethod() : com.thoughtworks.qdox.parser.structs.MethodDef def");
     private ExpectationCounter myAddFieldCalls = new ExpectationCounter("com.thoughtworks.qdox.parser.Builder AddFieldCalls");
     private ExpectationList myAddFieldParameter0Values = new ExpectationList("com.thoughtworks.qdox.parser.Builder.addField() : com.thoughtworks.qdox.parser.structs.FieldDef def");
+    private ExpectationCounter myAddParameterCalls = new ExpectationCounter("com.thoughtworks.qdox.parser.Builder AddParameterCalls");
+    private ExpectationList myAddParameter0Values = new ExpectationList("com.thoughtworks.qdox.parser.Builder.addParameter() : com.thoughtworks.qdox.parser.structs.FieldDef def");
 
+    
     public void setExpectedAddPackageCalls(int calls) {
         myAddPackageCalls.setExpected(calls);
     }
@@ -103,17 +107,20 @@
         myEndClassCalls.inc();
     }
 
-    public void setExpectedAddMethodCalls(int calls) {
-        myAddMethodCalls.setExpected(calls);
+    public void beginMethod() {
+        myBeginMethodCalls.inc();
     }
+    public void setExpectedEndMethodCalls(int calls) {
+        myEndMethodCalls.setExpected(calls);
+    }
 
     public void addExpectedAddMethodValues(MethodDef arg0) {
-        myAddMethodParameter0Values.addExpected(arg0);
+        myEndMethodParameter0Values.addExpected(arg0);
     }
 
-    public void addMethod(MethodDef arg0) {
-        myAddMethodCalls.inc();
-        myAddMethodParameter0Values.addActual(arg0);
+    public void endMethod(MethodDef arg0) {
+        myEndMethodCalls.inc();
+        myEndMethodParameter0Values.addActual(arg0);
     }
 
     public void setExpectedAddFieldCalls(int calls) {
@@ -146,8 +153,9 @@
         myBeginClassCalls.verify();
         myBeginClassParameter0Values.verify();
         myEndClassCalls.verify();
-        myAddMethodCalls.verify();
-        myAddMethodParameter0Values.verify();
+        myBeginMethodCalls.verify();
+        myEndMethodCalls.verify();
+        myEndMethodParameter0Values.verify();
         myAddFieldCalls.verify();
         myAddFieldParameter0Values.verify();
     }
@@ -160,4 +168,16 @@
     	return null;
     }
 
+    public void setExpectedAddParameterCalls(int calls) {
+        myAddParameterCalls.setExpected(calls);
+    }
+
+    public void addExpectedAddParameterValues(FieldDef arg0) {
+        myAddParameter0Values.addExpected(arg0);
+    }
+
+    public void addParameter(FieldDef arg0) {
+        myAddParameterCalls.inc();
+        myAddParameter0Values.addActual(arg0);
+    }
 }

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

--- trunk/qdox/src/test/com/thoughtworks/qdox/parser/ParserTest.java	2009-10-12 08:43:47 UTC (rev 675)
+++ trunk/qdox/src/test/com/thoughtworks/qdox/parser/ParserTest.java	2009-10-12 15:13:33 UTC (rev 676)
@@ -1067,8 +1067,9 @@
         FieldDef p1 = new FieldDef();
         p1.name = "numberOfTimes";
         p1.type = new TypeDef("int");
-        mth.params.add(p1);
+        
         builder.addExpectedAddMethodValues(mth);
+        builder.addExpectedAddParameterValues( p1 );
 
         // execute
         Parser parser = new Parser(lexer, builder);
@@ -1107,8 +1108,9 @@
         FieldDef p1 = new FieldDef();
         p1.name = "numberOfTimes";
         p1.type = new TypeDef("java.lang.String");
-        mth.params.add(p1);
+
         builder.addExpectedAddMethodValues(mth);
+        builder.addExpectedAddParameterValues( p1 );
 
         // execute
         Parser parser = new Parser(lexer, builder);
@@ -1146,12 +1148,12 @@
         FieldDef p1 = new FieldDef();
         p1.name = "numberOfTimes";
         p1.type = new TypeDef("int");
-        mth.params.add(p1);
         FieldDef p2 = new FieldDef();
         p2.name = "name";
         p2.type = new TypeDef("String");
-        mth.params.add(p2);
         builder.addExpectedAddMethodValues(mth);
+        builder.addExpectedAddParameterValues( p1 );
+        builder.addExpectedAddParameterValues( p2 );
 
         // execute
         Parser parser = new Parser(lexer, builder);
@@ -1192,16 +1194,16 @@
         FieldDef p1 = new FieldDef();
         p1.name = "numberOfTimes";
         p1.type = new TypeDef("int");
-        mth.params.add(p1);
         FieldDef p2 = new FieldDef();
         p2.name = "name";
         p2.type = new TypeDef("String");
-        mth.params.add(p2);
         FieldDef p3 = new FieldDef();
         p3.name = "x";
         p3.type = new TypeDef("boolean");
-        mth.params.add(p3);
         builder.addExpectedAddMethodValues(mth);
+        builder.addExpectedAddParameterValues( p1 );
+        builder.addExpectedAddParameterValues( p2 );
+        builder.addExpectedAddParameterValues( p3 );
 
         // execute
         Parser parser = new Parser(lexer, builder);
@@ -1240,9 +1242,9 @@
         p1.type = new TypeDef("int");
         p1.modifiers.add("final");
         p1.modifiers.add("volatile");
-        mth.params.add(p1);
         builder.addExpectedAddMethodValues(mth);
-
+        builder.addExpectedAddParameterValues( p1 );
+        
         // execute
         Parser parser = new Parser(lexer, builder);
         parser.parse();
@@ -1495,9 +1497,9 @@
         FieldDef p1 = new FieldDef();
         p1.name = "count";
         p1.type = new TypeDef("int");
-        mth.params.add(p1);
 
         builder.addExpectedAddMethodValues(mth);
+        builder.addExpectedAddParameterValues( p1 );
 
         // execute
         Parser parser = new Parser(lexer, builder);
@@ -1540,14 +1542,14 @@
         FieldDef p1 = new FieldDef();
         p1.name = "count";
         p1.type = new TypeDef("int");
-        mth.params.add(p1);
         FieldDef p2 = new FieldDef();
         p2.name = "thingy";
         p2.type = new TypeDef("java.lang.String");
-        mth.params.add(p2);
 
         builder.addExpectedAddMethodValues(mth);
-
+        builder.addExpectedAddParameterValues( p1 );
+        builder.addExpectedAddParameterValues( p2 );
+        
         // execute
         Parser parser = new Parser(lexer, builder);
         parser.parse();
@@ -2279,9 +2281,9 @@
         p1.name = "p1";
         p1.type = new TypeDef("int");
         p1.dimensions = 0;
-        mth.params.add(p1);
 
         builder.addExpectedAddMethodValues(mth);
+        builder.addExpectedAddParameterValues( p1 );
 
         // execute
         Parser parser = new Parser(lexer, builder);
@@ -2322,9 +2324,9 @@
         p1.name = "p1";
         p1.type = new TypeDef("int");
         p1.dimensions = 1;
-        mth.params.add(p1);
 
         builder.addExpectedAddMethodValues(mth);
+        builder.addExpectedAddParameterValues( p1 );
 
         // execute
         Parser parser = new Parser(lexer, builder);
@@ -2369,9 +2371,9 @@
         p1.name = "p1";
         p1.type = new TypeDef("int");
         p1.dimensions = 2;
-        mth.params.add(p1);
 
         builder.addExpectedAddMethodValues(mth);
+        builder.addExpectedAddParameterValues( p1 );
 
         // execute
         Parser parser = new Parser(lexer, builder);
@@ -2411,9 +2413,9 @@
         p1.type = new TypeDef("int");
         p1.dimensions = 0;
         p1.isVarArgs = true;
-        mth.params.add(p1);
 
         builder.addExpectedAddMethodValues(mth);
+        builder.addExpectedAddParameterValues(p1);
 
         // execute
         Parser parser = new Parser(lexer, builder);


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to