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