You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jaxme-dev@ws.apache.org by jo...@apache.org on 2006/10/06 14:19:59 UTC

svn commit: r453572 - in /webservices/jaxme/branches/MAVEN: ./ projects/jm/src/test/java/org/apache/ws/jaxme/junit/ projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/ projects/xs/src/test/java/org/apache/ws/jaxme/xs/junit/

Author: jochen
Date: Fri Oct  6 05:19:58 2006
New Revision: 453572

URL: http://svn.apache.org/viewvc?view=rev&rev=453572
Log:
If an extending types content was reduced to the extending types
content particle (in other words, if the extended type had empty
content), then the content particles minOccurs and maxOccurs
values haven't been inherited. (JAXME-84)

Modified:
    webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/BaseTestCase.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/JiraTest.java
    webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSTypeImpl.java
    webservices/jaxme/branches/MAVEN/projects/xs/src/test/java/org/apache/ws/jaxme/xs/junit/JiraTest.java
    webservices/jaxme/branches/MAVEN/projects/xs/src/test/java/org/apache/ws/jaxme/xs/junit/ParserTest.java
    webservices/jaxme/branches/MAVEN/status.xml

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/BaseTestCase.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/BaseTestCase.java?view=diff&rev=453572&r1=453571&r2=453572
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/BaseTestCase.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/BaseTestCase.java Fri Oct  6 05:19:58 2006
@@ -96,7 +96,7 @@
     }
 
     protected void unmarshalMarshalUnmarshal(Class pClass, String pXML, boolean pIndenting)
-			throws Exception {
+			throws JAXBException {
         Object o = unmarshal(pClass, pXML);
         assertNotNull(o);
         String s = marshal(o, pClass, pIndenting);
@@ -105,7 +105,7 @@
         assertNotNull(comp);
     }
 
-	protected void unmarshalMarshalUnmarshal(Class pClass, String pXML) throws Exception {
+	protected void unmarshalMarshalUnmarshal(Class pClass, String pXML) throws JAXBException {
 		unmarshalMarshalUnmarshal(pClass, pXML, true);
     }
 

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/JiraTest.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/JiraTest.java?view=diff&rev=453572&r1=453571&r2=453572
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/JiraTest.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/JiraTest.java Fri Oct  6 05:19:58 2006
@@ -1,5 +1,6 @@
 package org.apache.ws.jaxme.junit;
 
+import java.io.File;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.List;
@@ -35,6 +36,8 @@
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
+import com.softwareag.namespaces.de.s.xdws.soap_api.XdwsResponse;
+
 
 /** Some excerpts from Jira bug reports.
  */
@@ -319,5 +322,16 @@
 		// if we get this far issue 72 shoulb be fixed. just to be sure - unmarshal and compare QNames.
 		Jaxme72 jaxme72Clone = (Jaxme72) ctx.createUnmarshaller().unmarshal(new InputSource(new StringReader(sw.toString())));
 		assertEquals(jaxme72.getTest(),jaxme72Clone.getTest());
+	}
+
+	/** Test for <a href="http://issues.apache.org/jira/browse/JAXME-84">JAXME-84</a>.
+	 */
+	public void testJAXME84() throws Exception {
+	    final String xml =
+	        "<xdws:xdwsResponse version=\"1\" xmlns:xdws=\"http://namespaces.softwareag.com/de/s/xDWS/soap-api\">\n"
+	        + "  <xdws:response rc=\"4\"/>\n"
+	        + "  <xdws:result rc=\"4\"/>\n"
+	        + "</xdws:xdwsResponse>";
+	    unmarshalMarshalUnmarshal(XdwsResponse.class, xml);
 	}
 }

Modified: webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSTypeImpl.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSTypeImpl.java?view=diff&rev=453572&r1=453571&r2=453572
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSTypeImpl.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSTypeImpl.java Fri Oct  6 05:19:58 2006
@@ -179,6 +179,34 @@
       return complexContent;
     }
 
