You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.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