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/05/04 23:33:22 UTC
cvs commit: xml-xmlbeans/v2/test/src/drt/drtcases MarshalTests.java
zieg 2004/05/04 14:33:22
Modified: v2/src/binding/org/apache/xmlbeans/impl/binding/bts
JavaTypeName.java
v2/src/marshal/org/apache/xmlbeans/impl/marshal
JaxrpcEnumRuntimeBindingType.java
JaxrpcEnumUnmarshaller.java UnmarshalResult.java
v2/test/cases/marshal doc.xml
v2/test/src/drt/drtcases MarshalTests.java
Log:
properly catch errors from enum fromValue method
Revision Changes Path
1.14 +5 -7 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.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- JavaTypeName.java 4 May 2004 01:34:58 -0000 1.13
+++ JavaTypeName.java 4 May 2004 21:33:22 -0000 1.14
@@ -337,12 +337,11 @@
return new JavaTypeName(class_name, "", false);
}
- final String compname;
- int dims = 0;
+ final int first_bracket = class_name.indexOf('[');
+ final int last_bracket = class_name.lastIndexOf('[');
+ final int semi = class_name.indexOf(';', last_bracket);
- int first_bracket = class_name.indexOf('[');
- int last_bracket = class_name.lastIndexOf('[');
- int semi = class_name.indexOf(';', last_bracket);
+ final String compname;
if (semi == -1) {
char array_type = class_name.charAt(1 + last_bracket);
@@ -350,10 +349,9 @@
} else {
compname = class_name.substring(last_bracket + 2, semi);
}
- dims = (1 + last_bracket - first_bracket);
+ final int dims = (1 + last_bracket - first_bracket);
assert compname.length() > 0 ;
-
StringBuffer array_str = new StringBuffer(2 * dims);
for (int i = 0; i < dims; i++) {
1.6 +12 -3 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/JaxrpcEnumRuntimeBindingType.java
Index: JaxrpcEnumRuntimeBindingType.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/JaxrpcEnumRuntimeBindingType.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- JaxrpcEnumRuntimeBindingType.java 30 Apr 2004 21:31:48 -0000 1.5
+++ JaxrpcEnumRuntimeBindingType.java 4 May 2004 21:33:22 -0000 1.6
@@ -21,6 +21,7 @@
import org.apache.xmlbeans.impl.binding.bts.BindingTypeName;
import org.apache.xmlbeans.impl.binding.bts.JaxrpcEnumType;
import org.apache.xmlbeans.impl.marshal.util.ReflectionUtils;
+import org.apache.xmlbeans.impl.common.InvalidLexicalValueException;
import java.lang.reflect.Method;
@@ -82,10 +83,18 @@
return itemInfo.getItemUnmarshaller();
}
- Object fromValue(Object itemValue) throws XmlException
+ Object fromValue(Object itemValue, UnmarshalResult context)
+ throws XmlException
{
- return ReflectionUtils.invokeMethod(null, itemInfo.getFromValueMethod(),
- new Object[]{itemValue});
+ assert itemValue != null;
+ assert context != null;
+ try {
+ return ReflectionUtils.invokeMethod(null, itemInfo.getFromValueMethod(),
+ new Object[]{itemValue});
+ }
+ catch (XmlException iae) {
+ throw new InvalidLexicalValueException(iae, context.getLocation());
+ }
}
1.5 +10 -4 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/JaxrpcEnumUnmarshaller.java
Index: JaxrpcEnumUnmarshaller.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/JaxrpcEnumUnmarshaller.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- JaxrpcEnumUnmarshaller.java 18 Apr 2004 19:28:31 -0000 1.4
+++ JaxrpcEnumUnmarshaller.java 4 May 2004 21:33:22 -0000 1.5
@@ -17,6 +17,7 @@
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.impl.binding.bts.BindingLoader;
+import org.apache.xmlbeans.impl.common.InvalidLexicalValueException;
final class JaxrpcEnumUnmarshaller
implements TypeUnmarshaller
@@ -31,10 +32,15 @@
public Object unmarshal(UnmarshalResult result)
throws XmlException
{
-
final TypeUnmarshaller item_um = runtimeType.getItemUnmarshaller();
final Object itemValue = item_um.unmarshal(result);
- return runtimeType.fromValue(itemValue);
+ try {
+ return runtimeType.fromValue(itemValue, result);
+ }
+ catch(InvalidLexicalValueException e) {
+ result.addError(e.getMessage(), e.getLocation());
+ throw e;
+ }
}
public void unmarshal(Object object, UnmarshalResult result)
@@ -49,7 +55,7 @@
{
final TypeUnmarshaller item_um = runtimeType.getItemUnmarshaller();
final Object itemValue = item_um.unmarshalAttribute(result);
- return runtimeType.fromValue(itemValue);
+ return runtimeType.fromValue(itemValue, result);
}
public Object unmarshalAttribute(CharSequence lexical_value,
@@ -58,7 +64,7 @@
{
final TypeUnmarshaller item_um = runtimeType.getItemUnmarshaller();
final Object itemValue = item_um.unmarshalAttribute(lexical_value, result);
- return runtimeType.fromValue(itemValue);
+ return runtimeType.fromValue(itemValue, result);
}
public void unmarshalAttribute(Object object, UnmarshalResult result)
1.25 +1 -1 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.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- UnmarshalResult.java 3 May 2004 17:24:45 -0000 1.24
+++ UnmarshalResult.java 4 May 2004 21:33:22 -0000 1.25
@@ -128,7 +128,7 @@
return binding_type;
}
- private void addError(String msg)
+ void addError(String msg)
{
addError(msg, baseReader.getLocation());
}
1.16 +1 -1 xml-xmlbeans/v2/test/cases/marshal/doc.xml
Index: doc.xml
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/test/cases/marshal/doc.xml,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- doc.xml 19 Apr 2004 06:30:36 -0000 1.15
+++ doc.xml 4 May 2004 21:33:22 -0000 1.16
@@ -4,7 +4,7 @@
xmlns:My="java:com.mytest"
xmlns:n1="java:com.mytest">
- <My:Myelt ignore="someval" My:Attrib="-4444.123456789">
+ <My:Myelt n1:modeEnum="Off" ignore="someval" My:Attrib="-4444.123456789" >
<My:MyFloat>111111165.34</My:MyFloat>
<My:MyClass xsi:type="My:MySubClass">
<My:Myatt xsi:type="xsd:token">inner-str</My:Myatt>
1.58 +2 -0 xml-xmlbeans/v2/test/src/drt/drtcases/MarshalTests.java
Index: MarshalTests.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/test/src/drt/drtcases/MarshalTests.java,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- MarshalTests.java 30 Apr 2004 21:31:49 -0000 1.57
+++ MarshalTests.java 4 May 2004 21:33:22 -0000 1.58
@@ -191,6 +191,8 @@
testSimpleTypeMarshal(new GDuration("P1Y2M3DT10H30M"), "duration");
testSimpleTypeMarshal("some text here", "string");
+ testSimpleTypeMarshal(" ", "string");
+ testSimpleTypeMarshal("", "string");
testSimpleTypeMarshal("aToken", "token");
testSimpleTypeMarshal(" ", "string");
---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org