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 da...@apache.org on 2004/03/13 01:33:22 UTC

cvs commit: xml-xmlbeans/v2/test/cases/schema/XmlSignature xmldsig-core-schema.xsd

daveremy    2004/03/12 16:33:22

  Modified:    v2/src/binding/org/apache/xmlbeans/impl/binding/bts
                        BindingProperty.java BuiltinBindingLoader.java
                        JavaTypeName.java WrappedArrayType.java
               v2/src/binding/org/apache/xmlbeans/impl/binding/compile
                        BindingCompiler.java Both2Bind.java
                        Schema2Java.java Schema2JavaTask.java
               v2/src/binding/org/apache/xmlbeans/impl/binding/tylar
                        BaseTylarImpl.java
               v2/src/common/org/apache/xmlbeans/impl/common NameUtil.java
               v2/src/configschema/schema binding-config.xsd
               v2/src/marshal/org/apache/xmlbeans/impl/marshal
                        BindingContextFactoryImpl.java
                        RuntimeBindingTypeTable.java
                        WrappedArrayRuntimeBindingType.java
               v2/test/cases/marshal example_config.xml
               v2/test/cases/schema/XmlSignature xmldsig-core-schema.xsd
  Added:       v2/src/binding/org/apache/xmlbeans/impl/binding/bts
                        DefaultBuiltinBindingLoader.java
                        JaxRpcBuiltinBindingLoader.java
  Log:
  Schema2Java checkin: implemented arrays and added a switch for toggling the
  naming rules and simple type mappings between jax-rpc and xmlbeans default
  (see thread on xmlbeans-dev).
  Also removed the DTD from one of our test files, since it was causing problems.
  Contributed by Radu Preotiuc.
  
  Revision  Changes    Path
  1.14      +0 -9      xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/BindingProperty.java
  
  Index: BindingProperty.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/BindingProperty.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- BindingProperty.java	11 Mar 2004 21:26:46 -0000	1.13
  +++ BindingProperty.java	13 Mar 2004 00:33:21 -0000	1.14
  @@ -34,7 +34,6 @@
     private MethodName issetter;
     private String field;
     private JavaTypeName collection;
  -  private JavaTypeName boxed;
   
     // ========================================================================
     // Constructors
  @@ -152,14 +151,6 @@
   
     public void setCollectionClass(JavaTypeName jName) {
       collection = jName;
  -  }
  -
  -  public JavaTypeName getBoxedClass() {
  -    return boxed;
  -  }
  -
  -  public void setBoxedClass(JavaTypeName jName) {
  -    boxed = jName;
     }
   
     // ========================================================================
  
  
  
  1.13      +12 -96    xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/BuiltinBindingLoader.java
  
  Index: BuiltinBindingLoader.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/BuiltinBindingLoader.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- BuiltinBindingLoader.java	9 Mar 2004 00:35:30 -0000	1.12
  +++ BuiltinBindingLoader.java	13 Mar 2004 00:33:21 -0000	1.13
  @@ -22,20 +22,21 @@
   /**
    * Represents builtin bindings.
    */
  -public class BuiltinBindingLoader extends BaseBindingLoader {
  +public abstract class BuiltinBindingLoader extends BaseBindingLoader {
   
     // ========================================================================
     // Constants
   
     private static final String xsns = "http://www.w3.org/2001/XMLSchema";
   
  -  private static final BuiltinBindingLoader INSTANCE = new BuiltinBindingLoader();
  -
     // ========================================================================
  -  // Factory
  -
  -  public static BindingLoader getInstance() {
  -    return INSTANCE;
  +  // Static methods
  +        
  +  public static BindingLoader getBuiltinBindingLoader(boolean jaxRpc) {
  +    if (jaxRpc)
  +      return JaxRpcBuiltinBindingLoader.getInstance();
  +    else
  +      return DefaultBuiltinBindingLoader.getInstance();
     }
   
     // ========================================================================
  @@ -62,104 +63,19 @@
       }
     }
   
  -  private void addPojoTwoWay(String xmlType, String javaName) {
  +  protected void addPojoTwoWay(String xmlType, String javaName) {
       addMapping(xmlType, javaName, true, true);
     }
   
  -  private void addPojoXml(String xmlType, String javaName) {
  +  protected void addPojoXml(String xmlType, String javaName) {
       addMapping(xmlType, javaName, false, true);
     }
   
  -  private void addPojoJava(String xmlType, String javaName) {
  +  protected void addPojoJava(String xmlType, String javaName) {
       addMapping(xmlType, javaName, true, false);
     }
   
  -  private void addPojo(String xmlType, String javaName) {
  +  protected void addPojo(String xmlType, String javaName) {
       addMapping(xmlType, javaName, false, false);
     }
  -
  -  private BuiltinBindingLoader() {
  -    // todo: should each builtin binding type know about it's print/parse methods?
  -
  -    addPojoXml("anySimpleType", "java.lang.String");
  -
  -    addPojoTwoWay("anyType", "java.lang.Object");
  -
  -    addPojoTwoWay("string", "java.lang.String");
  -    addPojoXml("normalizedString", "java.lang.String");
  -    addPojoXml("token", "java.lang.String");
  -    addPojoXml("language", "java.lang.String");
  -    addPojoXml("Name", "java.lang.String");
  -    addPojoXml("NCName", "java.lang.String");
  -    addPojoXml("NMTOKEN", "java.lang.String");
  -    addPojoXml("NMTOKENS", "java.lang.String[]");
  -    addPojoXml("ID", "java.lang.String");
  -    addPojoXml("IDREF", "java.lang.String");
  -    addPojoXml("IDREFS", "java.lang.String[]");
  -    addPojoXml("ENTITY", "java.lang.String");
  -    addPojoXml("ENTITIES", "java.lang.String[]");
  -
  -    addPojoXml("duration", "java.lang.String");
  -    addPojoJava("duration", "org.apache.xmlbeans.GDuration");
  -
  -    addPojoTwoWay("dateTime", "java.util.Calendar");
  -    addPojoJava("dateTime", "java.util.Date");
  -    addPojoXml("time", "java.util.Calendar");
  -    addPojoXml("date", "java.util.Calendar");
  -    addPojo("date", "java.util.Date");
  -    addPojoXml("gYearMonth", "java.lang.String");
  -    addPojo("gYearMonth", "java.util.Calendar");
  -    addPojoXml("gYear", "java.lang.String");
  -    addPojo("gYear", "java.util.Calendar");
  -    addPojo("gYear", "int");
  -    addPojoXml("gMonthDay", "java.lang.String");
  -    addPojo("gMonthDay", "java.util.Calendar");
  -    addPojoXml("gMonth", "java.lang.String");
  -    addPojo("gMonth", "java.util.Calendar");
  -    addPojo("gMonth", "int");
  -    addPojoXml("gDay", "java.lang.String");
  -    addPojo("gDay", "java.util.Calendar");
  -    addPojo("gDay", "int");
  -
  -    addPojoTwoWay("boolean", "boolean");
  -    addPojoTwoWay("base64Binary", "byte[]");
  -    addPojoJava("base64Binary", "java.io.InputStream");
  -    addPojoXml("hexBinary", "byte[]");
  -    addPojo("hexBinary", "java.io.InputStream");
  -    addPojoTwoWay("float", "float");
  -    addPojoTwoWay("double", "double");
  -    addPojoTwoWay("decimal", "java.math.BigDecimal");
  -    addPojoTwoWay("integer", "java.math.BigInteger");
  -    addPojoTwoWay("long", "long");
  -    addPojoTwoWay("int", "int");
  -    addPojoTwoWay("short", "short");
  -    addPojoTwoWay("byte", "byte");
  -    addPojoXml("nonPositiveInteger", "java.math.BigInteger");
  -    addPojoXml("negativeInteger", "java.math.BigInteger");
  -    addPojoXml("nonNegativeInteger", "java.math.BigInteger");
  -    addPojoXml("positiveInteger", "java.math.BigInteger");
  -    addPojoXml("unsignedLong", "java.math.BigInteger");
  -    addPojoXml("unsignedInt", "long");
  -    addPojoXml("unsignedShort", "int");
  -    addPojoXml("unsignedByte", "short");
  -    addPojoXml("anyURI", "java.lang.String");
  -    addPojoJava("anyURI", "java.net.URI");
  -    addPojoTwoWay("QName", "javax.xml.namespace.QName");
  -    addPojoXml("NOTATION", "java.lang.String");
  -
  -    addPojoJava("float", Float.class.getName());
  -    addPojoJava("double", Double.class.getName());
  -    addPojoJava("long", Long.class.getName());
  -    addPojoJava("int", Integer.class.getName());
  -    addPojoJava("short", Short.class.getName());
  -    addPojoJava("byte", Byte.class.getName());
  -    addPojoJava("boolean", Boolean.class.getName());
  -    addPojoJava("unsignedInt", Long.class.getName());
  -    addPojoJava("unsignedShort", Integer.class.getName());
  -    addPojoJava("unsignedByte", Short.class.getName());
  -
  -    //TODO: deal with char and java.lang.Character
  -
  -  }
  -
   }
  
  
  
  1.10      +0 -18     xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/JavaTypeName.java
  
  Index: JavaTypeName.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/JavaTypeName.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- JavaTypeName.java	11 Mar 2004 21:26:46 -0000	1.9
  +++ JavaTypeName.java	13 Mar 2004 00:33:21 -0000	1.10
  @@ -49,12 +49,6 @@
     // Constants
   
     private static String XMLOBJECT_CLASSNAME = XmlObject.class.getName();
  -  private static String[] PRIMITIVE_TYPES =
  -  {"int", "boolean", "float", "long", "double", "short", "char"};
  -  private static String[] BOXED_TYPES =
  -  {"java.lang.Integer", "java.lang.Boolean", "java.lang.Float",
  -   "java.lang.Long", "java.lang.Double", "java.lang.Short",
  -   "java.lang.Character"};
   
     // ========================================================================
     // Variables
  @@ -113,18 +107,6 @@
       return forString(itemType.toString() + arrayBrackets);
     }
   
  -
  -  /**
  -   * Builds a JavaTypeName for the boxed type corresponding to the
  -   * given JavaTypeName.
  -   */
  -  public static JavaTypeName forBoxed(JavaTypeName type) {
  -    // We could use a map here and initialize it on first use
  -    for (int i = 0; i < PRIMITIVE_TYPES.length; i++)
  -      if (PRIMITIVE_TYPES[i].equals(type.toString()))
  -        return forString(BOXED_TYPES[i]);
  -    return null;
  -  }
   
   
     /**
  
  
  
  1.3       +7 -7      xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/WrappedArrayType.java
  
  Index: WrappedArrayType.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/WrappedArrayType.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WrappedArrayType.java	6 Mar 2004 01:46:00 -0000	1.2
  +++ WrappedArrayType.java	13 Mar 2004 00:33:21 -0000	1.3
  @@ -31,7 +31,7 @@
   
       private QName itemName;
       private BindingTypeName itemType;
  -    private boolean nillable;
  +    private boolean itemNillable;
   
       // ========================================================================
       // Constructors
  @@ -57,7 +57,7 @@
           final XmlTypeName xName = XmlTypeName.forString(itype.getXmlcomponent());
           this.itemType = BindingTypeName.forPair(jName, xName);
   
  -        nillable = node.getNillable();
  +        itemNillable = node.getItemNillable();
       }
   
   
  @@ -73,7 +73,7 @@
           mapping.setJavatype(itemType.getJavaName().toString());
           mapping.setXmlcomponent(itemType.getXmlName().toString());
   
  -        wa.setNillable(nillable);
  +        wa.setItemNillable(itemNillable);
           
           return wa;
       }
  @@ -106,14 +106,14 @@
           this.itemType = itemType;
       }
   
  -    public boolean isNillable()
  +    public boolean isItemNillable()
       {
  -        return nillable;
  +        return itemNillable;
       }
   
  -    public void setNillable(boolean nillable)
  +    public void setItemNillable(boolean nillable)
       {
  -        this.nillable = nillable;
  +        this.itemNillable = nillable;
       }
   
   }
  
  
  
  1.1                  xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/DefaultBuiltinBindingLoader.java
  
  Index: DefaultBuiltinBindingLoader.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.binding.bts;
  
  import org.apache.xmlbeans.impl.binding.bts.BindingType;
  
  import javax.xml.namespace.QName;
  
  /**
   * Represents builtin bindings.
   */
  public class DefaultBuiltinBindingLoader extends BuiltinBindingLoader {
  
    // ========================================================================
    // Constants
  
    private static final String xsns = "http://www.w3.org/2001/XMLSchema";
    private static final BuiltinBindingLoader INSTANCE = new DefaultBuiltinBindingLoader();
  
    // ========================================================================
    // Factory
  
    public static BindingLoader getInstance() {
      return INSTANCE;
    }
  
    // ========================================================================
    // Private methods
  
    private DefaultBuiltinBindingLoader() {
      // todo: should each builtin binding type know about it's print/parse methods?
  
      addPojoXml("anySimpleType", "java.lang.String");
  
      addPojoTwoWay("anyType", "java.lang.Object");
  
      addPojoTwoWay("string", "java.lang.String");
      addPojoXml("normalizedString", "java.lang.String");
      addPojoXml("token", "java.lang.String");
      addPojoXml("language", "java.lang.String");
      addPojoXml("Name", "java.lang.String");
      addPojoXml("NCName", "java.lang.String");
      addPojoXml("NMTOKEN", "java.lang.String");
      addPojoXml("NMTOKENS", "java.lang.String[]");
      addPojoXml("ID", "java.lang.String");
      addPojoXml("IDREF", "java.lang.String");
      addPojoXml("IDREFS", "java.lang.String[]");
      addPojoXml("ENTITY", "java.lang.String");
      addPojoXml("ENTITIES", "java.lang.String[]");
  
      addPojoTwoWay("duration", "org.apache.xmlbeans.GDuration");
  
      addPojoTwoWay("dateTime", "java.util.Calendar");
      addPojoJava("dateTime", "java.util.Date");
      addPojoXml("time", "java.util.Calendar");
      addPojoXml("date", "java.util.Calendar");
      addPojo("date", "java.util.Date");
      addPojoXml("gYearMonth", "java.util.Calendar");
      addPojoXml("gYear", "java.util.Calendar");
      addPojo("gYear", "int");
      addPojoXml("gMonthDay", "java.util.Calendar");
      addPojoXml("gMonth", "java.util.Calendar");
      addPojo("gMonth", "int");
      addPojoXml("gDay", "java.util.Calendar");
      addPojo("gDay", "int");
  
      addPojoTwoWay("boolean", "boolean");
      addPojoTwoWay("base64Binary", "byte[]");
      addPojoJava("base64Binary", "java.io.InputStream");
      addPojoXml("hexBinary", "byte[]");
      addPojo("hexBinary", "java.io.InputStream");
      addPojoTwoWay("float", "float");
      addPojoTwoWay("double", "double");
      addPojoTwoWay("decimal", "java.math.BigDecimal");
      addPojoTwoWay("integer", "java.math.BigInteger");
      addPojoTwoWay("long", "long");
      addPojoTwoWay("int", "int");
      addPojoTwoWay("short", "short");
      addPojoTwoWay("byte", "byte");
      addPojoXml("nonPositiveInteger", "java.math.BigInteger");
      addPojoXml("negativeInteger", "java.math.BigInteger");
      addPojoXml("nonNegativeInteger", "java.math.BigInteger");
      addPojoXml("positiveInteger", "java.math.BigInteger");
      addPojoXml("unsignedLong", "java.math.BigInteger");
      addPojoXml("unsignedInt", "long");
      addPojoXml("unsignedShort", "int");
      addPojoXml("unsignedByte", "short");
      addPojoXml("anyURI", "java.lang.String");
      addPojoJava("anyURI", "java.net.URI");
      addPojoTwoWay("QName", "javax.xml.namespace.QName");
      addPojoXml("NOTATION", "java.lang.String");
  
      addPojoJava("float", Float.class.getName());
      addPojoJava("double", Double.class.getName());
      addPojoJava("long", Long.class.getName());
      addPojoJava("int", Integer.class.getName());
      addPojoJava("short", Short.class.getName());
      addPojoJava("byte", Byte.class.getName());
      addPojoJava("boolean", Boolean.class.getName());
      addPojoJava("unsignedInt", Long.class.getName());
      addPojoJava("unsignedShort", Integer.class.getName());
      addPojoJava("unsignedByte", Short.class.getName());
  
      //TODO: deal with char and java.lang.Character
  
    }
  
  }
  
  
  
  1.1                  xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/bts/JaxRpcBuiltinBindingLoader.java
  
  Index: JaxRpcBuiltinBindingLoader.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.binding.bts;
  
  import org.apache.xmlbeans.impl.binding.bts.BindingType;
  
  import javax.xml.namespace.QName;
  
  /**
   * Represents builtin bindings in JAX-RPC style
   */
  public class JaxRpcBuiltinBindingLoader extends BuiltinBindingLoader {
  
    // ========================================================================
    // Constants
  
    private static final String xsns = "http://www.w3.org/2001/XMLSchema";
    private static final BuiltinBindingLoader INSTANCE = new JaxRpcBuiltinBindingLoader();
  
    // ========================================================================
    // Factory
  
    public static BindingLoader getInstance() {
      return INSTANCE;
    }
  
    // ========================================================================
    // Private methods
  
    private JaxRpcBuiltinBindingLoader() {
      // todo: should each builtin binding type know about it's print/parse methods?
  
      addPojoXml("anySimpleType", "java.lang.String");
  
      addPojoTwoWay("anyType", "java.lang.Object");
  
      addPojoTwoWay("string", "java.lang.String");
      addPojoXml("normalizedString", "java.lang.String");
      addPojoXml("token", "java.lang.String");
      addPojoXml("language", "java.lang.String");
      addPojoXml("Name", "java.lang.String");
      addPojoXml("NCName", "java.lang.String");
      addPojoXml("NMTOKEN", "java.lang.String");
      addPojoXml("NMTOKENS", "java.lang.String[]");
      addPojoXml("ID", "java.lang.String");
      addPojoXml("IDREF", "java.lang.String");
      addPojoXml("IDREFS", "java.lang.String[]");
      addPojoXml("ENTITY", "java.lang.String");
      addPojoXml("ENTITIES", "java.lang.String[]");
  
      addPojoXml("duration", "java.lang.String");
      addPojoJava("duration", "org.apache.xmlbeans.GDuration");
  
      addPojoTwoWay("dateTime", "java.util.Calendar");
      addPojoJava("dateTime", "java.util.Date");
      addPojoXml("time", "java.util.Calendar");
      addPojoXml("date", "java.util.Calendar");
      addPojo("date", "java.util.Date");
      addPojoXml("gYearMonth", "java.lang.String");
      addPojo("gYearMonth", "java.util.Calendar");
      addPojoXml("gYear", "java.lang.String");
      addPojo("gYear", "java.util.Calendar");
      addPojo("gYear", "int");
      addPojoXml("gMonthDay", "java.lang.String");
      addPojo("gMonthDay", "java.util.Calendar");
      addPojoXml("gMonth", "java.lang.String");
      addPojo("gMonth", "java.util.Calendar");
      addPojo("gMonth", "int");
      addPojoXml("gDay", "java.lang.String");
      addPojo("gDay", "java.util.Calendar");
      addPojo("gDay", "int");
  
      addPojoTwoWay("boolean", "boolean");
      addPojoTwoWay("base64Binary", "byte[]");
      addPojoJava("base64Binary", "java.io.InputStream");
      addPojoXml("hexBinary", "byte[]");
      addPojo("hexBinary", "java.io.InputStream");
      addPojoTwoWay("float", "float");
      addPojoTwoWay("double", "double");
      addPojoTwoWay("decimal", "java.math.BigDecimal");
      addPojoTwoWay("integer", "java.math.BigInteger");
      addPojoTwoWay("long", "long");
      addPojoTwoWay("int", "int");
      addPojoTwoWay("short", "short");
      addPojoTwoWay("byte", "byte");
      addPojoXml("nonPositiveInteger", "java.math.BigInteger");
      addPojoXml("negativeInteger", "java.math.BigInteger");
      addPojoXml("nonNegativeInteger", "java.math.BigInteger");
      addPojoXml("positiveInteger", "java.math.BigInteger");
      addPojoXml("unsignedLong", "java.math.BigInteger");
      addPojoXml("unsignedInt", "long");
      addPojoXml("unsignedShort", "int");
      addPojoXml("unsignedByte", "short");
      addPojo("anyURI", "java.lang.String");
      addPojoTwoWay("anyURI", "java.net.URI");
      addPojoTwoWay("QName", "javax.xml.namespace.QName");
      addPojoXml("NOTATION", "java.lang.String");
  
      addPojoJava("float", Float.class.getName());
      addPojoJava("double", Double.class.getName());
      addPojoJava("long", Long.class.getName());
      addPojoJava("int", Integer.class.getName());
      addPojoJava("short", Short.class.getName());
      addPojoJava("byte", Byte.class.getName());
      addPojoJava("boolean", Boolean.class.getName());
      addPojoJava("unsignedInt", Long.class.getName());
      addPojoJava("unsignedShort", Integer.class.getName());
      addPojoJava("unsignedByte", Short.class.getName());
  
      //TODO: deal with char and java.lang.Character
  
    }
  
  }
  
  
  
  1.15      +2 -3      xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/BindingCompiler.java
  
  Index: BindingCompiler.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/BindingCompiler.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- BindingCompiler.java	12 Mar 2004 06:26:37 -0000	1.14
  +++ BindingCompiler.java	13 Mar 2004 00:33:22 -0000	1.15
  @@ -205,7 +205,7 @@
       assertCompilationStarted(true);
       BindingLoader builtin =
         (mBuiltinBindingLoader != null) ? mBuiltinBindingLoader :
  -        BuiltinBindingLoader.getInstance();
  +        BuiltinBindingLoader.getBuiltinBindingLoader(false);
       if (mBaseTylar == null) return builtin;
       BindingLoader[] loaders = new BindingLoader[]
       { mBaseTylar.getBindingLoader(), builtin };
  @@ -272,8 +272,7 @@
     }
   
     /**
  -   * <p>Sets the builtin binding loader to use.  By default, this is
  -   * simply BuiltinBindingLoader.getInstance().  This method should
  +   * <p>Sets the builtin binding loader to use. This method should
      * remain protected - user code should not be setting this directly,
      * though they may set it indirectly via, for example, a 'binding style'
      * switch.</p>
  
  
  
  1.9       +1 -1      xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Both2Bind.java
  
  Index: Both2Bind.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Both2Bind.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Both2Bind.java	11 Mar 2004 21:26:46 -0000	1.8
  +++ Both2Bind.java	13 Mar 2004 00:33:22 -0000	1.9
  @@ -247,7 +247,7 @@
         return null;
   
       // See if the java class is actually a compatible primitive
  -    BindingLoader builtins = BuiltinBindingLoader.getInstance();
  +    BindingLoader builtins = BuiltinBindingLoader.getBuiltinBindingLoader(false);         
   
       // find the closest simple base type
       while (!sType.isSimpleType())
  
  
  
  1.16      +260 -89   xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Schema2Java.java
  
  Index: Schema2Java.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Schema2Java.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Schema2Java.java	6 Mar 2004 21:25:25 -0000	1.15
  +++ Schema2Java.java	13 Mar 2004 00:33:22 -0000	1.16
  @@ -64,6 +64,17 @@
     private BindingFile bindingFile = new BindingFile();
     private JavaOutputStream mJoust = null;
     private CompilingJavaOutputStream mDefaultJoust = null;
  +  private boolean mJaxRpcRules;
  +
  +  // ========================================================================
  +  // Constants
  +
  +  private static String[] PRIMITIVE_TYPES =
  +  {"int", "boolean", "float", "long", "double", "short", "char"};
  +  private static String[] BOXED_TYPES =
  +  {"java.lang.Integer", "java.lang.Boolean", "java.lang.Float",
  +   "java.lang.Long", "java.lang.Double", "java.lang.Short",
  +   "java.lang.Character"};
   
     // ========================================================================
     // Constructors
  @@ -135,6 +146,16 @@
       getDefaultJoust().setKeepGenerated(b);
     }
   
  +  /**
  +   * Sets whether the compiler should use the JAX-RPC rules for mapping simple
  +   * types and XMLNames to Java. By default, the XMLBeans rules are used,
  +   * which are in fact almost identical.
  +   */
  +  public void setJaxRpcRules(boolean b) {
  +    assertCompilationStarted(false);
  +    mJaxRpcRules = b;
  +  }
  +
     // ========================================================================
     // BindingCompiler implementation
   
  @@ -190,6 +211,7 @@
       //sanity check
       if (mJoust == null) throw new IllegalStateException("joust not set");
   
  +    setBuiltinBindingLoader(BuiltinBindingLoader.getBuiltinBindingLoader(mJaxRpcRules));
       mLoader = super.getBaseBindingLoader();
   
       // Every type or global element or global attribute is dropped into
  @@ -219,7 +241,9 @@
   
       // 4. fill in the java getter/setter structure of any complex types
       for (Iterator i = scratchIterator(); i.hasNext();) {
  -      resolveJavaStructure((Scratch) i.next());
  +      Scratch scratch = (Scratch) i.next();
  +      resolveJavaStructure(scratch);
  +      resolveJavaArray(scratch);
       }
     }
   
  @@ -330,14 +354,14 @@
             if (itemName != null)
                 if (nillable)
                 {
  -                  JavaTypeName boxedName = JavaTypeName.forBoxed(itemName);
  -                  if (boxedName != null)
  -                      scratch.setJavaName(JavaTypeName.forArray(boxedName, 1));
  -                  else
  -                      scratch.setJavaName(JavaTypeName.forArray(itemName, 1));
  +                JavaTypeName boxedName = getBoxedName(itemName);
  +                if (boxedName != null)
  +                  scratch.setJavaName(JavaTypeName.forArray(boxedName, 1));
  +                else
  +                  scratch.setJavaName(JavaTypeName.forArray(itemName, 1));
                 }
                 else
  -                  scratch.setJavaName(JavaTypeName.forArray(itemName, 1));
  +                scratch.setJavaName(JavaTypeName.forArray(itemName, 1));
             return;
           }
   
  @@ -398,14 +422,14 @@
             if (contentName != null)
                 if (nillable)
                 {
  -                  JavaTypeName boxedName = JavaTypeName.forBoxed(contentName);
  -                  if (boxedName != null)
  -                      scratch.setJavaName(boxedName);
  -                  else
  -                      scratch.setJavaName(contentName);
  +                JavaTypeName boxedName = getBoxedName(contentName);
  +                if (boxedName != null)
  +                  scratch.setJavaName(boxedName);
  +                else
  +                  scratch.setJavaName(contentName);
                 }
                 else
  -                  scratch.setJavaName(contentName);
  +                scratch.setJavaName(contentName);
             return;
           }
   
  @@ -440,13 +464,20 @@
           break;
   
         case Scratch.STRUCT_TYPE:
  -        ByNameBean byNameResult = new ByNameBean(btName);
  -        scratch.setBindingType(byNameResult);
  -        bindingFile.addBindingType(byNameResult, true, true);
  +        BindingType structResult;
  +        if (scratch.getSchemaType().getContentType() == SchemaType.SIMPLE_CONTENT)
  +          structResult = new SimpleContentBean(btName);
  +        else
  +          structResult = new ByNameBean(btName);
  +        scratch.setBindingType(structResult);
  +        bindingFile.addBindingType(structResult, true, true);
           break;
   
         case Scratch.LITERALARRAY_TYPE:
  -        throw new UnsupportedOperationException();
  +        WrappedArrayType arrayResult = new WrappedArrayType(btName);
  +        scratch.setBindingType(arrayResult);
  +        bindingFile.addBindingType(arrayResult, true, true);
  +        break;
   
         case Scratch.SOAPARRAY:
           throw new UnsupportedOperationException();
  @@ -491,11 +522,6 @@
       SchemaType schemaType = scratch.getSchemaType();
       SchemaType baseType = schemaType.getBaseType();
       int derivationType  = schemaType.getDerivationType();
  -    if (derivationType == SchemaType.DT_RESTRICTION)
  -    {
  -        // Derivation type is restriction, so no new properties may be added
  -        return;
  -    }
       Collection baseProperties = null;
       if (baseType != null)
         baseProperties = extractProperties(baseType);
  @@ -522,27 +548,31 @@
           seenMethodNames.add(prop.getSetterName());
       }
   
  -    if (schemaType.getContentType() == SchemaType.SIMPLE_CONTENT &&
  -        baseType.isSimpleType())
  +    if (schemaType.getContentType() == SchemaType.SIMPLE_CONTENT/* &&
  +        baseType.isSimpleType()*/) {
  +      // Go up the type hierarchy to find the first simple type ancestor of
  +      // this complex type
  +      while (!baseType.isSimpleType())
  +        baseType = baseType.getBaseType();
  +      // we have to add a '_value' property to hold the value corresponding to the
  +      // content of the XML elem
  +      BindingType bType = extractBindingType(baseType);
  +      if (bType == null)
  +        throw new IllegalStateException("Type " + baseType.getName() +
  +          "not found in type loader");
  +      String propName = "_value";
  +      SimpleContentProperty prop = new SimpleContentProperty();
  +      prop.setSetterName(MethodName.create("set" + propName,
  +          bType.getName().getJavaName()));
  +      prop.setGetterName(MethodName.create("get" + propName));
  +      prop.setBindingType(bType);
  +      scratch.addSimpleContentProperty(prop);
  +    }
  +
  +    if (derivationType == SchemaType.DT_RESTRICTION)
       {
  -        // we have to add a '_value' property to hold the value corresponding to the
  -        // content of the XML elem
  -        BindingType bType = extractBindingType(baseType);
  -        if (bType == null)
  -            throw new IllegalStateException("Type " + baseType.getName() +
  -                "not found in type loader");
  -        String propName = "_value";
  -        QNameProperty prop = new QNameProperty();
  -        prop.setQName(null);
  -        prop.setAttribute(false);
  -        prop.setSetterName(MethodName.create("set" + propName,
  -                bType.getName().getJavaName()));
  -        prop.setGetterName(MethodName.create("get" + propName));
  -        prop.setBindingType(bType);
  -        prop.setNillable(false);
  -        prop.setOptional(false);
  -        prop.setMultiple(false);
  -        scratch.addQNameProperty(prop);
  +        // Derivation type is restriction, so no new properties may be added
  +        return;
       }
   
       // now deal with remaining props
  @@ -562,8 +592,8 @@
           SchemaType sType = props[i].getType();
           BindingType bType = bindingTypeForSchemaType(sType);
           if (bType == null)
  -            throw new IllegalStateException("Type " + sType.getName() +
  -                "not found in type loader");
  +          throw new IllegalStateException("Type " + sType.getName() +
  +            "not found in type loader");
   
           String propName = pickUniquePropertyName(props[i].getName(), seenMethodNames);
           boolean isMultiple = isMultiple(props[i]);
  @@ -575,19 +605,14 @@
           prop.setSetterName(MethodName.create("set" + propName,
                                                bType.getName().getJavaName()));
           prop.setGetterName(MethodName.create("get" + propName));
  -        prop.setBindingType(bType);
           prop.setNillable(props[i].hasNillable() != SchemaProperty.NEVER);
           prop.setOptional(isOptional(props[i]));
           prop.setMultiple(isMultiple);
           if (prop.isNillable() || prop.isOptional())
  -            prop.setBoxedClass(JavaTypeName.forBoxed(bType.getName().getJavaName()));
  +          bType = findBoxedType(bType);
  +        prop.setBindingType(bType);
           if (prop.isMultiple())
  -        {
  -            if (prop.getBoxedClass() != null)
  -                collection = JavaTypeName.forArray(prop.getBoxedClass(), 1);
  -            else
                   collection = JavaTypeName.forArray(bType.getName().getJavaName(), 1);
  -        }
           prop.setCollectionClass(collection);
         }
         scratch.addQNameProperty(prop);
  @@ -595,11 +620,44 @@
     }
   
     /**
  +   * Resolves a Java array
  +   */
  +  private void resolveJavaArray(Scratch scratch)
  +  {
  +    if (scratch.getCategory() != Scratch.LITERALARRAY_TYPE)
  +      return;
  +
  +    if (scratch.isStructureResolved())
  +      return;
  +
  +    scratch.setStructureResolved(true);
  +
  +    if (!(scratch.getBindingType() instanceof WrappedArrayType))
  +      throw new IllegalStateException();
  +    WrappedArrayType bType = (WrappedArrayType) scratch.getBindingType();
  +    JavaTypeName itemName = scratch.getJavaName().getArrayItemType(1);
  +    assert(itemName != null);
  +    SchemaType sType = getLiteralArrayItemType(scratch.getSchemaType());
  +    assert sType != null : "This was already checked and determined to be non-null";
  +    SchemaProperty prop = scratch.getSchemaType().getProperties()[0];
  +    bType.setItemName(prop.getName());
  +    BindingType itemType = bindingTypeForSchemaType(sType);
  +    if (itemType == null)
  +      throw new IllegalStateException("Type " + sType.getName() +
  +        " not found in type loader");
  +
  +    bType.setItemNillable(prop.hasNillable() != SchemaProperty.NEVER);
  +    if (bType.isItemNillable())
  +      itemType = findBoxedType(itemType);
  +    bType.setItemType(itemType.getName());
  +  }
  +
  +  /**
      * Picks a property name without colliding with names of
      * previously picked getters and setters.
      */
     private String pickUniquePropertyName(QName name, Set seenMethodNames) {
  -    String baseName = NameUtil.upperCamelCase(name.getLocalPart());
  +    String baseName = NameUtil.upperCamelCase(name.getLocalPart(), mJaxRpcRules);
       String propName = baseName;
       for (int i = 1; ; i += 1) {
         String getter = "get" + propName;
  @@ -643,14 +701,22 @@
   
       // case 2: it's in the mLoader
       BindingType bType = mLoader.getBindingType(mLoader.lookupPojoFor(XmlTypeName.forSchemaType(sType)));
  -    if (!(bType instanceof ByNameBean)) {
  -      return null;
  -    }
  +
       Collection result = new ArrayList();
  -    ByNameBean bnb = (ByNameBean) bType;
  -    for (Iterator i = bnb.getProperties().iterator(); i.hasNext();) {
  -      result.add(i.next());
  +    if (bType instanceof ByNameBean) {
  +      ByNameBean bnb = (ByNameBean) bType;
  +      for (Iterator i = bnb.getProperties().iterator(); i.hasNext();) {
  +        result.add(i.next());
  +      }
  +    }
  +    else if (bType instanceof SimpleContentBean) {
  +      SimpleContentBean scb = (SimpleContentBean) bType;
  +      for (Iterator i = scb.getAttributeProperties().iterator(); i.hasNext();) {
  +        result.add(i.next());
  +      }
       }
  +    else
  +      return null;
   
       return result;
     }
  @@ -671,6 +737,73 @@
       return bType;
     }
   
  +  private JavaTypeName getBoxedName(JavaTypeName jName)
  +  {
  +    // We could use a map here and initialize it on first use
  +    for (int i = 0; i < PRIMITIVE_TYPES.length; i++)
  +      if (PRIMITIVE_TYPES[i].equals(jName.toString()))
  +        return JavaTypeName.forString(BOXED_TYPES[i]);
  +
  +    return null;
  +  }
  +
  +  /**
  +   * Returns the boxed version of the given binding type
  +   */
  +  private BindingType findBoxedType(BindingType type)
  +  {
  +    BindingTypeName btName = type.getName();
  +    JavaTypeName javaName = btName.getJavaName();
  +    BindingType result = null;
  +    JavaTypeName boxedJavaName = getBoxedName(javaName);
  +    if (boxedJavaName != null)
  +    {
  +      // This is a primitive type
  +      BindingTypeName boxedName = BindingTypeName.forPair(boxedJavaName, btName.getXmlName());
  +      // If the type is in the current scratch area, create a new boxed type
  +      if (scratchForXmlName(btName.getXmlName()) != null)
  +      {
  +        result = bindingFile.getBindingType(boxedName);
  +        if (result == null)
  +        {
  +          result = changeJavaName((SimpleBindingType) type, boxedName);
  +          bindingFile.addBindingType(result, false, false);
  +        }
  +        return result;
  +      }
  +      // If this is a type available on the mLoader, try to locate
  +      // the boxed type corresponding to it.
  +      result = mLoader.getBindingType(boxedName);
  +      if (result != null)
  +        return result;
  +      
  +      // Type is not in the current scratch area nor on the mLoader
  +      // We create it and add it to the file
  +      result = bindingFile.getBindingType(boxedName);
  +      if (result == null)
  +      {
  +        result = changeJavaName((SimpleBindingType) type, boxedName);
  +        bindingFile.addBindingType(result, false, false);
  +      }
  +      return result;
  +    }
  +
  +    return type;
  +  }
  +
  +  /**
  +   * Creates a new binding type based on the given binding type and bearing the
  +   * new JavaTypeName. This is necessary to created boxed versions of
  +   * binding types based on Java primitive types.
  +   */
  +  private BindingType changeJavaName(SimpleBindingType bType, BindingTypeName btName)
  +  {
  +    SimpleBindingType result = new SimpleBindingType(btName);
  +    result.setAsIfXmlType(bType.getAsIfXmlType());
  +    result.setWhitespace(bType.getWhitespace());
  +    return result;
  +  }
  +
     /**
      * True for a schema type that is a SOAP array.
      */
  @@ -754,7 +887,7 @@
         sType = sType.getOuterType();
       }
   
  -    String baseName = NameUtil.getClassNameFromQName(qname);
  +    String baseName = NameUtil.getClassNameFromQName(qname, mJaxRpcRules);
       String pickedName = baseName;
   
       for (int i = 1; usedNames.contains(pickedName.toLowerCase()); i += 1)
  @@ -943,15 +1076,35 @@
       }
   
       public void addQNameProperty(QNameProperty prop) {
  -      if (!(bindingType instanceof ByNameBean))
  +      if (bindingType instanceof ByNameBean)
  +        ((ByNameBean) bindingType).addProperty(prop);
  +      else if (bindingType instanceof SimpleContentBean)
  +        ((SimpleContentBean) bindingType).addProperty(prop);
  +      else
           throw new IllegalStateException();
  -      ((ByNameBean) bindingType).addProperty(prop);
       }
   
       public Collection getQNameProperties() {
  -      if (!(bindingType instanceof ByNameBean))
  +      if (bindingType instanceof ByNameBean)
  +        return ((ByNameBean) bindingType).getProperties();
  +      else if (bindingType instanceof SimpleContentBean)
  +        return ((SimpleContentBean) bindingType).getAttributeProperties();
  +      else
           throw new IllegalStateException();
  -      return ((ByNameBean) bindingType).getProperties();
  +    }
  +
  +    public void addSimpleContentProperty(SimpleContentProperty prop) {
  +      if (bindingType instanceof SimpleContentBean)
  +        ((SimpleContentBean) bindingType).setSimpleContentProperty(prop);
  +      else
  +        throw new IllegalStateException();
  +    }
  +
  +    public SimpleContentProperty getSimpleContentProperty() {
  +      if (bindingType instanceof SimpleContentBean)
  +        return ((SimpleContentBean) bindingType).getSimpleContentProperty();
  +      else
  +        return null;
       }
   
       public boolean isStructureResolved() {
  @@ -1116,9 +1269,20 @@
       mJoust.startFile(packageName, shortClassName);
       mJoust.writeComment("Generated from schema type " + scratch.getXmlName());
       mJoust.startClass(Modifier.PUBLIC, baseJavaname, null);
  +
  +    Set seenFieldNames = new HashSet();
  +    // Write out the special "_value" property, if needed
  +    SimpleContentProperty scprop = scratch.getSimpleContentProperty();
  +    if (scprop != null) {
  +      String fieldName = pickUniqueFieldName(scprop.getGetterName().getSimpleName(),
  +        seenFieldNames);
  +      JavaTypeName jType = scprop.getTypeName().getJavaName();
  +      addJavaBeanProperty(fieldName, jType.toString(),
  +        scprop.getGetterName().getSimpleName(), scprop.getSetterName().getSimpleName());
  +    }
  +
       Collection props = scratch.getQNameProperties();
       Map fieldNames = new HashMap();
  -    Set seenFieldNames = new HashSet();
   
       // pick field names
       for (Iterator i = props.iterator(); i.hasNext();) {
  @@ -1131,35 +1295,13 @@
       for (Iterator i = props.iterator(); i.hasNext();) {
         QNameProperty prop = (QNameProperty) i.next();
         JavaTypeName jType = prop.getTypeName().getJavaName();
  -      if (prop.getBoxedClass() != null) {
  -        jType = prop.getBoxedClass();
  -      }
  +
         if (prop.getCollectionClass() != null) {
           jType = prop.getCollectionClass();
         }
         String fieldName = (String) fieldNames.get(prop);
  -      // declare the field
  -      Variable propertyField =
  -              mJoust.writeField(Modifier.PRIVATE,
  -                                jType.toString(),
  -                                fieldName,
  -                                null);
  -      //write getter
  -      mJoust.startMethod(Modifier.PUBLIC,
  -                         jType.toString(),
  -                         prop.getGetterName().getSimpleName(),
  -                         null, null, null);
  -      mJoust.writeReturnStatement(propertyField);
  -      mJoust.endMethodOrConstructor();
  -      //write setter
  -      Variable[] params = mJoust.startMethod(Modifier.PUBLIC,
  -                                             "void",
  -                                             prop.getSetterName().getSimpleName(),
  -                                             new String[]{jType.toString()},
  -                                             new String[]{fieldName},
  -                                             null);
  -      mJoust.writeAssignmentStatement(propertyField, params[0]);
  -      mJoust.endMethodOrConstructor();
  +      addJavaBeanProperty(fieldName, jType.toString(),
  +        prop.getGetterName().getSimpleName(), prop.getSetterName().getSimpleName());
       }
       mJoust.endClassOrInterface();
       mJoust.endFile();
  @@ -1174,6 +1316,8 @@
         baseName = "field";
   
       String fieldName = baseName;
  +    if (!NameUtil.isValidJavaIdentifier(fieldName))
  +      fieldName = "_" + fieldName;
       for (int i = 1; seenNames.contains(fieldName); i += 1)
         fieldName = baseName + i;
   
  @@ -1181,6 +1325,32 @@
       return fieldName;
     }
   
  +  private void addJavaBeanProperty(String name, String type, String getter, String setter)
  +    throws IOException {
  +    // declare the field
  +    Variable propertyField =
  +            mJoust.writeField(Modifier.PRIVATE,
  +                              type,
  +                              name,
  +                              null);
  +    //write getter
  +    mJoust.startMethod(Modifier.PUBLIC,
  +                       type,
  +                       getter,
  +                       null, null, null);
  +    mJoust.writeReturnStatement(propertyField);
  +    mJoust.endMethodOrConstructor();
  +    //write setter
  +    Variable[] params = mJoust.startMethod(Modifier.PUBLIC,
  +                                           "void",
  +                                           setter,
  +                                           new String[]{type},
  +                                           new String[]{name},
  +                                           null);
  +    mJoust.writeAssignmentStatement(propertyField, params[0]);
  +    mJoust.endMethodOrConstructor();
  +  }
  +
   
     // ========================================================================
     // main method - for quick debugging
  @@ -1199,6 +1369,7 @@
                                     null);
         Schema2Java s2j = new Schema2Java(sts);
         s2j.setVerbose(true);
  +      s2j.setJaxRpcRules(true);
         TylarWriter tw = new DebugTylarWriter();
         s2j.bind(tw);
         tw.close();
  
  
  
  1.9       +9 -0      xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Schema2JavaTask.java
  
  Index: Schema2JavaTask.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/compile/Schema2JavaTask.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Schema2JavaTask.java	12 Feb 2004 20:06:07 -0000	1.8
  +++ Schema2JavaTask.java	13 Mar 2004 00:33:22 -0000	1.9
  @@ -96,6 +96,15 @@
     }
   
     /**
  +   * Sets the binding rules to JAX-RPC rules if true. By default, the
  +   * binding rules are set to XMLBeans rules, slightly different when
  +   * it comes to mapping built-in types and XML Names.
  +   */
  +  public void setJaxRpcRules(boolean jaxRpc) {
  +    mCompiler.setJaxRpcRules(jaxRpc);
  +  }
  +
  +  /**
      * Adds a path for source compilation.
      *
      * @return a nested src element.
  
  
  
  1.5       +1 -1      xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/tylar/BaseTylarImpl.java
  
  Index: BaseTylarImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/binding/org/apache/xmlbeans/impl/binding/tylar/BaseTylarImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- BaseTylarImpl.java	11 Mar 2004 21:26:47 -0000	1.4
  +++ BaseTylarImpl.java	13 Mar 2004 00:33:22 -0000	1.5
  @@ -50,7 +50,7 @@
       BindingFile[] bfs = getBindingFiles();
       BindingLoader[] loaders = new BindingLoader[bfs.length+1];
       System.arraycopy(bfs,0,loaders,0,bfs.length);
  -    loaders[loaders.length-1] = BuiltinBindingLoader.getInstance();
  +    loaders[loaders.length-1] = BuiltinBindingLoader.getBuiltinBindingLoader(false);
       return CompositeBindingLoader.forPath(loaders);
     }
   
  
  
  
  1.5       +38 -51    xml-xmlbeans/v2/src/common/org/apache/xmlbeans/impl/common/NameUtil.java
  
  Index: NameUtil.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/common/org/apache/xmlbeans/impl/common/NameUtil.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- NameUtil.java	6 Mar 2004 22:57:31 -0000	1.4
  +++ NameUtil.java	13 Mar 2004 00:33:22 -0000	1.5
  @@ -311,54 +311,19 @@
           return true;
       }
   
  -    /*
  -    public static String getJAXRPCClassName( String name )
  -    {
  -        name = name.replace('.', '_');
  -        name = uppercaseFirstLetter( name );
  -
  -        if (isValidJavaIdentifer(name))
  -        {
  -            return name;
  -        }
  -        else
  -        {
  -            return "_" + name;
  -        }
  -    }
  -
  -    public static String getJAXRPCMethodName(String name)
  -    {
  -        name = name.replace('.','_');
  -        name = lowercaseFirstLetter(name);
  -
  -        if (isValidJavaIdentifer(name))
  -        {
  -            return name;
  -        }
  -        else
  -        {
  -            return "_" + name;
  -        }
  -    }
  -
  -    public static XMLName getXMLNameFromClass(Class clazz)
  +    public static String getClassNameFromQName(QName qname)
       {
  -        String uri = NameUtil.getNamespaceFromPackage(clazz);
  -        String lname = NameUtil.getRootClassNameFromClass(clazz.getName());
  -        XMLName xsd_name = new Name(uri, lname);
  -        return xsd_name;
  +        return getClassNameFromQName(qname, false);
       }
  -    */
   
  -    public static String getClassNameFromQName(QName qname)
  +    public static String getClassNameFromQName(QName qname, boolean useJaxRpcRules)
       {
  -        String java_type = upperCamelCase(qname.getLocalPart());
  +        String java_type = upperCamelCase(qname.getLocalPart(), useJaxRpcRules);
   
           String uri = qname.getNamespaceURI();
           String java_pkg = null;
   
  -        java_pkg = getPackageFromNamespace(uri);
  +        java_pkg = getPackageFromNamespace(uri, useJaxRpcRules);
   
           if (java_pkg != null)
               return java_pkg + "." + java_type;
  @@ -485,6 +450,11 @@
   
       public static String getPackageFromNamespace(String uri)
       {
  +        return getPackageFromNamespace(uri, false);
  +    }
  +
  +    public static String getPackageFromNamespace(String uri, boolean useJaxRpcRules)
  +    {
           // special case: no namespace -> package "noNamespace"
           if (uri == null || uri.length() == 0)
               return "noNamespace";
  @@ -523,7 +493,7 @@
           StringBuffer buf = new StringBuffer();
           for (Iterator it = result.iterator(); it.hasNext(); )
           {
  -            buf.append(nonJavaKeyword(lowerCamelCase((String)it.next())));
  +            buf.append(nonJavaKeyword(lowerCamelCase((String)it.next(), useJaxRpcRules)));
               buf.append('.');
           }
           return buf.substring(0, buf.length() - 1); // chop off extra dot
  @@ -544,7 +514,7 @@
       public static String upperCaseUnderbar(String xml_name)
       {
           StringBuffer buf = new StringBuffer();
  -        List words = splitWords(xml_name);
  +        List words = splitWords(xml_name, false);
   
           final int sz = words.size() - 1;
           if (sz >= 0 && !Character.isJavaIdentifierStart(((String)words.get(0)).charAt(0)))
  @@ -580,8 +550,17 @@
        */
       public static String upperCamelCase(String xml_name)
       {
  +        return upperCamelCase(xml_name, false);
  +    }
  +
  +    /**
  +     * Returns a camel-cased string, but either JAXB or JAX-RPC rules
  +     * are used
  +     */
  +    public static String upperCamelCase(String xml_name, boolean useJaxRpcRules)
  +    {
           StringBuffer buf = new StringBuffer();
  -        List words = splitWords(xml_name);
  +        List words = splitWords(xml_name, useJaxRpcRules);
   
           if (words.size() > 0)
           {
  @@ -606,8 +585,16 @@
        */
       public static String lowerCamelCase(String xml_name)
       {
  +        return lowerCamelCase(xml_name, false);
  +    }
  +
  +    /**
  +     * Returns a camel-cased string using the JAXB or JAX-RPC rules
  +     */
  +    public static String lowerCamelCase(String xml_name, boolean useJaxRpcRules)
  +    {
           StringBuffer buf = new StringBuffer();
  -        List words = splitWords(xml_name);
  +        List words = splitWords(xml_name, useJaxRpcRules);
   
           if (words.size() > 0)
           {
  @@ -648,7 +635,7 @@
               list.add(upperCaseFirstLetter(str));
       }
   
  -    public static List splitWords(String name)
  +    public static List splitWords(String name, boolean useJaxRpcRules)
       {
           List list = new ArrayList();
           int len = name.length();
  @@ -656,11 +643,11 @@
           int prefix = START;
           for (int i = 0; i < len; i++)
           {
  -            int current = getCharClass(name.charAt(i));
  +            int current = getCharClass(name.charAt(i), useJaxRpcRules);
               if (prefix != PUNCT && current == PUNCT)
               {
                   addCapped(list, name.substring(start, i));
  -                while ((current = getCharClass(name.charAt(i))) == PUNCT)
  +                while ((current = getCharClass(name.charAt(i), useJaxRpcRules)) == PUNCT)
                       if (++i >= len) return list;
                   start = i;
               }
  @@ -691,10 +678,10 @@
       private final static int LOWER= 5;
       private final static int NOCASE= 6;
   
  -    public static int getCharClass(char c)
  +    public static int getCharClass(char c, boolean useJaxRpcRules)
       {
           //ordering is important here.
  -        if (isPunctuation(c))
  +        if (isPunctuation(c, useJaxRpcRules))
               return PUNCT;
           else if (Character.isDigit(c))
               return DIGIT;
  @@ -717,13 +704,13 @@
                 || state==NOCASE);
       }
   
  -    public static boolean isPunctuation(char c)
  +    public static boolean isPunctuation(char c, boolean useJaxRpcRules)
       {
           return (c == HYPHEN
                 || c == PERIOD
                 || c == COLON
                 || c == DOT
  -              || c == USCORE
  +              || (c == USCORE && !useJaxRpcRules)
                 || c == TELEIA
                 || c == AYAH
                 || c == ELHIZB);
  
  
  
  1.16      +1 -1      xml-xmlbeans/v2/src/configschema/schema/binding-config.xsd
  
  Index: binding-config.xsd
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/configschema/schema/binding-config.xsd,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- binding-config.xsd	9 Mar 2004 23:50:53 -0000	1.15
  +++ binding-config.xsd	13 Mar 2004 00:33:22 -0000	1.16
  @@ -92,7 +92,7 @@
           <xs:sequence>
             <xs:element name="item-name" type="xs:QName"/>
             <xs:element name="item-type" type="tns:mapping"/>
  -          <xs:element name="nillable" type="xs:boolean" default="false" minOccurs="0"/>
  +          <xs:element name="item-nillable" type="xs:boolean" default="false" minOccurs="0"/>
           </xs:sequence>
         </xs:extension>
       </xs:complexContent>
  
  
  
  1.14      +3 -1      xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/BindingContextFactoryImpl.java
  
  Index: BindingContextFactoryImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/BindingContextFactoryImpl.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- BindingContextFactoryImpl.java	12 Feb 2004 20:06:16 -0000	1.13
  +++ BindingContextFactoryImpl.java	13 Mar 2004 00:33:22 -0000	1.14
  @@ -95,7 +95,9 @@
   
       private static BindingLoader buildBindingLoader(BindingFile bf)
       {
  -        BindingLoader builtins = BuiltinBindingLoader.getInstance();
  +        // todo(radup) save the "jaxRpc" setting in the binding file and
  +        // load it from there
  +        BindingLoader builtins = BuiltinBindingLoader.getBuiltinBindingLoader(false);
           return CompositeBindingLoader.forPath(new BindingLoader[]{builtins, bf});
       }
   
  
  
  
  1.20      +3 -1      xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/RuntimeBindingTypeTable.java
  
  Index: RuntimeBindingTypeTable.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/RuntimeBindingTypeTable.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- RuntimeBindingTypeTable.java	10 Mar 2004 06:42:19 -0000	1.19
  +++ RuntimeBindingTypeTable.java	13 Mar 2004 00:33:22 -0000	1.20
  @@ -159,7 +159,9 @@
                                  JavaTypeName jName,
                                  TypeConverter converter)
       {
  -        final BindingLoader bindingLoader = BuiltinBindingLoader.getInstance();
  +        // todo(radup) save the "jaxRpc" setting in the binding file and
  +        // load it from there
  +        final BindingLoader bindingLoader = BuiltinBindingLoader.getBuiltinBindingLoader(false);
   
           QName xml_type = new QName(XSD_NS, xsdType);
           XmlTypeName xName = XmlTypeName.forTypeNamed(xml_type);
  
  
  
  1.3       +1 -1      xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/WrappedArrayRuntimeBindingType.java
  
  Index: WrappedArrayRuntimeBindingType.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/WrappedArrayRuntimeBindingType.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WrappedArrayRuntimeBindingType.java	2 Mar 2004 04:23:24 -0000	1.2
  +++ WrappedArrayRuntimeBindingType.java	13 Mar 2004 00:33:22 -0000	1.3
  @@ -102,7 +102,7 @@
           elementProperty =
               new WAProperty(wrappedArrayType.getItemName(), item_rtt,
                              typeTable, bindingLoader,
  -                           wrappedArrayType.isNillable());
  +                           wrappedArrayType.isItemNillable());
   
   
       }
  
  
  
  1.24      +1 -1      xml-xmlbeans/v2/test/cases/marshal/example_config.xml
  
  Index: example_config.xml
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/test/cases/marshal/example_config.xml,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- example_config.xml	9 Mar 2004 23:50:54 -0000	1.23
  +++ example_config.xml	13 Mar 2004 00:33:22 -0000	1.24
  @@ -257,7 +257,7 @@
                   <bin:xmlcomponent>t=string@http://www.w3.org/2001/XMLSchema</bin:xmlcomponent>
                   <bin:javatype>java.lang.String</bin:javatype>
               </bin:item-type>
  -            <bin:nillable>true</bin:nillable>
  +            <bin:item-nillable>true</bin:item-nillable>
           </bin:binding-type>
   
           <bin:binding-type xsi:type="bin:wrapped-array">
  
  
  
  1.2       +1 -10     xml-xmlbeans/v2/test/cases/schema/XmlSignature/xmldsig-core-schema.xsd
  
  Index: xmldsig-core-schema.xsd
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/test/cases/schema/XmlSignature/xmldsig-core-schema.xsd,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- xmldsig-core-schema.xsd	26 Sep 2003 21:23:37 -0000	1.1
  +++ xmldsig-core-schema.xsd	13 Mar 2004 00:33:22 -0000	1.2
  @@ -1,13 +1,4 @@
   <?xml version="1.0" encoding="utf-8"?>
  -<!DOCTYPE schema
  -  PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd"
  - [
  -   <!ATTLIST schema 
  -     xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#">
  -   <!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'>
  -   <!ENTITY % p ''>
  -   <!ENTITY % s ''>
  -  ]>
   
   <!-- Schema for XML Signatures
       http://www.w3.org/2000/09/xmldsig#
  
  
  

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