You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlbeans-cvs@xml.apache.org by pc...@apache.org on 2004/03/12 00:01:42 UTC

cvs commit: xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/visitor CompositeJVisitor.java CompositeMVisitor.java JVisitor.java MVisitor.java TraversingJVisitor.java TraversingMVisitor.java CommentInitializer.java PropertyInitializer.java CompositeJElementVisitor.java CompositeMElementVisitor.java JElementVisitor.java MElementVisitor.java

pcal        2004/03/11 15:01:42

  Modified:    v2/jam   build.xml
               v2/jam/src/org/apache/xmlbeans/impl/jam JElement.java
                        JParameter.java JamServiceParams.java
               v2/jam/src/org/apache/xmlbeans/impl/jam/internal
                        JamClassLoaderImpl.java JamServiceContextImpl.java
               v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements
                        AnnotatedElementImpl.java AnnotationImpl.java
                        BuiltinClassImpl.java ClassImpl.java
                        CommentImpl.java ConstructorImpl.java
                        ElementImpl.java FieldImpl.java InvokableImpl.java
                        MethodImpl.java PackageImpl.java ParameterImpl.java
               v2/jam/src/org/apache/xmlbeans/impl/jam/internal/javadoc
                        JavadocClassBuilder.java
               v2/jam/src/org/apache/xmlbeans/impl/jam/mutable
                        MAnnotatedElement.java MAnnotation.java MClass.java
                        MComment.java MElement.java MInvokable.java
                        MPackage.java
               v2/jam/src/org/apache/xmlbeans/impl/jam/provider
                        JamServiceContext.java
               v2/jam/src/org/apache/xmlbeans/impl/jam/visitor
                        CommentInitializer.java PropertyInitializer.java
  Added:       v2/jam/src/org/apache/xmlbeans/impl/jam/visitor
                        CompositeJVisitor.java CompositeMVisitor.java
                        JVisitor.java MVisitor.java TraversingJVisitor.java
                        TraversingMVisitor.java
  Removed:     v2/jam/src/org/apache/xmlbeans/impl/jam/visitor
                        CompositeJElementVisitor.java
                        CompositeMElementVisitor.java JElementVisitor.java
                        MElementVisitor.java
  Log:
  refactor visitor/traversal model
  
  Revision  Changes    Path
  1.8       +18 -7     xml-xmlbeans/v2/jam/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/build.xml,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- build.xml	11 Mar 2004 21:26:41 -0000	1.7
  +++ build.xml	11 Mar 2004 23:01:41 -0000	1.8
  @@ -85,9 +85,7 @@
       <jar jarfile='${javadoc_zip}' basedir='${javadocbuild_dir}'/>
       <jar jarfile='${jamsrc_zip}' basedir='.' 
            excludes='build/**,src/**,test/**'/>
  -<echo message='jarring ${src_dir}'/>
  -    <jar jarfile='${jamsrc_zip}' basedir='.' update='true'
  -         includes='${src_dir}/**/*'/>
  +    <jar jarfile='${jamsrc_zip}' basedir='${src_dir}' update='true'/>
     </target>
   
     <target name='website' depends='all,javadocs,jars'>
  @@ -101,14 +99,24 @@
     </target>
   
   
  -  <target name='repackage'>
  +  <target name='repackage' depends='clean,repackage_check,repackage_do'/>
  +
  +  <target name='repackage_check' unless='newpackage'>
  +    <echo message='Please specify -Dnewpackage=[destination package]'/>
  +    <echo message='on the ant command line.'/>
  +  </target>
  +
  +
  +  <target name='repackage_do' if='newpackage'>
  +    <echo message='Building repackaged JAM under ${newpackage}...'/>
  +    <echo message=''/>
   
       <property name='repackage_spec' 
  -              value='org.apache.xmlbeans.impl.jam:foo.bar.baz'/>
  +              value='org.apache.xmlbeans.impl.jam:${newpackage}'/>
       <property name='repackaged_src' value='build/repackaged_src'/>
  -   
  -    <delete dir='${repackaged_src}'/>
  +
       <mkdir dir='${repackaged_src}'/>
  +    <mkdir dir='${classes_dir}'/>
   
       <javac srcdir='${src_dir}' destdir='${classes_dir}' 
              includes='**/tools/*.java'/>
  @@ -121,6 +129,9 @@
          <arg line='-repackage ${repackage_spec} -f src -t ${repackaged_src}'/>
   <!--       <arg line='-repackage ${repackage_spec} -f test -t ${repackaged_src}'/>-->
       </java>
  +
  +    <delete dir='${classes_dir}'/> <!-- don't need repackager any more -->
  +
       <ant dir='.' target='website' inheritAll='false' >
         <property name='src_dir' value='${repackaged_src}'/>
       </ant>
  
  
  
  1.6       +3 -28     xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/JElement.java
  
  Index: JElement.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/JElement.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- JElement.java	11 Mar 2004 21:26:41 -0000	1.5
  +++ JElement.java	11 Mar 2004 23:01:41 -0000	1.6
  @@ -15,7 +15,8 @@
   
   package org.apache.xmlbeans.impl.jam;
   
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.JVisitor;
   
   /**
    * <p>Interface implemented by JAM abstractions which can have
  @@ -79,34 +80,8 @@
     /**
      * <p>Accepts the given visitor.</p>
      */
  -  public void accept(MElementVisitor visitor);
  +  public void accept(JVisitor visitor);
   
  -  /**
  -   * <p>Calls accept() with the given visitor, and then recursively calls
  -   * acceptAndWalk for each of our component elements2, if any.  Calling this
  -   * on
  -   * an MClass will cause the MClass to accept the visitor, and then
  -   * all of it's declared fields constructors, and methods.  The parameter
  -   * for each constructor and method will also in turn be accepted.
  -   * Any annotations for each of these elements types will also be visited
  -   * after their other children have been visited.  Note that inherited
  -   * members are never visited, nor are referenced classes (e.g. referenced
  -   * via inheritance or member types).  </p>
  -   *
  -   * <table border='1'>
  -   * <tr><td><b>Element</b></td><td><b>Sub-elements traversal</b></td></tr>
  -   * <tr><td>Package       </td><td>Classes, Annotations, Comments</td></tr>
  -   * <tr><td>Class         </td><td>Fields, Constructors, Methods, Annotations, Comments</td></tr>
  -   * <tr><td>Field         </td><td>Annotations, Comments</td></tr>
  -   * <tr><td>Constructor   </td><td>Parameters, Annotations, Comments</td></tr>
  -   * <tr><td>Method        </td><td>Parameters, Annotations, Comments</td></tr>
  -   * <tr><td>Parameter     </td><td>[none]</td></tr>
  -   * <tr><td>Comment       </td><td>[none]</td></tr>
  -   * </table>
  -   *
  -   * </p>
  -   */
  -  public void acceptAndWalk(MElementVisitor visitor);
   
     /**
      * <p>This is not something you want to mess with.  It's here only for the
  
  
  
  1.4       +1 -1      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/JParameter.java
  
  Index: JParameter.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/JParameter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JParameter.java	9 Mar 2004 10:38:51 -0000	1.3
  +++ JParameter.java	11 Mar 2004 23:01:41 -0000	1.4
  @@ -21,7 +21,7 @@
    *
    * @author Patrick Calahan &lt;email: pcal-at-bea-dot-com&gt;
    */
  -public interface JParameter extends JElement {
  +public interface JParameter extends JAnnotatedElement {
   
     /**
      * Returns the type of this parameter.
  
  
  
  1.3       +4 -4      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/JamServiceParams.java
  
  Index: JamServiceParams.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/JamServiceParams.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JamServiceParams.java	11 Mar 2004 21:26:41 -0000	1.2
  +++ JamServiceParams.java	11 Mar 2004 23:01:41 -0000	1.3
  @@ -15,7 +15,7 @@
   
   package org.apache.xmlbeans.impl.jam;
   
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
   
   import java.io.File;
   import java.io.PrintWriter;
  @@ -293,13 +293,13 @@
   
   
     //DOCME
  -  public void setCommentInitializer(MElementVisitor initializer);
  +  public void setCommentInitializer(MVisitor initializer);
   
     //DOCME
  -  public void setPropertyInitializer(MElementVisitor initializer);
  +  public void setPropertyInitializer(MVisitor initializer);
   
     //DOCME
  -  public void addInitializer(MElementVisitor initializer);
  +  public void addInitializer(MVisitor initializer);
   
   
     /**
  
  
  
  1.5       +9 -7      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/JamClassLoaderImpl.java
  
  Index: JamClassLoaderImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/JamClassLoaderImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JamClassLoaderImpl.java	11 Mar 2004 21:26:41 -0000	1.4
  +++ JamClassLoaderImpl.java	11 Mar 2004 23:01:41 -0000	1.5
  @@ -18,7 +18,8 @@
   import org.apache.xmlbeans.impl.jam.JPackage;
   import org.apache.xmlbeans.impl.jam.JamClassLoader;
   import org.apache.xmlbeans.impl.jam.mutable.MClass;
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.TraversingMVisitor;
   import org.apache.xmlbeans.impl.jam.internal.elements.*;
   import org.apache.xmlbeans.impl.jam.provider.JamClassBuilder;
   
  @@ -36,7 +37,7 @@
     private Map mName2Package = new HashMap();
     private Map mFd2ClassCache = null;
     private JamClassBuilder mBuilder;
  -  private MElementVisitor mInitializer = null;
  +  private MVisitor mInitializer = null;
     private ElementContext mContext;
     private Stack mInitializeStack = new Stack(); //fixme - decide how to store them
     private boolean mAlreadyInitializing = false;
  @@ -46,11 +47,12 @@
   
     public JamClassLoaderImpl(ElementContext context,
                               JamClassBuilder builder,
  -                            MElementVisitor initializerOrNull) {
  +                            MVisitor initializerOrNull) {
       if (builder == null) throw new IllegalArgumentException("null builder");
       if (context == null) throw new IllegalArgumentException("null builder");
       mBuilder = builder;
  -    mInitializer = initializerOrNull; //ok to be null
  +    mInitializer = (initializerOrNull == null) ? null : // null is ok, else
  +      new TraversingMVisitor(initializerOrNull); // wrap it in a walker
       mContext = context;
       initCache();
     }
  @@ -95,11 +97,11 @@
           // we already are running initializers, so we have to do it later
           mInitializeStack.push(out);
         } else {
  -        out.acceptAndWalk(mInitializer);
  +        out.accept(mInitializer);
           ((ClassImpl)out).setState(ClassImpl.LOADED);
           while(!mInitializeStack.isEmpty()) {
  -          JClass initme = (JClass)mInitializeStack.pop();
  -          initme.acceptAndWalk(mInitializer);
  +          ClassImpl initme = (ClassImpl)mInitializeStack.pop();
  +          initme.accept(mInitializer);
             ((ClassImpl)out).setState(ClassImpl.LOADED);
           }
           mAlreadyInitializing = false;
  
  
  
  1.5       +8 -8      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/JamServiceContextImpl.java
  
  Index: JamServiceContextImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/JamServiceContextImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JamServiceContextImpl.java	11 Mar 2004 21:26:41 -0000	1.4
  +++ JamServiceContextImpl.java	11 Mar 2004 23:01:41 -0000	1.5
  @@ -63,8 +63,8 @@
     private PrintWriter mOut = new PrintWriter(System.out);
     private boolean mUseSystemClasspath = true;
     private boolean mVerbose = false;
  -  private MElementVisitor mCommentInitializer = null;
  -  private MElementVisitor mPropertyInitializer = null;
  +  private MVisitor mCommentInitializer = null;
  +  private MVisitor mPropertyInitializer = null;
     private List mOtherInitializers = null;
   
     private JamClassLoader mLoader = null;
  @@ -205,7 +205,7 @@
     }
   
   
  -  public MElementVisitor getInitializer() {
  +  public MVisitor getInitializer() {
       List initers = new ArrayList();
       initers.add((mCommentInitializer != null) ? mCommentInitializer :
                   new CommentInitializer());
  @@ -216,9 +216,9 @@
   
       if (mOtherInitializers != null) initers.addAll(mOtherInitializers);
       // now go
  -    MElementVisitor[] inits = new MElementVisitor[initers.size()];
  +    MVisitor[] inits = new MVisitor[initers.size()];
       initers.toArray(inits);
  -    return new CompositeMElementVisitor(inits);
  +    return new CompositeMVisitor(inits);
     }
   
     // ========================================================================
  @@ -227,17 +227,17 @@
   
   
     //DOCME
  -  public void setCommentInitializer(MElementVisitor initializer) {
  +  public void setCommentInitializer(MVisitor initializer) {
       mCommentInitializer = initializer;
     }
   
     //DOCME
  -  public void setPropertyInitializer(MElementVisitor initializer) {
  +  public void setPropertyInitializer(MVisitor initializer) {
       mPropertyInitializer = initializer;
     }
   
     //DOCME
  -  public void addInitializer(MElementVisitor initializer) {
  +  public void addInitializer(MVisitor initializer) {
       if (mOtherInitializers == null) mOtherInitializers = new ArrayList();
       mOtherInitializers.add(initializer);
     }
  
  
  
  1.5       +18 -18    xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/AnnotatedElementImpl.java
  
  Index: AnnotatedElementImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/AnnotatedElementImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AnnotatedElementImpl.java	11 Mar 2004 21:26:41 -0000	1.4
  +++ AnnotatedElementImpl.java	11 Mar 2004 23:01:41 -0000	1.5
  @@ -3,7 +3,7 @@
   import org.apache.xmlbeans.impl.jam.JAnnotation;
   import org.apache.xmlbeans.impl.jam.JComment;
   import org.apache.xmlbeans.impl.jam.JAnnotationValue;
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
   import org.apache.xmlbeans.impl.jam.annotation.AnnotationProxy;
   import org.apache.xmlbeans.impl.jam.mutable.MAnnotatedElement;
   import org.apache.xmlbeans.impl.jam.mutable.MAnnotation;
  @@ -40,15 +40,15 @@
     // JAnnotatedElement implementation
   
     public JAnnotation[] getAnnotations() {
  -    return getEditableAnnotations();
  +    return getMutableAnnotations();
     }
   
     public JAnnotation getAnnotation(Class proxyClass) {
  -    return getEditableAnnotation(proxyClass);
  +    return getMutableAnnotation(proxyClass);
     }
   
     public JAnnotation getAnnotation(String named) {
  -    return getEditableAnnotation(named);
  +    return getMutableAnnotation(named);
     }
   
     public JAnnotationValue getAnnotationValue(String valueName) {
  @@ -66,14 +66,14 @@
       return getEditableProxy(proxyClass);
     }
   
  -  public JComment getComment() { return getEditableComment(); }
  +  public JComment getComment() { return getMutableComment(); }
   
     // ========================================================================
     // MAnnotatedElement implementation
   
     public AnnotationProxy getEditableProxy(Class proxyClass) {
       if (mName2Annotation == null) return null;
  -    MAnnotation out = getEditableAnnotation(proxyClass.getName());
  +    MAnnotation out = getMutableAnnotation(proxyClass.getName());
       return (out == null) ? null : (AnnotationProxy)out.getProxy();
     }
   
  @@ -81,25 +81,25 @@
       if (mName2Annotation != null) mName2Annotation.values().remove(ann);
     }
   
  -  public MAnnotation[] getEditableAnnotations() {
  +  public MAnnotation[] getMutableAnnotations() {
       if (mName2Annotation == null) return new MAnnotation[0];
       MAnnotation[] out = new MAnnotation[mName2Annotation.values().size()];
       mName2Annotation.values().toArray(out);
       return out;
     }
   
  -  public MAnnotation getEditableAnnotation(String named) {
  +  public MAnnotation getMutableAnnotation(String named) {
       if (mName2Annotation == null) return null;
       return (MAnnotation)mName2Annotation.get(named);
     }
   
  -  public MAnnotation getEditableAnnotation(Class proxyClass) {
  +  public MAnnotation getMutableAnnotation(Class proxyClass) {
       if (mName2Annotation == null) return null;
       return (MAnnotation)mName2Annotation.get(proxyClass.getName());
     }
   
     public MAnnotation addAnnotationForTag(String tagName) {
  -    MAnnotation out = getEditableAnnotation(tagName);
  +    MAnnotation out = getMutableAnnotation(tagName);
       if (out != null) {
         //REVIEW this is a weird case.  we'll just go with it for now.
       } else {
  @@ -112,11 +112,11 @@
     }
   
     public MAnnotation addAnnotationForTag(String tagName, String tagContents) {
  -    MAnnotation out = getEditableAnnotation(tagName);
  +    MAnnotation out = getMutableAnnotation(tagName);
       if (out != null) {
         //REVIEW this is a weird case where they add the same thing twice.
         // we'll just go with it for now.
  -      out.getEditableProxy().initFromJavadocTag(tagContents);
  +      out.getMutableProxy().initFromJavadocTag(tagContents);
       } else {
         AnnotationProxy proxy = getContext().createProxyForTag(tagName);
         proxy.initFromJavadocTag(tagContents);
  @@ -132,7 +132,7 @@
         throw new IllegalArgumentException("null instance");
       }
       String typename = getAnnotationTypeFor(jsr175annotationInstance);
  -    MAnnotation ann = getEditableAnnotation(typename);
  +    MAnnotation ann = getMutableAnnotation(typename);
       if (ann != null) {
         //REVIEW this is an extremely weird case where they add another instance
         // of the same annotation type.  We'll just go with it for now,
  @@ -150,7 +150,7 @@
   
     public MAnnotation addAnnotationForType(String jsr175annotationClassname) {
       ClassImpl.validateClassName(jsr175annotationClassname);
  -    MAnnotation ann = getEditableAnnotation(jsr175annotationClassname);
  +    MAnnotation ann = getMutableAnnotation(jsr175annotationClassname);
       if (ann != null) return ann; //REVIEW weird case again
       AnnotationProxy proxy = getContext().
         createProxyForAnnotationType(jsr175annotationClassname);
  @@ -162,7 +162,7 @@
     public MAnnotation addAnnotationForProxy(AnnotationProxy proxy) {
       if (proxy == null) throw new IllegalArgumentException("null proxy");
       String name = proxy.getClass().getName();
  -    MAnnotation ann = getEditableAnnotation(name);
  +    MAnnotation ann = getMutableAnnotation(name);
       if (ann != null) return ann; //REVIEW weird case yet again
       ann = new AnnotationImpl(getContext(),proxy,name);
       getName2Annotation().put(name,ann);
  @@ -170,7 +170,7 @@
     }
   
   
  -  public MComment getEditableComment() { return mComment; }
  +  public MComment getMutableComment() { return mComment; }
   
     public MComment createComment() { return mComment = new CommentImpl(this); }
   
  @@ -179,8 +179,8 @@
     // ========================================================================
     // Protect methods
   
  -  protected void visitAnnotations(MElementVisitor visitor) {
  -    MAnnotation[] anns = getEditableAnnotations();
  +  protected void visitAnnotations(MVisitor visitor) {
  +    MAnnotation[] anns = getMutableAnnotations();
       for(int i=0; i<anns.length; i++) visitor.visit(anns[i]);
       if (mComment != null) visitor.visit(mComment);
     }
  
  
  
  1.5       +5 -8      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/AnnotationImpl.java
  
  Index: AnnotationImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/AnnotationImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AnnotationImpl.java	11 Mar 2004 21:26:41 -0000	1.4
  +++ AnnotationImpl.java	11 Mar 2004 23:01:41 -0000	1.5
  @@ -14,7 +14,8 @@
    */
   package org.apache.xmlbeans.impl.jam.internal.elements;
   
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.JVisitor;
   import org.apache.xmlbeans.impl.jam.annotation.AnnotationProxy;
   import org.apache.xmlbeans.impl.jam.mutable.MAnnotation;
   import org.apache.xmlbeans.impl.jam.JAnnotationValue;
  @@ -64,18 +65,14 @@
       return mProxy.getClass().getName(); //FIXME
     }
   
  -  public void accept(MElementVisitor visitor) {
  -    visitor.visit(this);
  -  }
  +  public void accept(MVisitor visitor) { visitor.visit(this); }
   
  -  public void acceptAndWalk(MElementVisitor visitor) {
  -    visitor.visit(this);
  -  }
  +  public void accept(JVisitor visitor) { visitor.visit(this); }
   
     // ========================================================================
     // MElement implementation
   
  -  public AnnotationProxy getEditableProxy() {
  +  public AnnotationProxy getMutableProxy() {
       return mProxy;
     }
   
  
  
  
  1.5       +7 -11     xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/BuiltinClassImpl.java
  
  Index: BuiltinClassImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/BuiltinClassImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- BuiltinClassImpl.java	11 Mar 2004 21:26:41 -0000	1.4
  +++ BuiltinClassImpl.java	11 Mar 2004 23:01:41 -0000	1.5
  @@ -17,7 +17,8 @@
   
   
   import org.apache.xmlbeans.impl.jam.*;
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.JVisitor;
   import org.apache.xmlbeans.impl.jam.mutable.*;
   
   /**
  @@ -46,14 +47,9 @@
     // ========================================================================
     // JElement implementation
   
  -  public void accept(MElementVisitor visitor) {
  -    visitor.visit(this);
  -  }
  +  public void accept(MVisitor visitor) { visitor.visit(this); }
   
  -  public void acceptAndWalk(MElementVisitor visitor) {
  -    accept(visitor);
  -    visitAnnotations(visitor);
  -  }
  +  public void accept(JVisitor visitor) { visitor.visit(this); }
   
     public String getQualifiedName() { return mSimpleName; }
   
  @@ -109,9 +105,9 @@
     // ========================================================================
     // MClass implementation
   
  -  public MField[] getEditableFields() { return NO_FIELD; }
  -  public MConstructor[] getEditableConstructors() { return NO_CONSTRUCTOR; }
  -  public MMethod[] getEditableMethods() { return NO_METHOD; }
  +  public MField[] getMutableFields() { return NO_FIELD; }
  +  public MConstructor[] getMutableConstructors() { return NO_CONSTRUCTOR; }
  +  public MMethod[] getMutableMethods() { return NO_METHOD; }
   
     public void setSimpleName(String s) { nocando(); }
   
  
  
  
  1.6       +10 -17    xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/ClassImpl.java
  
  Index: ClassImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/ClassImpl.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ClassImpl.java	11 Mar 2004 21:26:41 -0000	1.5
  +++ ClassImpl.java	11 Mar 2004 23:01:41 -0000	1.6
  @@ -16,7 +16,8 @@
   package org.apache.xmlbeans.impl.jam.internal.elements;
   
   import org.apache.xmlbeans.impl.jam.*;
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.JVisitor;
   import org.apache.xmlbeans.impl.jam.mutable.*;
   import org.apache.xmlbeans.impl.jam.internal.classrefs.JClassRef;
   import org.apache.xmlbeans.impl.jam.internal.classrefs.JClassRefContext;
  @@ -118,7 +119,7 @@
     }
   
     public JField[] getDeclaredFields() {
  -    return getEditableFields();
  +    return getMutableFields();
     }
   
     public JMethod[] getMethods() {
  @@ -136,9 +137,9 @@
       return out;
     }
   
  -  public JMethod[] getDeclaredMethods() { return getEditableMethods(); }
  +  public JMethod[] getDeclaredMethods() { return getMutableMethods(); }
   
  -  public JConstructor[] getConstructors() { return getEditableConstructors(); }
  +  public JConstructor[] getConstructors() { return getMutableConstructors(); }
   
     public boolean isInterface() { return mIsInterface; }
   
  @@ -177,17 +178,9 @@
       return new JClass[0];//FIXME
     }
   
  -  public void accept(MElementVisitor visitor) {
  -    visitor.visit(this);
  -  }
  +  public void accept(MVisitor visitor) { visitor.visit(this); }
   
  -  public void acceptAndWalk(MElementVisitor visitor) {
  -    accept(visitor);
  -    acceptAndWalkAll(visitor,getEditableFields());
  -    acceptAndWalkAll(visitor,getEditableConstructors());
  -    acceptAndWalkAll(visitor,getEditableMethods());
  -    visitAnnotations(visitor);
  -  }
  +  public void accept(JVisitor visitor) { visitor.visit(this); }
   
     public void setSimpleName(String name) {
       throw new UnsupportedOperationException("Class names cannot be changed");
  @@ -269,7 +262,7 @@
       mConstructors.remove(constr);
     }
   
  -  public MConstructor[] getEditableConstructors() {
  +  public MConstructor[] getMutableConstructors() {
       if (mConstructors == null || mConstructors.size() == 0) {
         return new MConstructor[0];
       }
  @@ -291,7 +284,7 @@
       mFields.remove(field);
     }
   
  -  public MField[] getEditableFields() {
  +  public MField[] getMutableFields() {
       if (mFields == null || mFields.size() == 0) {
         return new MField[0];
       }
  @@ -312,7 +305,7 @@
       mMethods.remove(method);
     }
   
  -  public MMethod[] getEditableMethods() {
  +  public MMethod[] getMutableMethods() {
       if (mMethods == null || mMethods.size() == 0) {
         return new MMethod[0];
       }
  
  
  
  1.4       +4 -3      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/CommentImpl.java
  
  Index: CommentImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/CommentImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- CommentImpl.java	11 Mar 2004 21:26:41 -0000	1.3
  +++ CommentImpl.java	11 Mar 2004 23:01:41 -0000	1.4
  @@ -14,7 +14,8 @@
    */
   package org.apache.xmlbeans.impl.jam.internal.elements;
   
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.JVisitor;
   import org.apache.xmlbeans.impl.jam.mutable.MComment;
   
   /**
  @@ -44,9 +45,9 @@
     // ========================================================================
     // JElement implementation
   
  -  public void accept(MElementVisitor visitor) { visitor.visit(this); }
  +  public void accept(MVisitor visitor) { visitor.visit(this); }
   
  -  public void acceptAndWalk(MElementVisitor visitor) { accept(visitor); }
  +  public void accept(JVisitor visitor) { visitor.visit(this); }
   
     public String getQualifiedName() {
       return getParent().getQualifiedName()+".{comment}"; //REVIEW
  
  
  
  1.5       +5 -4      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/ConstructorImpl.java
  
  Index: ConstructorImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/ConstructorImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ConstructorImpl.java	11 Mar 2004 21:26:41 -0000	1.4
  +++ ConstructorImpl.java	11 Mar 2004 23:01:41 -0000	1.5
  @@ -15,7 +15,8 @@
   
   package org.apache.xmlbeans.impl.jam.internal.elements;
   
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.JVisitor;
   import org.apache.xmlbeans.impl.jam.mutable.MConstructor;
   
   /**
  @@ -35,8 +36,8 @@
     // ========================================================================
     // JElement implementation
   
  -  public void accept(MElementVisitor visitor) {
  -    visitor.visit(this);
  -  }
  +  public void accept(MVisitor visitor) { visitor.visit(this); }
  +
  +  public void accept(JVisitor visitor) { visitor.visit(this); }  
   
   }
  
  
  
  1.5       +2 -13     xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/ElementImpl.java
  
  Index: ElementImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/ElementImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ElementImpl.java	11 Mar 2004 21:26:41 -0000	1.4
  +++ ElementImpl.java	11 Mar 2004 23:01:41 -0000	1.5
  @@ -16,7 +16,7 @@
   package org.apache.xmlbeans.impl.jam.internal.elements;
   
   import org.apache.xmlbeans.impl.jam.*;
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
   import org.apache.xmlbeans.impl.jam.mutable.MElement;
   import org.apache.xmlbeans.impl.jam.mutable.MSourcePosition;
   
  @@ -101,7 +101,7 @@
       mPosition = null;
     }
   
  -  public MSourcePosition getEditableSourcePosition() {
  +  public MSourcePosition getMutableSourcePosition() {
       return mPosition;
     }
   
  @@ -140,15 +140,4 @@
     // Other public methods
   
     public ElementContext getContext() { return mContext; }
  -
  -  // ========================================================================
  -  // Protected methods
  -
  -  /**
  -   * <p>Simple utility method used by subclasses to implement
  -   * acceptAndWalk.</p>
  -   */
  -  protected static void acceptAndWalkAll(MElementVisitor v, JElement[] sub) {
  -    for(int i=0; i<sub.length; i++) sub[i].acceptAndWalk(v);
  -  }
   }
  
  
  
  1.4       +4 -8      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/FieldImpl.java
  
  Index: FieldImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/FieldImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FieldImpl.java	11 Mar 2004 21:26:41 -0000	1.3
  +++ FieldImpl.java	11 Mar 2004 23:01:41 -0000	1.4
  @@ -16,7 +16,8 @@
   package org.apache.xmlbeans.impl.jam.internal.elements;
   
   import org.apache.xmlbeans.impl.jam.JClass;
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.JVisitor;
   import org.apache.xmlbeans.impl.jam.mutable.MField;
   import org.apache.xmlbeans.impl.jam.internal.classrefs.DirectJClassRef;
   import org.apache.xmlbeans.impl.jam.internal.classrefs.JClassRef;
  @@ -105,12 +106,7 @@
     // ========================================================================
     // JElement implementation
   
  -  public void accept(MElementVisitor visitor) {
  -    visitor.visit(this);
  -  }
  +  public void accept(MVisitor visitor) { visitor.visit(this); }
   
  -  public void acceptAndWalk(MElementVisitor visitor) {
  -    accept(visitor);
  -    visitAnnotations(visitor);
  -  }
  +  public void accept(JVisitor visitor) { visitor.visit(this); }
   }
  
  
  
  1.4       +3 -12     xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/InvokableImpl.java
  
  Index: InvokableImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/InvokableImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- InvokableImpl.java	11 Mar 2004 21:26:41 -0000	1.3
  +++ InvokableImpl.java	11 Mar 2004 23:01:41 -0000	1.4
  @@ -16,7 +16,7 @@
   package org.apache.xmlbeans.impl.jam.internal.elements;
   
   import org.apache.xmlbeans.impl.jam.JClass;
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
   import org.apache.xmlbeans.impl.jam.JParameter;
   import org.apache.xmlbeans.impl.jam.mutable.MInvokable;
   import org.apache.xmlbeans.impl.jam.mutable.MParameter;
  @@ -98,7 +98,7 @@
       if (mParameters != null) mParameters.remove(parameter);
     }
   
  -  public MParameter[] getEditableParameters() {
  +  public MParameter[] getMutableParameters() {
       if (mParameters == null || mParameters.size() == 0) {
       return new MParameter[0];
       } else {
  @@ -112,7 +112,7 @@
     // JInvokable implementation
   
     public JParameter[] getParameters() {
  -    return getEditableParameters();
  +    return getMutableParameters();
     }
   
     public JClass[] getExceptionTypes() {
  @@ -140,15 +140,6 @@
       }
       out.write(')');
       return out.toString();
  -  }
  -
  -  // ========================================================================
  -  // JElement implementation
  -
  -  public void acceptAndWalk(MElementVisitor visitor) {
  -    accept(visitor);
  -    acceptAndWalkAll(visitor,getEditableParameters());
  -    visitAnnotations(visitor);
     }
   
     // ========================================================================
  
  
  
  1.4       +6 -5      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/MethodImpl.java
  
  Index: MethodImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/MethodImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MethodImpl.java	11 Mar 2004 21:26:41 -0000	1.3
  +++ MethodImpl.java	11 Mar 2004 23:01:41 -0000	1.4
  @@ -16,7 +16,8 @@
   package org.apache.xmlbeans.impl.jam.internal.elements;
   
   import org.apache.xmlbeans.impl.jam.JClass;
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.JVisitor;
   import org.apache.xmlbeans.impl.jam.mutable.MMethod;
   import org.apache.xmlbeans.impl.jam.internal.classrefs.DirectJClassRef;
   import org.apache.xmlbeans.impl.jam.internal.classrefs.JClassRef;
  @@ -97,10 +98,10 @@
     }
   
     // ========================================================================
  -  // JElement implementation
  +  // Element implementation
   
  -  public void accept(MElementVisitor visitor) {
  -    visitor.visit(this);
  -  }
  +  public void accept(MVisitor visitor) { visitor.visit(this); }
  +
  +  public void accept(JVisitor visitor) { visitor.visit(this); }
   
   }
  
  
  
  1.4       +14 -8     xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/PackageImpl.java
  
  Index: PackageImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/PackageImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PackageImpl.java	11 Mar 2004 21:26:41 -0000	1.3
  +++ PackageImpl.java	11 Mar 2004 23:01:41 -0000	1.4
  @@ -16,8 +16,10 @@
   package org.apache.xmlbeans.impl.jam.internal.elements;
   
   import org.apache.xmlbeans.impl.jam.JClass;
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.JVisitor;
   import org.apache.xmlbeans.impl.jam.mutable.MPackage;
  +import org.apache.xmlbeans.impl.jam.mutable.MClass;
   
   import java.util.ArrayList;
   import java.util.List;
  @@ -53,20 +55,24 @@
   
     public String getQualifiedName() { return mName; }
   
  -  public void accept(MElementVisitor visitor) {
  -    visitor.visit(this);
  -  }
  +  public void accept(MVisitor visitor) { visitor.visit(this); }
   
  -  public void acceptAndWalk(MElementVisitor visitor) {
  -    accept(visitor);
  -    acceptAndWalkAll(visitor,getClasses());
  -  }
  +  public void accept(JVisitor visitor) { visitor.visit(this); }
   
     // ========================================================================
     // JPackage implementation
   
     public JClass[] getClasses() {
       JClass[] out = new JClass[mRootClasses.size()];
  +    mRootClasses.toArray(out);
  +    return out;
  +  }
  +
  +  // ========================================================================
  +  // MPackage implementation
  +
  +  public MClass[] getMutableClasses() {
  +    MClass[] out = new MClass[mRootClasses.size()];
       mRootClasses.toArray(out);
       return out;
     }
  
  
  
  1.5       +5 -8      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/ParameterImpl.java
  
  Index: ParameterImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/elements/ParameterImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ParameterImpl.java	11 Mar 2004 21:26:41 -0000	1.4
  +++ ParameterImpl.java	11 Mar 2004 23:01:41 -0000	1.5
  @@ -16,7 +16,8 @@
   package org.apache.xmlbeans.impl.jam.internal.elements;
   
   import org.apache.xmlbeans.impl.jam.JClass;
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.JVisitor;
   import org.apache.xmlbeans.impl.jam.mutable.MParameter;
   import org.apache.xmlbeans.impl.jam.internal.classrefs.DirectJClassRef;
   import org.apache.xmlbeans.impl.jam.internal.classrefs.JClassRef;
  @@ -84,12 +85,8 @@
     // ========================================================================
     // JElement implementation
   
  -  public void accept(MElementVisitor visitor) {
  -    visitor.visit(this);
  -  }
  +  public void accept(MVisitor visitor) { visitor.visit(this); }
  +
  +  public void accept(JVisitor visitor) { visitor.visit(this); }
   
  -  public void acceptAndWalk(MElementVisitor visitor) {
  -    accept(visitor);
  -    visitAnnotations(visitor);
  -  }
   }
  
  
  
  1.5       +1 -1      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/javadoc/JavadocClassBuilder.java
  
  Index: JavadocClassBuilder.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/internal/javadoc/JavadocClassBuilder.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JavadocClassBuilder.java	10 Mar 2004 19:43:49 -0000	1.4
  +++ JavadocClassBuilder.java	11 Mar 2004 23:01:42 -0000	1.5
  @@ -229,7 +229,7 @@
         MAnnotation ann =
           dest.addAnnotationForType(callGetAnnotationType(descs[i]).qualifiedTypeName());
         ann.setArtifact(descs[i]);
  -      AnnotationProxy proxy = ann.getEditableProxy();
  +      AnnotationProxy proxy = ann.getMutableProxy();
         Object[] mvps = callGetMemberValues(descs[i]);
         for(int j=0; j<mvps.length; j++) {
           String name = callGetMvpName(mvps[i]);
  
  
  
  1.2       +5 -3      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MAnnotatedElement.java
  
  Index: MAnnotatedElement.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MAnnotatedElement.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MAnnotatedElement.java	10 Mar 2004 19:43:49 -0000	1.1
  +++ MAnnotatedElement.java	11 Mar 2004 23:01:42 -0000	1.2
  @@ -40,15 +40,17 @@
     public MAnnotation addAnnotationForProxy(AnnotationProxy proxy);
   
   
  +  public MAnnotation[] getMutableAnnotations();
  +
     //DOCME
  -  public MAnnotation getEditableAnnotation(Class proxyClass);
  +  public MAnnotation getMutableAnnotation(Class proxyClass);
   
     //DOCME
  -  public MAnnotation getEditableAnnotation(String tagnameOr175typename);
  +  public MAnnotation getMutableAnnotation(String tagnameOr175typename);
   
   
     //DOCME
  -  public MComment getEditableComment();
  +  public MComment getMutableComment();
   
     //DOCME
     public MComment createComment();
  
  
  
  1.2       +1 -1      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MAnnotation.java
  
  Index: MAnnotation.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MAnnotation.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MAnnotation.java	10 Mar 2004 19:43:49 -0000	1.1
  +++ MAnnotation.java	11 Mar 2004 23:01:42 -0000	1.2
  @@ -25,6 +25,6 @@
    */
   public interface MAnnotation extends JAnnotation, MElement {
   
  -  public AnnotationProxy getEditableProxy();
  +  public AnnotationProxy getMutableProxy();
   
   }
  
  
  
  1.2       +3 -3      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MClass.java
  
  Index: MClass.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MClass.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MClass.java	10 Mar 2004 19:43:49 -0000	1.1
  +++ MClass.java	11 Mar 2004 23:01:42 -0000	1.2
  @@ -116,7 +116,7 @@
      * constructors from any base class or interface.  This is simply a more
      * strongly-typed version of getDeclaredConstructors().
      */
  -  public MConstructor[] getEditableConstructors();
  +  public MConstructor[] getMutableConstructors();
   
     /**
      * Creates a new field, adds it to this class, and returns it.
  @@ -135,7 +135,7 @@
      * fields from any base class or interface.  This is simply a more
      * strongly-typed version of getDeclaredFields().
      */
  -  public MField[] getEditableFields();
  +  public MField[] getMutableFields();
   
     /**
      * Creates a new method, adds it to this class, and returns it.
  @@ -153,7 +153,7 @@
      * include methods inherited from any base class or interface.  This is
      * simply a more strongly-typed version of getDeclaredMethods().
      */
  -  public MMethod[] getEditableMethods();
  +  public MMethod[] getMutableMethods();
   
   
     public JProperty addNewProperty(String name, MMethod getter, MMethod setter);
  
  
  
  1.2       +1 -1      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MComment.java
  
  Index: MComment.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MComment.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MComment.java	10 Mar 2004 19:43:49 -0000	1.1
  +++ MComment.java	11 Mar 2004 23:01:42 -0000	1.2
  @@ -21,7 +21,7 @@
    *
    * @author Patrick Calahan &lt;email: pcal-at-bea-dot-com&gt;
    */
  -public interface MComment extends JComment {
  +public interface MComment extends MElement, JComment {
   
     /**
      * Sets the text of this comment.
  
  
  
  1.2       +5 -1      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MElement.java
  
  Index: MElement.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MElement.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MElement.java	10 Mar 2004 19:43:49 -0000	1.1
  +++ MElement.java	11 Mar 2004 23:01:42 -0000	1.2
  @@ -16,6 +16,7 @@
   package org.apache.xmlbeans.impl.jam.mutable;
   
   import org.apache.xmlbeans.impl.jam.JElement;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
   
   /**
    * <p>Mutable version of JElement.</p>
  @@ -34,7 +35,10 @@
     public void removeSourcePosition();
   
     //DOCME
  -  public MSourcePosition getEditableSourcePosition();
  +  public MSourcePosition getMutableSourcePosition();
  +
  +  //DOCME
  +  public void accept(MVisitor visitor);
   
     //DOCME
     public void setArtifact(Object o);
  
  
  
  1.2       +1 -1      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MInvokable.java
  
  Index: MInvokable.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MInvokable.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MInvokable.java	10 Mar 2004 19:43:49 -0000	1.1
  +++ MInvokable.java	11 Mar 2004 23:01:42 -0000	1.2
  @@ -116,5 +116,5 @@
      * are none.  This is simply a more strongly-typed version of
      * getParameters().
      */
  -  public MParameter[] getEditableParameters();
  +  public MParameter[] getMutableParameters();
   }
  
  
  
  1.2       +2 -0      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MPackage.java
  
  Index: MPackage.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/mutable/MPackage.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MPackage.java	10 Mar 2004 19:43:49 -0000	1.1
  +++ MPackage.java	11 Mar 2004 23:01:42 -0000	1.2
  @@ -22,4 +22,6 @@
    * @author Patrick Calahan &lt;email: pcal-at-bea-dot-com&gt;
    */
   public interface MPackage extends  JPackage, MAnnotatedElement {
  +
  +  public MClass[] getMutableClasses();
   }
  
  
  
  1.5       +2 -2      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/provider/JamServiceContext.java
  
  Index: JamServiceContext.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/provider/JamServiceContext.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JamServiceContext.java	11 Mar 2004 21:26:41 -0000	1.4
  +++ JamServiceContext.java	11 Mar 2004 23:01:42 -0000	1.5
  @@ -56,7 +56,7 @@
   package org.apache.xmlbeans.impl.jam.provider;
   
   import org.apache.xmlbeans.impl.jam.JamClassLoader;
  -import org.apache.xmlbeans.impl.jam.visitor.MElementVisitor;
  +import org.apache.xmlbeans.impl.jam.visitor.MVisitor;
   
   import java.io.File;
   import java.io.IOException;
  @@ -107,7 +107,7 @@
   
     public JamClassLoader getParentClassLoader();
   
  -  public MElementVisitor getInitializer();
  +  public MVisitor getInitializer();
   
     public boolean isUseSystemClasspath();
   
  
  
  
  1.5       +4 -4      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/visitor/CommentInitializer.java
  
  Index: CommentInitializer.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/visitor/CommentInitializer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CommentInitializer.java	11 Mar 2004 21:26:41 -0000	1.4
  +++ CommentInitializer.java	11 Mar 2004 23:01:42 -0000	1.5
  @@ -44,7 +44,7 @@
    *
    * @author Patrick Calahan &lt;email: pcal-at-bea-dot-com&gt;
    */
  -public class CommentInitializer extends MElementVisitor {
  +public class CommentInitializer extends MVisitor {
   
     // ========================================================================
     // Constructors - but maybe it should be a singleton?
  @@ -74,7 +74,7 @@
     }
   
     // ========================================================================
  -  // MElementVisitor implementation - nothing to see here
  +  // MVisitor implementation - nothing to see here
   
     public void visit(MClass clazz)       { visit((MAnnotatedElement)clazz); }
     public void visit(MConstructor ctor)  { visit((MAnnotatedElement)ctor); }
  @@ -89,7 +89,7 @@
     // Protected methods
   
     protected void visit(MAnnotatedElement element) {
  -    MComment comment = element.getEditableComment();
  +    MComment comment = element.getMutableComment();
       if (comment != null) {
         String[] commentsAndTags = getCommentsAndTags(comment);
         if (commentsAndTags == null || commentsAndTags.length == 0) return;
  @@ -135,7 +135,7 @@
   
     protected void processComment(MAnnotatedElement commentedElement,
                                   String trimmedComment) {
  -    commentedElement.getEditableComment().setText(trimmedComment);
  +    commentedElement.getMutableComment().setText(trimmedComment);
     }
   
   
  
  
  
  1.5       +2 -2      xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/visitor/PropertyInitializer.java
  
  Index: PropertyInitializer.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/visitor/PropertyInitializer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- PropertyInitializer.java	11 Mar 2004 21:26:41 -0000	1.4
  +++ PropertyInitializer.java	11 Mar 2004 23:01:42 -0000	1.5
  @@ -26,14 +26,14 @@
   /**
    * @author Patrick Calahan &lt;email: pcal-at-bea-dot-com&gt;
    */
  -public class PropertyInitializer extends MElementVisitor {
  +public class PropertyInitializer extends MVisitor {
   
     // ========================================================================
     // Element visitor implementation
   
     public void visit(MClass clazz) {
       Map name2prop = new HashMap();
  -    MMethod[] methods = clazz.getEditableMethods();
  +    MMethod[] methods = clazz.getMutableMethods();
   
       for(int i=0; i<methods.length; i++) {
         String name = methods[i].getSimpleName();
  
  
  
  1.1                  xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/visitor/CompositeJVisitor.java
  
  Index: CompositeJVisitor.java
  ===================================================================
  /*   Copyright 2004 The Apache Software Foundation
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  package org.apache.xmlbeans.impl.jam.visitor;
  
  import org.apache.xmlbeans.impl.jam.JAnnotation;
  import org.apache.xmlbeans.impl.jam.JClass;
  import org.apache.xmlbeans.impl.jam.JComment;
  import org.apache.xmlbeans.impl.jam.JConstructor;
  import org.apache.xmlbeans.impl.jam.JField;
  import org.apache.xmlbeans.impl.jam.JMethod;
  import org.apache.xmlbeans.impl.jam.JPackage;
  import org.apache.xmlbeans.impl.jam.JParameter;
  
  /**
   * <p>Composite implementation of JVisitor.</p>
   *
   * @author Patrick Calahan &lt;email: pcal-at-bea-dot-com&gt;
   */
  public class CompositeJVisitor extends JVisitor {
  
    // ========================================================================
    // Variables
  
    private JVisitor[] mVisitors;
  
    // ========================================================================
    // Constructors
  
    public CompositeJVisitor(JVisitor[] visitors) {
      if (visitors == null) throw new IllegalArgumentException("null visitors");
      mVisitors = visitors;
    }
  
    // ========================================================================
    // JVisitor implementation
  
    public void visit(JPackage pkg) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(pkg);
    }
  
    public void visit(JClass clazz) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(clazz);
    }
  
    public void visit(JConstructor ctor) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(ctor);
    }
  
    public void visit(JField field) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(field);
    }
  
    public void visit(JMethod method) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(method);
    }
  
    public void visit(JParameter param) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(param);
    }
  
    public void visit(JAnnotation ann) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(ann);
    }
  
    public void visit(JComment comment) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(comment);
    }
  }
  
  
  
  1.1                  xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/visitor/CompositeMVisitor.java
  
  Index: CompositeMVisitor.java
  ===================================================================
  /*   Copyright 2004 The Apache Software Foundation
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  package org.apache.xmlbeans.impl.jam.visitor;
  
  import org.apache.xmlbeans.impl.jam.mutable.MAnnotation;
  import org.apache.xmlbeans.impl.jam.mutable.MClass;
  import org.apache.xmlbeans.impl.jam.mutable.MComment;
  import org.apache.xmlbeans.impl.jam.mutable.MConstructor;
  import org.apache.xmlbeans.impl.jam.mutable.MField;
  import org.apache.xmlbeans.impl.jam.mutable.MMethod;
  import org.apache.xmlbeans.impl.jam.mutable.MPackage;
  import org.apache.xmlbeans.impl.jam.mutable.MParameter;
  
  /**
   * <p>Composite implementation of MVisitor.</p>
   *
   * @author Patrick Calahan &lt;email: pcal-at-bea-dot-com&gt;
   */
  public class CompositeMVisitor extends MVisitor {
  
    // ========================================================================
    // Variables
  
    private MVisitor[] mVisitors;
  
    // ========================================================================
    // Constructors
  
    public CompositeMVisitor(MVisitor[] visitors) {
      if (visitors == null) throw new IllegalArgumentException("null visitors");
      mVisitors = visitors;
    }
  
    // ========================================================================
    // MVisitor implementation
  
    public void visit(MPackage pkg) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(pkg);
    }
  
    public void visit(MClass clazz) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(clazz);
    }
  
    public void visit(MConstructor ctor) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(ctor);
    }
  
    public void visit(MField field) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(field);
    }
  
    public void visit(MMethod method) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(method);
    }
  
    public void visit(MParameter param) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(param);
    }
  
    public void visit(MAnnotation ann) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(ann);
    }
  
    public void visit(MComment comment) {
      for(int i=0; i<mVisitors.length; i++) mVisitors[i].visit(comment);
    }
  
  
  }
  
  
  
  1.1                  xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/visitor/JVisitor.java
  
  Index: JVisitor.java
  ===================================================================
  /*   Copyright 2004 The Apache Software Foundation
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  package org.apache.xmlbeans.impl.jam.visitor;
  
  import org.apache.xmlbeans.impl.jam.JAnnotation;
  import org.apache.xmlbeans.impl.jam.JClass;
  import org.apache.xmlbeans.impl.jam.JComment;
  import org.apache.xmlbeans.impl.jam.JConstructor;
  import org.apache.xmlbeans.impl.jam.JField;
  import org.apache.xmlbeans.impl.jam.JMethod;
  import org.apache.xmlbeans.impl.jam.JPackage;
  import org.apache.xmlbeans.impl.jam.JParameter;
  
  /**
   * <p>To be extended by classes which wish to traverse an MElement tree.</p>
   *
   * @author Patrick Calahan &lt;email: pcal-at-bea-dot-com&gt;
   */
  public abstract class JVisitor {
  
    public void visit(JPackage pkg) {}
  
    public void visit(JClass clazz) {}
  
    public void visit(JConstructor ctor) {}
  
    public void visit(JField field) {}
  
    public void visit(JMethod method) {}
  
    public void visit(JParameter param) {}
  
    public void visit(JAnnotation ann) {}
  
    public void visit(JComment comment) {}
  }
  
  
  
  1.1                  xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/visitor/MVisitor.java
  
  Index: MVisitor.java
  ===================================================================
  /*   Copyright 2004 The Apache Software Foundation
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  package org.apache.xmlbeans.impl.jam.visitor;
  
  import org.apache.xmlbeans.impl.jam.mutable.MAnnotation;
  import org.apache.xmlbeans.impl.jam.mutable.MClass;
  import org.apache.xmlbeans.impl.jam.mutable.MComment;
  import org.apache.xmlbeans.impl.jam.mutable.MConstructor;
  import org.apache.xmlbeans.impl.jam.mutable.MField;
  import org.apache.xmlbeans.impl.jam.mutable.MMethod;
  import org.apache.xmlbeans.impl.jam.mutable.MPackage;
  import org.apache.xmlbeans.impl.jam.mutable.MParameter;
  
  /**
   * <p>To be extended by classes which wish to traverse an MElement tree.</p>
   *
   * @author Patrick Calahan &lt;email: pcal-at-bea-dot-com&gt;
   */
  public abstract class MVisitor {
  
    public void visit(MPackage pkg) {}
  
    public void visit(MClass clazz) {}
  
    public void visit(MConstructor ctor) {}
  
    public void visit(MField field) {}
  
    public void visit(MMethod method) {}
  
    public void visit(MParameter param) {}
  
    public void visit(MAnnotation ann) {}
  
    public void visit(MComment comment) {}
  
  }
  
  
  
  1.1                  xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/visitor/TraversingJVisitor.java
  
  Index: TraversingJVisitor.java
  ===================================================================
  /*   Copyright 2004 The Apache Software Foundation
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  package org.apache.xmlbeans.impl.jam.visitor;
  
  import org.apache.xmlbeans.impl.jam.JPackage;
  import org.apache.xmlbeans.impl.jam.JClass;
  import org.apache.xmlbeans.impl.jam.JConstructor;
  import org.apache.xmlbeans.impl.jam.JField;
  import org.apache.xmlbeans.impl.jam.JMethod;
  import org.apache.xmlbeans.impl.jam.JParameter;
  import org.apache.xmlbeans.impl.jam.JAnnotation;
  import org.apache.xmlbeans.impl.jam.JComment;
  import org.apache.xmlbeans.impl.jam.JAnnotatedElement;
  import org.apache.xmlbeans.impl.jam.JInvokable;
  
  /**
   * <p>Calls accept() with the given visitor, and then recursively calls
   * acceptAndWalk for each of our component elements2, if any.  Calling this
   * on an MClass will cause the MClass to accept the visitor, and then
   * all of it's declared fields constructors, and methods.  The parameter
   * for each constructor and method will also in turn be accepted.
   * Any annotations for each of these elements types will also be visited
   * after their other children have been visited.  Note that inherited
   * members are never visited, nor are referenced classes (e.g. referenced
   * via inheritance or member types).  </p>
   *
   * <table border='1'>
   * <tr><td><b>Element</b></td><td><b>Sub-elements traversal</b></td></tr>
   * <tr><td>Package       </td><td>Classes, Annotations, Comments</td></tr>
   * <tr><td>Class         </td><td>Fields, Constructors, Methods, Annotations, Comments</td></tr>
   * <tr><td>Field         </td><td>Annotations, Comments</td></tr>
   * <tr><td>Constructor   </td><td>Parameters, Annotations, Comments</td></tr>
   * <tr><td>Method        </td><td>Parameters, Annotations, Comments</td></tr>
   * <tr><td>Parameter     </td><td>Annotations, Comments</td></tr>
   * <tr><td>Annotation    </td><td>[none]</td></tr>
   * <tr><td>Comment       </td><td>[none]</td></tr>
   * </table>
   *
   * </p>
   * @author Patrick Calahan &lt;email: pcal-at-bea-dot-com&gt;
   */
  public class TraversingJVisitor extends JVisitor {
  
    // ========================================================================
    // Variables
  
    private JVisitor mDelegate;
  
    // ========================================================================
    // Constructors
  
    public TraversingJVisitor(JVisitor jv) {
      if (jv == null) throw new IllegalArgumentException("null jv");
      mDelegate = jv;
    }
  
    // ========================================================================
    // JVisitor implementation
  
    public void visit(JPackage pkg) {
      pkg.accept(mDelegate);
      JClass[] c = pkg.getClasses();
      for(int i=0; i<c.length; i++) visit(c[i]);
      visitAnnotations(pkg);
      visitComment(pkg);
    }
  
    public void visit(JClass clazz) {
      clazz.accept(mDelegate);
      {
        JField[] f = clazz.getDeclaredFields();
        for(int i=0; i<f.length; i++) visit(f[i]);
      }{
        JConstructor[] c = clazz.getConstructors();
        for(int i=0; i<c.length; i++) visit(c[i]);
      }{
        JMethod[] m = clazz.getMethods();
        for(int i=0; i<m.length; i++) visit(m[i]);
      }
      visitAnnotations(clazz);
      visitComment(clazz);
    }
  
    // ========================================================================
    // JElement implementation
  
    public void visit(JField field) {
      field.accept(mDelegate);
      visitAnnotations(field);
      visitComment(field);
    }
  
    public void visit(JConstructor ctor) {
      ctor.accept(mDelegate);
      visitParameters(ctor);
      visitAnnotations(ctor);
      visitComment(ctor);
    }
  
    public void visit(JMethod method) {
      method.accept(mDelegate);
      visitParameters(method);
      visitAnnotations(method);
      visitComment(method);
    }
  
    public void visit(JParameter param) {
      param.accept(mDelegate);
      visitAnnotations(param);
      visitComment(param);
    }
  
    public void visit(JAnnotation ann) { ann.accept(mDelegate); }
  
    public void visit(JComment comment) { comment.accept(mDelegate); }
  
    // ========================================================================
    // Private methods
  
    private void visitParameters(JInvokable iv) {
      JParameter[] p = iv.getParameters();
      for(int i=0; i<p.length; i++) visit(p[i]);
    }
  
    private void visitAnnotations(JAnnotatedElement ae) {
      JAnnotation[] anns = ae.getAnnotations();
      for(int i=0; i<anns.length; i++) visit(anns[i]);
    }
  
    private void visitComment(JAnnotatedElement e) {
      JComment c = e.getComment();
      if (c != null) visit(c);
    }
  }
  
  
  1.1                  xml-xmlbeans/v2/jam/src/org/apache/xmlbeans/impl/jam/visitor/TraversingMVisitor.java
  
  Index: TraversingMVisitor.java
  ===================================================================
  /*   Copyright 2004 The Apache Software Foundation
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  package org.apache.xmlbeans.impl.jam.visitor;
  
  import org.apache.xmlbeans.impl.jam.mutable.MComment;
  import org.apache.xmlbeans.impl.jam.mutable.MAnnotatedElement;
  import org.apache.xmlbeans.impl.jam.mutable.MAnnotation;
  import org.apache.xmlbeans.impl.jam.mutable.MParameter;
  import org.apache.xmlbeans.impl.jam.mutable.MInvokable;
  import org.apache.xmlbeans.impl.jam.mutable.MMethod;
  import org.apache.xmlbeans.impl.jam.mutable.MConstructor;
  import org.apache.xmlbeans.impl.jam.mutable.MField;
  import org.apache.xmlbeans.impl.jam.mutable.MClass;
  import org.apache.xmlbeans.impl.jam.mutable.MPackage;
  
  /**
   * <p>Calls accept() with the given visitor, and then recursively calls
   * acceptAndWalk for each of our component elements2, if any.  Calling this
   * on an MClass will cause the MClass to accept the visitor, and then
   * all of it's declared fields constructors, and methods.  The parameter
   * for each constructor and method will also in turn be accepted.
   * Any annotations for each of these elements types will also be visited
   * after their other children have been visited.  Note that inherited
   * members are never visited, nor are referenced classes (e.g. referenced
   * via inheritance or member types).  </p>
   *
   * <table border='1'>
   * <tr><td><b>Element</b></td><td><b>Sub-elements traversal</b></td></tr>
   * <tr><td>Package       </td><td>Classes, Annotations, Comments</td></tr>
   * <tr><td>Class         </td><td>Fields, Constructors, Methods, Annotations, Comments</td></tr>
   * <tr><td>Field         </td><td>Annotations, Comments</td></tr>
   * <tr><td>Constructor   </td><td>Parameters, Annotations, Comments</td></tr>
   * <tr><td>Method        </td><td>Parameters, Annotations, Comments</td></tr>
   * <tr><td>Parameter     </td><td>Annotations, Comments</td></tr>
   * <tr><td>Annotation    </td><td>[none]</td></tr>
   * <tr><td>Comment       </td><td>[none]</td></tr>
   * </table>
   *
   * </p>
   * @author Patrick Calahan &lt;email: pcal-at-bea-dot-com&gt;
   */
  public class TraversingMVisitor extends MVisitor {
  
    // ========================================================================
    // Variables
  
    private MVisitor mDelegate;
  
    // ========================================================================
    // Constructors
  
    public TraversingMVisitor(MVisitor jv) {
      if (jv == null) throw new IllegalArgumentException("null jv");
      mDelegate = jv;
    }
  
    // ========================================================================
    // JVisitor implementation
  
    public void visit(MPackage pkg) {
      pkg.accept(mDelegate);
      MClass[] c = pkg.getMutableClasses();
      for(int i=0; i<c.length; i++) visit(c[i]);
      visitAnnotations(pkg);
      visitComment(pkg);
    }
  
    public void visit(MClass clazz) {
      clazz.accept(mDelegate);
      {
        MField[] f = clazz.getMutableFields();
        for(int i=0; i<f.length; i++) visit(f[i]);
      }{
        MConstructor[] c = clazz.getMutableConstructors();
        for(int i=0; i<c.length; i++) visit(c[i]);
      }{
        MMethod[] m = clazz.getMutableMethods();
        for(int i=0; i<m.length; i++) visit(m[i]);
      }
      visitAnnotations(clazz);
      visitComment(clazz);
    }
  
    // ========================================================================
    // MElement implementation
  
    public void visit(MField field) {
      field.accept(mDelegate);
      visitAnnotations(field);
      visitComment(field);
    }
  
    public void visit(MConstructor ctor) {
      ctor.accept(mDelegate);
      visitParameters(ctor);
      visitAnnotations(ctor);
      visitComment(ctor);
    }
  
    public void visit(MMethod method) {
      method.accept(mDelegate);
      visitParameters(method);
      visitAnnotations(method);
      visitComment(method);
    }
  
    public void visit(MParameter param) {
      param.accept(mDelegate);
      visitAnnotations(param);
      visitComment(param);
    }
  
    public void visit(MAnnotation ann) { ann.accept(mDelegate); }
  
    public void visit(MComment comment) { comment.accept(mDelegate); }
  
    // ========================================================================
    // Private methods
  
    private void visitParameters(MInvokable iv) {
      MParameter[] p = iv.getMutableParameters();
      for(int i=0; i<p.length; i++) visit(p[i]);
    }
  
    private void visitAnnotations(MAnnotatedElement ae) {
      MAnnotation[] anns = ae.getMutableAnnotations();
      for(int i=0; i<anns.length; i++) visit(anns[i]);
    }
  
    private void visitComment(MAnnotatedElement e) {
      MComment c = e.getMutableComment();
      if (c != null) visit(c);
    }
  }
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org