You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by zi...@apache.org on 2004/04/27 23:37:27 UTC
cvs commit: xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal AttributeRuntimeBindingType.java CollapseStringTypeConverter.java ListArrayConverter.java ListArrayRuntimeBindingType.java PreserveStringTypeConverter.java ReplaceStringTypeConverter.java RuntimeBindingProperty.java RuntimeBindingType.java RuntimeGlobalProperty.java UnmarshalResult.java WrappedArrayRuntimeBindingType.java
zieg 2004/04/27 14:37:27
Modified: v2/src/marshal/org/apache/xmlbeans/impl/marshal
AttributeRuntimeBindingType.java
CollapseStringTypeConverter.java
ListArrayConverter.java
ListArrayRuntimeBindingType.java
PreserveStringTypeConverter.java
ReplaceStringTypeConverter.java
RuntimeBindingProperty.java RuntimeBindingType.java
RuntimeGlobalProperty.java UnmarshalResult.java
WrappedArrayRuntimeBindingType.java
Log:
cleanup xsi:type handling
fix bug with whitespace facet on attributes
Revision Changes Path
1.5 +0 -8 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/AttributeRuntimeBindingType.java
Index: AttributeRuntimeBindingType.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/AttributeRuntimeBindingType.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AttributeRuntimeBindingType.java 27 Apr 2004 02:36:14 -0000 1.4
+++ AttributeRuntimeBindingType.java 27 Apr 2004 21:37:26 -0000 1.5
@@ -198,14 +198,6 @@
assert prop.isAttribute();
}
-
- public TypeUnmarshaller getTypeUnmarshaller(UnmarshalResult context)
- throws XmlException
- {
- assert bindingProperty.isAttribute();
- //don't need any xsi stuff for attributes.
- return runtimeBindingType.getUnmarshaller();
- }
}
1.6 +7 -0 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/CollapseStringTypeConverter.java
Index: CollapseStringTypeConverter.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/CollapseStringTypeConverter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- CollapseStringTypeConverter.java 27 Apr 2004 02:36:14 -0000 1.5
+++ CollapseStringTypeConverter.java 27 Apr 2004 21:37:26 -0000 1.6
@@ -34,6 +34,13 @@
{
}
+
+ public Object unmarshalAttribute(UnmarshalResult context)
+ throws XmlException
+ {
+ return context.getAttributeStringValue(XmlWhitespace.WS_COLLAPSE);
+ }
+
protected Object getObject(UnmarshalResult context)
throws XmlException
{
1.4 +2 -1 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/ListArrayConverter.java
Index: ListArrayConverter.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/ListArrayConverter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ListArrayConverter.java 27 Apr 2004 02:36:14 -0000 1.3
+++ ListArrayConverter.java 27 Apr 2004 21:37:26 -0000 1.4
@@ -99,7 +99,8 @@
final Class list_java_type = listType.getJavaType();
final Class item_java_type = item_prop.getRuntimeBindingType().getJavaType();
- final TypeUnmarshaller item_um = item_prop.getTypeUnmarshaller(context);
+ final TypeUnmarshaller item_um =
+ item_prop.getRuntimeBindingType().getUnmarshaller();
return unmarshalListString(str, list_java_type, item_java_type,
item_um, context);
1.5 +0 -5 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/ListArrayRuntimeBindingType.java
Index: ListArrayRuntimeBindingType.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/ListArrayRuntimeBindingType.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ListArrayRuntimeBindingType.java 27 Apr 2004 02:36:14 -0000 1.4
+++ ListArrayRuntimeBindingType.java 27 Apr 2004 21:37:26 -0000 1.5
@@ -105,11 +105,6 @@
throw new UnsupportedOperationException("no name");
}
- public TypeUnmarshaller getTypeUnmarshaller(UnmarshalResult context)
- throws XmlException
- {
- return itemType.getUnmarshaller();
- }
public void fill(Object inter, Object prop_obj)
throws XmlException
1.6 +6 -0 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/PreserveStringTypeConverter.java
Index: PreserveStringTypeConverter.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/PreserveStringTypeConverter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- PreserveStringTypeConverter.java 27 Apr 2004 02:36:14 -0000 1.5
+++ PreserveStringTypeConverter.java 27 Apr 2004 21:37:26 -0000 1.6
@@ -34,6 +34,12 @@
{
}
+ public Object unmarshalAttribute(UnmarshalResult context)
+ throws XmlException
+ {
+ return context.getAttributeStringValue(XmlWhitespace.WS_PRESERVE);
+ }
+
protected Object getObject(UnmarshalResult context) throws XmlException
{
return context.getStringValue(XmlWhitespace.WS_PRESERVE);
1.6 +6 -0 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/ReplaceStringTypeConverter.java
Index: ReplaceStringTypeConverter.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/ReplaceStringTypeConverter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ReplaceStringTypeConverter.java 27 Apr 2004 02:36:14 -0000 1.5
+++ ReplaceStringTypeConverter.java 27 Apr 2004 21:37:26 -0000 1.6
@@ -34,6 +34,12 @@
{
}
+ public Object unmarshalAttribute(UnmarshalResult context)
+ throws XmlException
+ {
+ return context.getAttributeStringValue(XmlWhitespace.WS_REPLACE);
+ }
+
protected Object getObject(UnmarshalResult context)
throws XmlException
{
1.20 +14 -39 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/RuntimeBindingProperty.java
Index: RuntimeBindingProperty.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/RuntimeBindingProperty.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- RuntimeBindingProperty.java 27 Apr 2004 02:36:14 -0000 1.19
+++ RuntimeBindingProperty.java 27 Apr 2004 21:37:26 -0000 1.20
@@ -17,7 +17,6 @@
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.impl.binding.bts.BindingProperty;
-import org.apache.xmlbeans.impl.binding.bts.BindingType;
import org.apache.xmlbeans.impl.binding.bts.JavaInstanceFactory;
import org.apache.xmlbeans.impl.binding.bts.MethodName;
import org.apache.xmlbeans.impl.binding.bts.ParentInstanceFactory;
@@ -113,7 +112,8 @@
Object inter)
throws XmlException
{
- final TypeUnmarshaller um = this.getTypeUnmarshaller(context);
+ final RuntimeBindingType rtt = getRuntimeBindingType();
+ final TypeUnmarshaller um = rtt.getUnmarshaller();
assert um != null;
try {
@@ -124,7 +124,7 @@
if (parentFactoryMethodTakesClassArg) {
this_val =
createObjectViaFactory(actual_obj,
- getRuntimeBindingType().getJavaType());
+ rtt.getJavaType());
} else {
this_val = createObjectViaFactory(actual_obj);
}
@@ -150,48 +150,27 @@
if (lexical_default != null) {
context.setNextElementDefault(lexical_default);
}
+ final RuntimeBindingType actual_rtt =
+ context.determineActualRuntimeType(getRuntimeBindingType());
final Object this_val;
if (hasFactory()) {
- final TypeUnmarshaller um;
- final Class actual_prop_class;
- final QName xsi_type = context.getXsiType();
- if (xsi_type == null) {
- //REVIEW: we're doing a little extra work here
- um = this.getTypeUnmarshaller(context);
- actual_prop_class =
- this.getRuntimeBindingType().getJavaType();
- } else {
- final BindingType actual_binding_type =
- context.lookupBindingType(xsi_type);
- if (actual_binding_type != null) {
- um = context.getTypeUnmarshaller(actual_binding_type);
- actual_prop_class =
- context.getRuntimeType(actual_binding_type).getJavaType();
- } else {
- um = this.getTypeUnmarshaller(context);
- actual_prop_class =
- this.getRuntimeBindingType().getJavaType();
- }
- }
- if (um == null) {
- //there was a big problem looking up the type,
- //so just skip this element
- context.skipElement();
- return;
- }
final Object actual_obj =
containingType.getObjectFromIntermediate(inter);
if (parentFactoryMethodTakesClassArg) {
this_val = createObjectViaFactory(actual_obj,
- actual_prop_class);
+ actual_rtt.getJavaType());
} else {
- //TODO: avoid some of the lookups if we know we have this kind
- //of factory
this_val = createObjectViaFactory(actual_obj);
}
- um.unmarshal(this_val, context);
+ actual_rtt.getUnmarshaller().unmarshal(this_val, context);
} else {
- this_val = this.getTypeUnmarshaller(context).unmarshal(context);
+ final TypeUnmarshaller um;
+ if (context.hasXsiNil()) {
+ um = NullUnmarshaller.getInstance();
+ } else {
+ um = actual_rtt.getUnmarshaller();
+ }
+ this_val = um.unmarshal(context);
}
fill(inter, this_val);
}
@@ -229,10 +208,6 @@
//these methods should be used only by this type and subclasses
protected abstract void fill(Object inter, Object prop_obj)
throws XmlException;
-
- protected abstract TypeUnmarshaller getTypeUnmarshaller(UnmarshalResult context)
- throws XmlException;
-
protected boolean hasFactory()
{
1.18 +0 -7 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/RuntimeBindingType.java
Index: RuntimeBindingType.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/RuntimeBindingType.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- RuntimeBindingType.java 27 Apr 2004 02:36:14 -0000 1.17
+++ RuntimeBindingType.java 27 Apr 2004 21:37:26 -0000 1.18
@@ -337,13 +337,6 @@
return result.determineRuntimeBindingType(runtimeBindingType, property_value);
}
-
- public TypeUnmarshaller getTypeUnmarshaller(UnmarshalResult context)
- throws XmlException
- {
- return context.determineTypeUnmarshaller(runtimeBindingType.getUnmarshaller());
- }
-
final boolean isSet(Object parentObject, MarshalResult result)
throws XmlException
{
1.18 +0 -5 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/RuntimeGlobalProperty.java
Index: RuntimeGlobalProperty.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/RuntimeGlobalProperty.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- RuntimeGlobalProperty.java 27 Apr 2004 02:36:14 -0000 1.17
+++ RuntimeGlobalProperty.java 27 Apr 2004 21:37:26 -0000 1.18
@@ -60,11 +60,6 @@
return rootElement;
}
- public TypeUnmarshaller getTypeUnmarshaller(UnmarshalResult context)
- {
- throw new UnsupportedOperationException();
- }
-
public void fill(Object inter, Object prop_obj)
throws XmlException
{
1.21 +18 -33 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/UnmarshalResult.java
Index: UnmarshalResult.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/UnmarshalResult.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- UnmarshalResult.java 27 Apr 2004 02:36:14 -0000 1.20
+++ UnmarshalResult.java 27 Apr 2004 21:37:26 -0000 1.21
@@ -88,7 +88,7 @@
this.errors = BindingContextImpl.extractErrorHandler(options);
}
- RuntimeBindingType getRuntimeType(BindingType type)
+ private RuntimeBindingType getRuntimeType(BindingType type)
throws XmlException
{
return typeTable.createRuntimeType(type, bindingLoader);
@@ -112,28 +112,19 @@
}
}
- //returns null and updates errors if there was a problem.
- TypeUnmarshaller getTypeUnmarshaller(BindingType binding_type)
- throws XmlException
+ private BindingType lookupBindingType(QName xsi_type)
{
-
- final RuntimeBindingType rtt =
- typeTable.createRuntimeType(binding_type, bindingLoader);
- final TypeUnmarshaller um = rtt.getUnmarshaller();
-
- if (um == null) {
- String msg = "unable to locate unmarshaller for " +
- binding_type.getName();
- addError(msg);
+ XmlTypeName xname = XmlTypeName.forTypeNamed(xsi_type);
+ final BindingTypeName btname = bindingLoader.lookupPojoFor(xname);
+ if (btname == null) {
+ addError("unknown type: " + xsi_type);
return null;
}
- return um;
- }
-
- BindingType lookupBindingType(QName xsi_type)
- {
- XmlTypeName xname = XmlTypeName.forTypeNamed(xsi_type);
- return bindingLoader.getBindingType(bindingLoader.lookupPojoFor(xname));
+ final BindingType binding_type = bindingLoader.getBindingType(btname);
+ if (binding_type == null) {
+ addError("unknown binding type: " + binding_type);
+ }
+ return binding_type;
}
private void addError(String msg)
@@ -778,7 +769,7 @@
* return the QName value found for xsi:type
* or null if neither one was found
*/
- QName getXsiType()
+ private QName getXsiType()
throws XmlException
{
if (!gotXsiAttributes) {
@@ -788,7 +779,7 @@
return xsiAttributeHolder.xsiType;
}
- private boolean hasXsiNil() throws XmlException
+ boolean hasXsiNil() throws XmlException
{
if (!gotXsiAttributes) {
getXsiAttributes();
@@ -989,29 +980,23 @@
return false;
}
- TypeUnmarshaller determineTypeUnmarshaller(TypeUnmarshaller base)
+ RuntimeBindingType determineActualRuntimeType(RuntimeBindingType expected)
throws XmlException
{
- if (hasXsiNil())
- return NullUnmarshaller.getInstance();
-
final QName xsi_type = getXsiType();
if (xsi_type != null) {
final BindingType binding_type = lookupBindingType(xsi_type);
if (binding_type != null) {
- TypeUnmarshaller typed_um = getTypeUnmarshaller(binding_type);
- if (typed_um != null)
- return typed_um;
- } else {
- addError("unknown type: " + xsi_type);
+ return typeTable.createRuntimeType(binding_type, bindingLoader);
}
//reaching here means some problem with extracting the
- //unmarshaller for the xsi type, so just use the expected one
+ //BindingType for the xsi type, so just use the expected one
}
- return base;
+ return expected;
}
+
NamespaceContext getNamespaceContext()
{
1.7 +0 -6 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.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- WrappedArrayRuntimeBindingType.java 27 Apr 2004 02:36:14 -0000 1.6
+++ WrappedArrayRuntimeBindingType.java 27 Apr 2004 21:37:26 -0000 1.7
@@ -127,12 +127,6 @@
return itemName;
}
- public TypeUnmarshaller getTypeUnmarshaller(UnmarshalResult context)
- throws XmlException
- {
- return context.determineTypeUnmarshaller(itemType.getUnmarshaller());
- }
-
public void fill(Object inter, Object prop_obj)
throws XmlException
{
---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org