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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to