Glenn Nielsen wrote:
> 
> Right, you mentioned that before.  
>

Ahh...I answer so many posts, I forget sometimes whether or not I've had
a discussion with someone on a specific topic.

> I posted an updated patch for others who may be interested in using it.  
> I have had requests for it.

Cool. Thanks for making it available to the list.

--Keith

> Keith Visco wrote:
> >
> > Hi Glenn,
> >
> > We can't use your patch. Castor XML is maintaining JDK 1.1
> > compatability. The Marshaller cannot include JDK 1.2+ collections.
> >
> > Thanks,
> >
> > --Keith
> >
> > Glenn Nielsen wrote:
> > >
> > > Attached is the patch I am maintaining for Castor which generates get/set methods
> > > which using Java2 Collections rather than Array [].  This patch can be applied
> > > to the HEAD of CVS for castor.
> > >
> > > Regards,
> > >
> > > Glenn
> > >
> > > ----------------------------------------------------------------------
> > > Glenn Nielsen             [EMAIL PROTECTED] | /* Spelin donut madder    |
> > > MOREnet System Programming               |  * if iz ina coment.      |
> > > Missouri Research and Education Network  |  */                       |
> > > ----------------------------------------------------------------------
> > >
> > >   ------------------------------------------------------------------------
> > > Index: src/main/org/exolab/castor/builder/CollectionInfoJ2.java
> > > ===================================================================
> > > RCS file: 
>/cvs/castor/castor/src/main/org/exolab/castor/builder/CollectionInfoJ2.java,v
> > > retrieving revision 1.18
> > > diff -u -r1.18 CollectionInfoJ2.java
> > > --- src/main/org/exolab/castor/builder/CollectionInfoJ2.java    24 Jan 2002 
>08:18:14 -0000      1.18
> > > +++ src/main/org/exolab/castor/builder/CollectionInfoJ2.java    9 Feb 2002 
>22:19:09 -0000
> > > @@ -129,8 +129,8 @@
> > >          method.addParameter(new JParameter(JType.Int, "index"));
> > >          createGetByIndexMethod(method);
> > >
> > > -        //-- {type}[] get{Name}
> > > -        method = new JMethod(jType.createArray(), "get"+cName);
> > > +        //-- ArrayList get{Name}
> > > +        method = new JMethod(getSchemaType().getJType(), "get"+cName);
> > >          jClass.addMethod(method);
> > >          createGetMethod(method);
> > >
> > > @@ -276,7 +276,7 @@
> > >      } //-- createEnumerateMethod
> > >
> > >      /**
> > > -     * Creates implementation of object[] get() method.
> > > +     * Creates implementation of ArrayList get() method.
> > >       *
> > >       * @param method the JMethod in which to create the source
> > >       * code.
> > > @@ -286,40 +286,9 @@
> > >          JSourceCode jsc = method.getSourceCode();
> > >          JType jType = method.getReturnType();
> > >
> > > -        jsc.add("int size = ");
> > > +        jsc.add("return ");
> > >          jsc.append(getName());
> > > -        jsc.append(".size();");
> > > -
> > > -        String variableName = getName()+".get(index)";
> > > -
> > > -        JType compType = jType.getComponentType();
> > > -
> > > -        jsc.add(compType.toString());
> > > -        jsc.append("[] mArray = new ");
> > > -        jsc.append(compType.toString());
> > > -        jsc.append("[size]");
> > > -        //-- if component is an array, we must add [] after setting
> > > -        //-- size
> > > -        if (compType.isArray()) jsc.append("[]");
> > > -        jsc.append(";");
> > > -
> > > -        jsc.add("for (int index = 0; index < size; index++) {");
> > > -        jsc.indent();
> > > -        jsc.add("mArray[index] = ");
> > > -        if (getContentType().getType() == XSType.CLASS) {
> > > -            jsc.append("(");
> > > -            jsc.append(jType.getLocalName());
> > > -            jsc.append(") ");
> > > -            jsc.append(variableName);
> > > -        }
> > > -        else {
> > > -            jsc.append(getContentType()
> > > -                       .createFromJavaObjectCode(variableName));
> > > -        }
> > >          jsc.append(";");
> > > -        jsc.unindent();
> > > -        jsc.add("}");
> > > -        jsc.add("return mArray;");
> > >      } //-- createGetMethod
> > >
> > >      /**
> > > Index: src/main/org/exolab/castor/xml/Marshaller.java
> > > ===================================================================
> > > RCS file: /cvs/castor/castor/src/main/org/exolab/castor/xml/Marshaller.java,v
> > > retrieving revision 1.92
> > > diff -u -r1.92 Marshaller.java
> > > --- src/main/org/exolab/castor/xml/Marshaller.java      9 Feb 2002 02:04:09 
>-0000       1.92
> > > +++ src/main/org/exolab/castor/xml/Marshaller.java      9 Feb 2002 22:19:43 -0000
> > > @@ -71,8 +71,10 @@
> > >  import java.io.Serializable;
> > >  import java.io.Writer;
> > >  import java.lang.reflect.*;
> > > +import java.util.ArrayList;
> > >  import java.util.Enumeration;
> > >  import java.util.Hashtable;
> > > +import java.util.Iterator;
> > >  import java.util.Vector;
> > >
> > >  /**
> > > @@ -774,6 +776,9 @@
> > >          if (saveType && (descriptor.getHandler() instanceof DateFieldHandler))
> > >              saveType = false;
> > >          //-- XXXX end Date fix
> > > +        //-- Suppress 'xsi:type' attributes when object is an ArrayList
> > > +        if (saveType && object instanceof ArrayList)
> > > +            saveType = false;
> > >
> > >          if (saveType) {
> > >
> > > @@ -1093,6 +1098,15 @@
> > >                      if (item != null)
> > >                         marshal(item, elemDescriptor, handler);
> > >                  }
> > > +            }
> > > +            //-- handle ArrayList
> > > +            else if (obj instanceof java.util.ArrayList) {
> > > +                Iterator it = ((ArrayList)obj).iterator();
> > > +                while (it.hasNext()) {
> > > +                    Object item = it.next();
> > > +                    if (item != null)
> > > +                       marshal(item, elemDescriptor, handler);
> > > +                }
> > >              }
> > >
> > >              else marshal(obj, elemDescriptor, handler);
> >
> > -----------------------------------------------------------
> > If you wish to unsubscribe from this mailing, send mail to
> > [EMAIL PROTECTED] with a subject of:
> >         unsubscribe castor-dev
> 
> --
> ----------------------------------------------------------------------
> Glenn Nielsen             [EMAIL PROTECTED] | /* Spelin donut madder    |
> MOREnet System Programming               |  * if iz ina coment.      |
> Missouri Research and Education Network  |  */                       |
> ----------------------------------------------------------------------
> 
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
>         unsubscribe castor-dev

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to