+    private int getMinOccursByParticle(XsTTypeDefParticle pParticle) throws SAXException {
+        if (pParticle instanceof XsEChoice) {
+            return ((XsEChoice) pParticle).getMinOccurs();
+        } else if (pParticle instanceof XsESequence) {
+            return ((XsESequence) pParticle).getMinOccurs();
+        } else if (pParticle instanceof XsTAll) {
+            return ((XsTAll) pParticle).getMinOccurs();
+        } else if (pParticle instanceof XsTGroupRef) {
+            return ((XsTGroupRef) pParticle).getMinOccurs();
+        } else {
+            throw new IllegalStateException("Unknown TypeDefParticle type: " + pParticle.getClass().getName());
+        }
+    }
+
+    private int getMaxOccursByParticle(XsTTypeDefParticle pParticle) throws SAXException {
+        if (pParticle instanceof XsEChoice) {
+            return ((XsEChoice) pParticle).getMaxOccurs();
+        } else if (pParticle instanceof XsESequence) {
+            return ((XsESequence) pParticle).getMaxOccurs();
+        } else if (pParticle instanceof XsTAll) {
+            return ((XsTAll) pParticle).getMaxOccurs();
+        } else if (pParticle instanceof XsTGroupRef) {
+            return ((XsTGroupRef) pParticle).getMaxOccurs();
+        } else {
+            throw new IllegalStateException("Unknown TypeDefParticle type: " + pParticle.getClass().getName());
+        }
+    }
+
     protected XSGroup getGroupByParticle(XsTTypeDefParticle pParticle) throws SAXException {
       XSGroup result;
       XSType myOwner = getOwner();
@@ -334,7 +362,10 @@
         	}
         } else if (extendedComplexType.isEmpty()) {
           complexContentType = groupType;
-          complexContentParticle = new XSParticleImpl(group);
+          XSParticleImpl particleImpl = new XSParticleImpl(group);
+          particleImpl.setMinOccurs(getMinOccursByParticle(particle));
+          particleImpl.setMaxOccurs(getMaxOccursByParticle(particle));
+          complexContentParticle = particleImpl;
         } else {
           XSGroup sequenceGroup = new ExtensionGroup(pOwner, new XSParticle[]{extendedComplexType.getParticle(), new XSParticleImpl(group)});
           complexContentParticle = new XSParticleImpl(sequenceGroup);

Modified: webservices/jaxme/branches/MAVEN/projects/xs/src/test/java/org/apache/ws/jaxme/xs/junit/JiraTest.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/xs/src/test/java/org/apache/ws/jaxme/xs/junit/JiraTest.java?view=diff&rev=453572&r1=453571&r2=453572
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/xs/src/test/java/org/apache/ws/jaxme/xs/junit/JiraTest.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/xs/src/test/java/org/apache/ws/jaxme/xs/junit/JiraTest.java Fri Oct  6 05:19:58 2006
@@ -204,4 +204,56 @@
         assertEquals(1, particle.getMinOccurs());
         assertEquals(-1, particle.getMaxOccurs());
 	}
+
+    /** Test for <a href="http://issues.apache.org/jira/browse/JAXME-84">JAXME-84</a>.
+     */
+    public void testJAXME84() throws Exception {
+        final String xml =
+            "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='http://namespaces.softwareag.com/de/s/xDWS/soap-api'\n"
+            + "    xmlns:xdws='http://namespaces.softwareag.com/de/s/xDWS/soap-api' elementFormDefault='qualified'\n"
+            + "    attributeFormDefault='unqualified'>\n"
+            + "  <xs:complexType name='xdwsResultInfo'>\n"
+            + "    <xs:attribute name='rc' type='xs:int' use='required'/>\n"
+            + "    <xs:attribute name='message' type='xs:string' use='optional'/>\n"
+            + "    <xs:attribute name='details' type='xs:string' use='optional'/>\n"
+            + "  </xs:complexType>\n"
+            + "  <xs:element name='xdwsResponse'>\n"
+            + "    <xs:complexType>\n"
+            + "      <xs:sequence>\n"
+            + "        <xs:element name='response' minOccurs='0' maxOccurs='unbounded'>\n"
+            + "          <xs:complexType>\n"
+            + "            <xs:complexContent>\n"
+            + "              <xs:extension base='xdws:xdwsResultInfo'>\n"
+            + "                <xs:choice minOccurs='0'>\n"
+            + "                  <xs:element name='a' type='xs:string'/>\n"
+            + "                  <xs:element name='b' type='xs:string'/>\n"
+            + "                </xs:choice>\n"
+            + "              </xs:extension>\n"
+            + "            </xs:complexContent>\n"
+            + "          </xs:complexType>\n"
+            + "        </xs:element>\n"
+            + "        <xs:element name='result' type='xdws:xdwsResultInfo'/>\n"
+            + "      </xs:sequence>\n"
+            + "      <xs:attribute name='version' type='xs:int' use='required' />\n"
+            + "    </xs:complexType>\n"
+            + "  </xs:element>\n"
+            + "</xs:schema>\n";
+        XSSchema schema = parse(xml, "jaxme84.xsd");
+        XSElement[] elements = schema.getElements();
+        assertEquals(1, elements.length);
+        XSElement xdwsResponseElement = elements[0];
+        XSParticle[] xdwsResponseParticles = assertGroup(assertComplexContent(assertComplexType(xdwsResponseElement.getType()))).getParticles();
+        assertEquals(2, xdwsResponseParticles.length);
+        XSElement responseElement = assertElement(xdwsResponseParticles[0]);
+        XSComplexType responseType = assertComplexType(responseElement.getType());
+        XSParticle particle = responseType.getParticle();
+        assertEquals(0, particle.getMinOccurs());
+        assertEquals(1, particle.getMaxOccurs());
+        XSParticle[] particles = assertGroup(particle).getParticles();
+        assertEquals(2, particles.length);
+        XSElement a = assertElement(particles[0]);
+        assertEquals(new XsQName("http://namespaces.softwareag.com/de/s/xDWS/soap-api", "a"), a.getName());
+        XSElement b = assertElement(particles[1]);
+        assertEquals(new XsQName("http://namespaces.softwareag.com/de/s/xDWS/soap-api", "b"), b.getName());
+    }
 }

