Index: bugs/xml/c1677/TestSourceGenerator.java =================================================================== --- bugs/xml/c1677/TestSourceGenerator.java (Revision 0) +++ bugs/xml/c1677/TestSourceGenerator.java (Revision 0) @@ -0,0 +1,29 @@ +package xml.c1677; + +// import java.util.Properties; + +import junit.framework.TestCase; + +import org.exolab.castor.builder.FieldInfoFactory; +import org.exolab.castor.builder.SourceGenerator; +import org.xml.sax.InputSource; + +public class TestSourceGenerator extends TestCase +{ + + public void testGeneration() throws Exception { + SourceGenerator generator = new SourceGenerator(new FieldInfoFactory("arraylist")); + String xmlSchema = getClass().getResource("test.xsd").toExternalForm(); + InputSource inputSource = new InputSource(xmlSchema); +// generator.setBinding(new InputSource(getClass().getResource("binding.xml").toExternalForm())); + generator.setDestDir("./src/bugs"); + generator.setSuppressNonFatalWarnings(true); + +// Properties properties = new Properties(); +// properties.load(getClass().getResource("special-castorbuilder.properties").openStream()); +// generator.setDefaultProperties(properties); + + generator.generateSource(inputSource, "xml.c1677.generated"); + } + +} Index: bugs/xml/c1677/test.xsd =================================================================== --- bugs/xml/c1677/test.xsd (Revision 0) +++ bugs/xml/c1677/test.xsd (Revision 0) @@ -0,0 +1,12 @@ + + + + + + + + + + + + Index: main/java/org/exolab/javasource/JCollectionType.java =================================================================== --- main/java/org/exolab/javasource/JCollectionType.java (Revision 6384) +++ main/java/org/exolab/javasource/JCollectionType.java (Arbeitskopie) @@ -8,15 +8,24 @@ public class JCollectionType extends JComponentizedType { /** + * Name of the actual collection instance to be used, + * e.g. java.util.ArrayList. + */ + private String _instanceName; + + /** * Creates an instance of a collection type, of type 'collectionName'. - * @param collectionName Name of the collection type. + * @param typeName Name of the collection type interface. + * @param instanceName Name of the actual collection type instance. * @param componentType Component type. * @param useJava50 True if Java 5.0 should be used. */ - public JCollectionType(final String collectionName, + public JCollectionType(final String typeName, + final String instanceName, final JType componentType, final boolean useJava50) { - super(collectionName, componentType, useJava50); + super(typeName, componentType, useJava50); + _instanceName = instanceName; } /** @@ -36,4 +45,21 @@ return super.toString(); } //-- toString + /** + * Returns the String representation of this JType, which is simply the name + * of this type. + * + * @return the String representation of this JType + */ + public final String getInstanceName() { + if (isUseJava50()) { + if (getComponentType().isPrimitive()) { + return _instanceName + "<" + getComponentType().getWrapperName() + ">"; + } + return _instanceName + "<" + getComponentType().toString() + ">"; + } + + return _instanceName; + } //-- toString + } Index: main/java/org/exolab/castor/builder/CollectionInfo.java =================================================================== --- main/java/org/exolab/castor/builder/CollectionInfo.java (Revision 6384) +++ main/java/org/exolab/castor/builder/CollectionInfo.java (Arbeitskopie) @@ -56,6 +56,7 @@ import org.exolab.castor.xml.JavaNaming; import org.exolab.javasource.JArrayType; import org.exolab.javasource.JClass; +import org.exolab.javasource.JCollectionType; import org.exolab.javasource.JDocComment; import org.exolab.javasource.JDocDescriptor; import org.exolab.javasource.JMethod; @@ -148,7 +149,8 @@ sourceCode.add("this."); sourceCode.append(this.getName()); sourceCode.append(" = new "); - sourceCode.append(this.getXSList().getJType().toString()); + JType jType = this.getXSList().getJType(); + sourceCode.append(((JCollectionType) jType).getInstanceName()); sourceCode.append("();"); } // -- generateConstructorCode Index: main/java/org/exolab/castor/builder/types/XSListJ2.java =================================================================== --- main/java/org/exolab/castor/builder/types/XSListJ2.java (Revision 6384) +++ main/java/org/exolab/castor/builder/types/XSListJ2.java (Arbeitskopie) @@ -60,7 +60,7 @@ super(contentType, useJava50); this.contentType = contentType; if (collectionType.equalsIgnoreCase("arraylist")) { - this.jType = new JCollectionType("java.util.ArrayList", contentType.getJType(), useJava50); + this.jType = new JCollectionType("java.util.List", "java.util.ArrayList", contentType.getJType(), useJava50); } // else if (collectionType.equalsIgnoreCase("collection")) { // this.jType = JType.createCollection("java.util.Collection", contentType.getJType()); Index: main/java/org/exolab/castor/builder/types/XSList.java =================================================================== --- main/java/org/exolab/castor/builder/types/XSList.java (Revision 6384) +++ main/java/org/exolab/castor/builder/types/XSList.java (Arbeitskopie) @@ -68,7 +68,7 @@ public XSList(XSType contentType, final boolean useJava50) { super(XSType.COLLECTION); this.contentType = contentType; - this.jType = new JCollectionType("java.util.Vector", contentType.getJType(), useJava50); + this.jType = new JCollectionType("java.util.Vector", "java.util.Vector", contentType.getJType(), useJava50); } //-- XSList Index: main/java/org/exolab/castor/builder/SGTypes.java =================================================================== --- main/java/org/exolab/castor/builder/SGTypes.java (Revision 6384) +++ main/java/org/exolab/castor/builder/SGTypes.java (Arbeitskopie) @@ -113,19 +113,19 @@ public static final JClass PropertyChangeSupport = new JClass("java.beans.PropertyChangeSupport"); public static final JType createEnumeration(final JType jType, final boolean usejava50) { - return new JCollectionType("java.util.Enumeration", jType, usejava50); + return new JCollectionType("java.util.Enumeration", "java.util.Enumeration", jType, usejava50); } public static final JType createIterator(final JType jType, final boolean usejava50) { - return new JCollectionType("java.util.Iterator", jType, usejava50); + return new JCollectionType("java.util.Iterator", "java.util.Iterator", jType, usejava50); } public static final JType createVector(final JType jType, final boolean usejava50) { - return new JCollectionType("java.util.Vector", jType, usejava50); + return new JCollectionType("java.util.Vector", "java.util.Vector", jType, usejava50); } public static final JType createArrayList(final JType jType, final boolean usejava50) { - return new JCollectionType("java.util.ArrayList", jType, usejava50); + return new JCollectionType("java.util.List", "java.util.ArrayList", jType, usejava50); } public static final JType createHashtable(final boolean useJava50) {