You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by dk...@apache.org on 2021/05/04 15:24:39 UTC

[ws-xmlschema] branch master updated (fa56719 -> f08d3a3)

This is an automated email from the ASF dual-hosted git repository.

dkulp pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/ws-xmlschema.git.


    from fa56719  [XMLSCHEMA-61] Update to be able to  build/test with Java 11 and Java 17
     new 66a29ce  [XMLSCHEMA-59] Make setVersion public
     new f08d3a3  [XMLSCHEMA-57] Fix namespace prefixes not being defined for unions

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/ws/commons/schema/XmlSchema.java    | 13 ++++++---
 .../ws/commons/schema/XmlSchemaSerializer.java     | 18 ++++++++++--
 xmlschema-core/src/test/java/tests/UnionTest.java  | 33 ++++++++++++++++++++++
 xmlschema-core/src/test/resources/union-schema.xsd | 17 +++++++++++
 4 files changed, 74 insertions(+), 7 deletions(-)
 create mode 100644 xmlschema-core/src/test/resources/union-schema.xsd

[ws-xmlschema] 01/02: [XMLSCHEMA-59] Make setVersion public

Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dkulp pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-xmlschema.git

commit 66a29cef6de092bd723987815c278b3a351c1459
Author: Daniel Kulp <dk...@apache.org>
AuthorDate: Tue May 4 10:50:29 2021 -0400

    [XMLSCHEMA-59] Make setVersion public
---
 .../main/java/org/apache/ws/commons/schema/XmlSchema.java   | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchema.java b/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchema.java
index 87f78b9..45c7aa5 100644
--- a/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchema.java
+++ b/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchema.java
@@ -463,6 +463,15 @@ public class XmlSchema extends XmlSchemaAnnotated implements NamespaceContextOwn
     }
 
     /**
+     * Set the declared XML Schema version of this schema
+     *
+     * @param version the new version.
+     */
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    /**
      * Set the default attribute form for this schema.
      *
      * @param value the form. This may not be null.
@@ -831,10 +840,6 @@ public class XmlSchema extends XmlSchemaAnnotated implements NamespaceContextOwn
         this.syntacticalTargetNamespace = syntacticalTargetNamespace;
     }
 
-    void setVersion(String version) {
-        this.version = version;
-    }
-
     /**
      * Get a schema from an import
      *

[ws-xmlschema] 02/02: [XMLSCHEMA-57] Fix namespace prefixes not being defined for unions

Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dkulp pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-xmlschema.git

commit f08d3a339fd546878b6848c8987fb9cb05fbb1c8
Author: Daniel Kulp <dk...@apache.org>
AuthorDate: Tue May 4 11:22:34 2021 -0400

    [XMLSCHEMA-57] Fix namespace prefixes not being defined for unions
---
 .../ws/commons/schema/XmlSchemaSerializer.java     | 18 ++++++++++--
 xmlschema-core/src/test/java/tests/UnionTest.java  | 33 ++++++++++++++++++++++
 xmlschema-core/src/test/resources/union-schema.xsd | 17 +++++++++++
 3 files changed, 65 insertions(+), 3 deletions(-)

diff --git a/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java b/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java
index e535b4f..307be76 100644
--- a/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java
+++ b/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java
@@ -2146,9 +2146,21 @@ public class XmlSchemaSerializer {
         }
 
         if (unionObj.getMemberTypesSource() != null) {
+            QName[] memberTypesQNames = unionObj.getMemberTypesQNames();            
+            for (QName qn : memberTypesQNames) {
+                String namespace = qn.getNamespaceURI();
+                if (namespace.length() != 0 && qn.getPrefix().length() != 0) {
+                    String prefix = schemaNamespace.get(namespace);
+                    if (!qn.getPrefix().equals(prefix)) {
+                        prefix = union.lookupPrefix(namespace);
+                    }
+                    if (!qn.getPrefix().equals(prefix)) {
+                        union.setAttributeNS(XMLNS_NAMESPACE_URI, "xmlns:" + qn.getPrefix(), qn.getNamespaceURI());
+                    }
+                }
+            }
             union.setAttributeNS(null, "memberTypes", unionObj.getMemberTypesSource());
-        }
-        else {
+        } else {
             QName[] memberTypesQNames = unionObj.getMemberTypesQNames();
             if (memberTypesQNames != null && memberTypesQNames.length > 0) {
                 StringBuilder memberTypes = new StringBuilder();
@@ -2163,7 +2175,7 @@ public class XmlSchemaSerializer {
                     }
                     memberTypes.append(memberTypesQName.getLocalPart());
                     if (i != n) {
-                      memberTypes.append(' ');
+                        memberTypes.append(' ');
                     }
                 }
                 
diff --git a/xmlschema-core/src/test/java/tests/UnionTest.java b/xmlschema-core/src/test/java/tests/UnionTest.java
index fab488e..64dfcc7 100644
--- a/xmlschema-core/src/test/java/tests/UnionTest.java
+++ b/xmlschema-core/src/test/java/tests/UnionTest.java
@@ -21,6 +21,8 @@ package tests;
 
 import java.io.FileInputStream;
 import java.io.InputStream;
+import java.io.StringReader;
+import java.io.StringWriter;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -81,5 +83,36 @@ public class UnionTest extends Assert {
         assertEquals("float decimal", xsstu.getMemberTypesSource());
 
     }
+    
+    @Test
+    public void testUnionNamespacePrefix() throws Exception {
+
+        QName elementQName = new QName("http://some.uri", "myDateTime");
+        InputStream is = new FileInputStream(Resources.asURI("union-schema.xsd"));
+        XmlSchemaCollection schemaCol = new XmlSchemaCollection();
+        schemaCol.read(new StreamSource(is));
+
+        XmlSchemaSimpleType simpleType = (XmlSchemaSimpleType)schemaCol.getTypeByQName(elementQName);
+        assertNotNull(simpleType);
+
+        XmlSchemaSimpleTypeUnion xsstu = (XmlSchemaSimpleTypeUnion)simpleType.getContent();
+        assertNotNull(xsstu);
+
+        QName[] qname = xsstu.getMemberTypesQNames();
+        Set<QName> s = new HashSet<QName>();
+        s.add(new QName("http://some.uri", "emptyString"));
+        s.add(new QName("http://www.w3.org/2001/XMLSchema", "dateTime"));
+        for (QName element : qname) {
+            assertTrue(s.remove(element));
+        }
+        assertTrue("The set should have been empty, but instead contained: " + s + ".", s.isEmpty());
+        
+        StringWriter writer = new StringWriter();
+        schemaCol.schemaForNamespace("http://some.uri").write(writer);
+        String sc = writer.toString();
+        assertTrue(sc, sc.contains("xmlns:q2"));
+        
+        new XmlSchemaCollection().read(new StringReader(sc));
+    }
 
 }
diff --git a/xmlschema-core/src/test/resources/union-schema.xsd b/xmlschema-core/src/test/resources/union-schema.xsd
new file mode 100644
index 0000000..4c9d0f2
--- /dev/null
+++ b/xmlschema-core/src/test/resources/union-schema.xsd
@@ -0,0 +1,17 @@
+<xs:schema elementFormDefault="qualified" targetNamespace="http://some.uri" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+	<xs:element name="DynamicObject">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="DatePicker1" xmlns:q1="http://some.uri" type="q1:myDateTime"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:simpleType name="emptyString">
+		<xs:restriction base="xs:string">
+			<xs:length value="0"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="myDateTime">
+		<xs:union xmlns:q2="http://some.uri" memberTypes="q2:emptyString xs:dateTime"/>
+	</xs:simpleType>
+</xs:schema>