Modified: webservices/jaxme/branches/MAVEN/projects/xs/src/test/java/org/apache/ws/jaxme/xs/junit/ParserTest.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/projects/xs/src/test/java/org/apache/ws/jaxme/xs/junit/ParserTest.java?view=diff&rev=453572&r1=453571&r2=453572
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/xs/src/test/java/org/apache/ws/jaxme/xs/junit/ParserTest.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/xs/src/test/java/org/apache/ws/jaxme/xs/junit/ParserTest.java Fri Oct  6 05:19:58 2006
@@ -1551,4 +1551,40 @@
 		testGroupMultiplicity(newXSParser());
 		testGroupMultiplicity(newJAXBParser());
 	}
+
+	private void testComplexTypeConsideredSimple(XSParser pParser) throws Exception {
+	    final String schemaSource = "<xs:schema xmlns='www.fgm.com/services/fgm/1.1'\n"
+            + "    xmlns:xs='http://www.w3.org/2001/XMLSchema'\n"
+            + "    targetNamespace='www.fgm.com/services/fgm/1.1'\n"
+            + "    elementFormDefault='qualified'>\n"
+            + "  <xs:complexType name='BaseObject'/>\n"
+            + "  <xs:complexType name='ExtendedBrokenObject'>\n"
+            + "    <xs:complexContent>\n"
+            + "      <xs:extension base='BrokenObject'/>\n"
+            + "    </xs:complexContent>\n"
+            + "  </xs:complexType>\n"
+            + "  <xs:complexType name='BrokenObject'>\n"
+            + "    <xs:complexContent>\n"
+            + "      <xs:extension base='BaseObject'>\n"
+            + "        <xs:sequence>\n"
+            + "          <xs:choice minOccurs='0' maxOccurs='unbounded'>\n"
+            + "            <xs:element name='Choice' type='ExtendedBrokenObject'\n"
+            + "                minOccurs='0' maxOccurs='unbounded'/>\n"
+            + "          </xs:choice>\n"
+            + "        </xs:sequence>\n"
+            + "      </xs:extension>\n"
+            + "    </xs:complexContent>\n"
+            + "  </xs:complexType>\n"
+            + "</xs:schema>\n";
+        InputSource isource = new InputSource(new StringReader(schemaSource));
+        isource.setSystemId("testComplexTypeConsideredSimple.xsd");
+        pParser.parse(isource);
+    }
+
+    /** Test for http://marc.theaimsgroup.com/?l=jaxme-dev&m=115945460223201&w=2
+     */
+    public void testComplexTypeConsideredSimple() throws Exception {
+        testComplexTypeConsideredSimple(newXSParser());
+        testComplexTypeConsideredSimple(newJAXBParser());
+    }
 }

Modified: webservices/jaxme/branches/MAVEN/status.xml
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/MAVEN/status.xml?view=diff&rev=453572&r1=453571&r2=453572
==============================================================================
--- webservices/jaxme/branches/MAVEN/status.xml (original)
+++ webservices/jaxme/branches/MAVEN/status.xml Fri Oct  6 05:19:58 2006
@@ -85,6 +85,12 @@
         The object factory wasn't properly initialized, if a schema was using
         multiple package names.
       </action>
+      <action dev="JW" type="fix" context="xs">
+        If an extending types content was reduced to the extending types
+        content particle (in other words, if the extended type had empty
+        content), then the content particles minOccurs and maxOccurs
+        values haven't been inherited. (JAXME-84)
+      </action>
     </release>
 	<release version="0.5.1" date="Not yet published">
       <action dev="JW" type="enhancement" context="js">



---------------------------------------------------------------------
To unsubscribe, e-mail: jaxme-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: jaxme-dev-help@ws.apache.org