Hi Kieth, Yeah, I have run into this before. I wrote the Java SecurityManager implementation for Tomcat which required Java 2, yet Tomcat 3.x had to maintain compatability to both compile and run under JDK 1.1. It was a real pain implementing support for that.
Java 2 is becoming pretty ubiquitous. Are you planning at some point requiring Java 2 for Castor? Perhaps a survey of users to determine who still uses JDK 1.1 is in order. For now, any who are interested can use the patch I posted. And I will maintain it for my own build of castor. Regards, Glenn Keith Visco wrote: > > Hi Glenn, > > We can't use your patch at this point. The reason we haven't done this > ourselves is that the due to some of our users, the Marshaller needs to > be JDK 1.1 compliant. > > We will be adding a way to directly support JDK 1.2 collections, without > breaking the JDK 1.1 compliancy. > > JDK 1.2 collections are handled already in the Source Generator, because > the user can choose the appropriate CollectionHandler. > > Thanks, > > --Keith > > Glenn Nielsen wrote: > > > > Attached is an updated patch for elements with maxOccurs > 1 which > > switches the public {type} [] get method to public ArrayList get. > > > > Regards, > > > > Glenn > > > > Glenn Nielsen wrote: > > > > > > Attached is a patch which switchs the code generated for a get to > > > return an ArrayList instead of converting the ArrayList to an object [] > > > array. > > > > > > Regards, > > > > > > Glenn > > > > > > Glenn Nielsen wrote: > > > > > > > I use Castor to generate java source for elements which have maxOccurs > 1. > > > > I pass the arg -types j2 on the command line so that Castor will use Java 2 > > > > Collection types. Internally the code generated uses an ArrayList to store > > > > the element values. But the get method for that element converts the > > > > ArrayList > > > > to an array, then returns the array. Shouldn't the get method just > > > > return the > > > > ArrayList if you specify -types j2 to the source generator? > > > > > > > > Regards, > > > > > > > > Glenn > > > > > > > > ---------------------------------------------------------------------- > > > > 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 > > > > > > -- > > > ---------------------------------------------------------------------- > > > Glenn Nielsen [EMAIL PROTECTED] | /* Spelin donut madder | > > > MOREnet System Programming | * if iz ina coment. | > > > Missouri Research and Education Network | */ | > > > ---------------------------------------------------------------------- > > > > > > >------------------------------------------------------------------------------------------ > > > Name: castor-collectionj2.patch > > > castor-collectionj2.patch Type: Plain Text (text/plain) > > > Encoding: 7bit > > > > -- > > ---------------------------------------------------------------------- > > Glenn Nielsen [EMAIL PROTECTED] | /* Spelin donut madder | > > MOREnet System Programming | * if iz ina coment. | > > Missouri Research and Education Network | */ | > > ---------------------------------------------------------------------- > > > > ------------------------------------------------------------------------ > > diff -ur castor/src/main/org/exolab/castor/builder/CollectionInfoJ2.java >castor-patched/src/main/org/exolab/castor/builder/CollectionInfoJ2.java > > --- castor/src/main/org/exolab/castor/builder/CollectionInfoJ2.java Thu Aug 30 >14:49:24 2001 > > +++ castor-patched/src/main/org/exolab/castor/builder/CollectionInfoJ2.java >Wed Nov 14 06:59:40 2001 > > @@ -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 > > > > /** > > diff -ur castor/src/main/org/exolab/castor/xml/Marshaller.java >castor-patched/src/main/org/exolab/castor/xml/Marshaller.java > > --- castor/src/main/org/exolab/castor/xml/Marshaller.java Mon Oct 29 >15:45:39 2001 > > +++ castor-patched/src/main/org/exolab/castor/xml/Marshaller.java Wed Nov 14 >09:00:38 2001 > > @@ -72,8 +72,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; > > > > /** > > @@ -526,6 +528,7 @@ > > if (_debug) { > > System.out.println("Marshalling " + object.getClass().getName()); > > } > > + > > if (object instanceof AnyNode) { > > try{ > > AnyNode2SAX.fireEvents((AnyNode)object, _handler); > > @@ -694,6 +697,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) { > > // When the type of the instance of the field is not the > > @@ -968,6 +974,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