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/01/07 08:29:53 UTC
cvs commit: xml-xmlbeans/v2/test/src/drt/drtcases MarshalTests.java
zieg 2004/01/06 23:29:53
Modified: v2/src/marshal/org/apache/xmlbeans/impl/marshal
CharacterVisitor.java MarshalResult.java
QNameTypeConverter.java UnmarshallerImpl.java
v2/test/cases/marshal example_config.xml
v2/test/cases/marshal/com/mytest YourClass.java
v2/test/src/drt/drtcases MarshalTests.java
Log:
fix xsd:QName marshalling bugs
DRT: passed (and added more tests for qnames)
Revision Changes Path
1.8 +18 -0 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/CharacterVisitor.java
Index: CharacterVisitor.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/CharacterVisitor.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- CharacterVisitor.java 15 Dec 2003 05:03:30 -0000 1.7
+++ CharacterVisitor.java 7 Jan 2004 07:29:52 -0000 1.8
@@ -62,12 +62,25 @@
final class CharacterVisitor
extends XmlTypeVisitor
{
+ private final CharSequence chars;
+
CharacterVisitor(RuntimeBindingProperty property,
Object parentObject,
MarshallerImpl context)
{
super(parentObject, property, context);
assert (!(parentObject instanceof Collection));
+
+ //we are getting the lexical value here because in certain cases
+ //this action could end up modifying the namespace context.
+ //(qname, type substitution).
+ if (parentObject == null) {
+ //REVIEW: should this be a special subclass for nil types?
+ //Any use of this value should cause an npe later on.
+ chars = null;
+ } else {
+ chars = grabChars();
+ }
}
@@ -107,6 +120,11 @@
}
protected CharSequence getCharData()
+ {
+ return chars;
+ }
+
+ private CharSequence grabChars()
{
final Object parent = getParentObject();
assert parent != null : "bad visitor: this=" + this;
1.9 +1 -1 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/MarshalResult.java
Index: MarshalResult.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/MarshalResult.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- MarshalResult.java 15 Dec 2003 05:03:30 -0000 1.8
+++ MarshalResult.java 7 Jan 2004 07:29:52 -0000 1.9
@@ -300,7 +300,7 @@
public NamespaceContext getNamespaceContext()
{
- throw new UnsupportedOperationException("UNIMPLEMENTED");
+ return context.getNamespaceContext();
}
public int getEventType()
1.3 +4 -0 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/QNameTypeConverter.java
Index: QNameTypeConverter.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/QNameTypeConverter.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- QNameTypeConverter.java 15 Dec 2003 05:03:30 -0000 1.2
+++ QNameTypeConverter.java 7 Jan 2004 07:29:53 -0000 1.3
@@ -79,6 +79,10 @@
public CharSequence print(Object value, MarshallerImpl context)
{
QName val = (QName)value;
+ final String uri = val.getNamespaceURI();
+ if (uri.length() > 0) {
+ context.ensurePrefix(uri);
+ }
return XsTypeConverter.printQName(val,
context.getNamespaceContext(),
context.getErrorCollection());
1.12 +12 -2 xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/UnmarshallerImpl.java
Index: UnmarshallerImpl.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/src/marshal/org/apache/xmlbeans/impl/marshal/UnmarshallerImpl.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- UnmarshallerImpl.java 16 Dec 2003 05:59:47 -0000 1.11
+++ UnmarshallerImpl.java 7 Jan 2004 07:29:53 -0000 1.12
@@ -452,7 +452,12 @@
QName getQNameValue()
{
- throw new AssertionError("unimp");
+ try {
+ return baseReader.getQNameValue();
+ }
+ catch (XMLStreamException e) {
+ throw new XmlRuntimeException(e);
+ }
}
String getAttributeStringValue()
@@ -598,7 +603,12 @@
QName getAttributeQNameValue()
{
- throw new AssertionError("unimp");
+ try {
+ return baseReader.getAttributeQNameValue(currentAttributeIndex);
+ }
+ catch (XMLStreamException e) {
+ throw new XmlRuntimeException(e);
+ }
}
1.15 +29 -0 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.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- example_config.xml 17 Dec 2003 00:17:53 -0000 1.14
+++ example_config.xml 7 Jan 2004 07:29:53 -0000 1.15
@@ -87,6 +87,35 @@
</bin:setter>
<bin:qname>java:SomeBool</bin:qname>
</bin:qname-property>
+
+
+ <bin:qname-property>
+ <bin:xmlcomponent>t=QName@http://www.w3.org/2001/XMLSchema</bin:xmlcomponent>
+ <bin:javatype>javax.xml.namespace.QName</bin:javatype>
+ <bin:getter>
+ <bin:method-name>getQn</bin:method-name>
+ </bin:getter>
+ <bin:setter>
+ <bin:method-name>setQn</bin:method-name>
+ <bin:param-type>javax.xml.namespace.QName</bin:param-type>
+ </bin:setter>
+ <bin:qname>java:qn</bin:qname>
+ <bin:attribute>true</bin:attribute>
+ </bin:qname-property>
+
+ <bin:qname-property>
+ <bin:xmlcomponent>t=QName@http://www.w3.org/2001/XMLSchema</bin:xmlcomponent>
+ <bin:javatype>javax.xml.namespace.QName</bin:javatype>
+ <bin:getter>
+ <bin:method-name>getQn2</bin:method-name>
+ </bin:getter>
+ <bin:setter>
+ <bin:method-name>setQn2</bin:method-name>
+ <bin:param-type>javax.xml.namespace.QName</bin:param-type>
+ </bin:setter>
+ <bin:qname>java:qn2</bin:qname>
+ </bin:qname-property>
+
<bin:qname-property>
<bin:xmlcomponent>t=boolean@http://www.w3.org/2001/XMLSchema</bin:xmlcomponent>
<bin:javatype>boolean</bin:javatype>
1.7 +34 -1 xml-xmlbeans/v2/test/cases/marshal/com/mytest/YourClass.java
Index: YourClass.java
===================================================================
RCS file: /home/cvs/xml-xmlbeans/v2/test/cases/marshal/com/mytest/YourClass.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- YourClass.java 2 Dec 2003 23:41:32 -0000 1.6
+++ YourClass.java 7 Jan 2004 07:29:53 -0000 1.7
@@ -58,6 +58,7 @@
import org.apache.xmlbeans.impl.marshal.util.ArrayUtils;
+import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@@ -72,10 +73,14 @@
// private List bools;// = newBoolList();
// private List strs;// = newStringList();
private long[] longArray;// = {RND.nextLong(), RND.nextLong()};
+
private boolean[] booleanArray;// = {true, false, true};
- private String[] stringArray;//{"ONE:"+RND.nextInt(), "TWO:"+RND.nextInt()};
+ private String[] stringArray = {"ONE:"+RND.nextInt(), "TWO:"+RND.nextInt()};
private MyClass[] myClassArray;//{new MyClass(), new MyClass()};
+ private QName qn = new QName("URI" + RND.nextInt(), "LNAME"+RND.nextInt());
+ private QName qn2 = new QName("URI" + RND.nextInt(), "LNAME"+RND.nextInt());
+
//hack alert
static final Random RND = new Random();
@@ -205,6 +210,28 @@
this.booleanArray = booleanArray;
}
+
+ public QName getQn()
+ {
+ return qn;
+ }
+
+ public void setQn(QName qn)
+ {
+ this.qn = qn;
+ }
+
+ public QName getQn2()
+ {
+ return qn2;
+ }
+
+ public void setQn2(QName qn2)
+ {
+ this.qn2 = qn2;
+ }
+
+
public boolean equals(Object o)
{
if (this == o) return true;
@@ -223,6 +250,10 @@
if (!Arrays.equals(stringArray, yourClass.stringArray)) return false;
// if (strs != null ? !strs.equals(yourClass.strs) : yourClass.strs != null) return false;
+ if (qn != null ? !qn.equals(yourClass.qn) : yourClass.qn != null) return false;
+ if (qn2 != null ? !qn2.equals(yourClass.qn2) : yourClass.qn2 != null) return false;
+
+
return true;
}
@@ -248,6 +279,8 @@
", myFloat=" + myFloat +
", attrib=" + attrib +
", someBool=" + someBool +
+ ", qn=" + qn +
+ ", qn2=" + qn2 +
// ", bools=" + (bools == null ? null : "size:" + bools.size() + bools) +
// ", strs=" + (strs == null ? null : "size:" + strs.size() + strs) +
", longArray=" + ArrayUtils.arrayToString(longArray) +
1.24 +9 -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.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- MarshalTests.java 17 Dec 2003 21:10:53 -0000 1.23
+++ MarshalTests.java 7 Jan 2004 07:29:53 -0000 1.24
@@ -106,6 +106,8 @@
testSimpleTypeMarshal(new Double(1231.444), "double");
testSimpleTypeMarshal("some text here", "string");
testSimpleTypeMarshal(" ", "string");
+
+ testSimpleTypeMarshal(new QName("someuri", "somelname"), "QName");
}
@@ -183,6 +185,13 @@
System.out.println("==================OBJ: " + orig);
dumpReader(reader);
+
+ if (!errors.isEmpty()) {
+ for (Iterator itr = errors.iterator(); itr.hasNext();) {
+ Object err = itr.next();
+ System.out.println("Error: " + err);
+ }
+ }
Assert.assertTrue(errors.isEmpty());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org