jochen      2005/07/13 12:58:16

  Modified:    src/jaxme/org/apache/ws/jaxme/generator/sg/impl
                        JAXBComplexContentTypeSG.java
               src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg
                        BeanGeneratingVisitor.java
               src/jaxme/org/apache/ws/jaxme/junit ParserTest.java
  Log:
  Detection of groups with multiplicity > 1 was still unworking in the HEAD. 
Fixed, and added a unit test.
  
  Revision  Changes    Path
  1.11      +1 -1      
ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBComplexContentTypeSG.java
  
  Index: JAXBComplexContentTypeSG.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBComplexContentTypeSG.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JAXBComplexContentTypeSG.java     8 Jul 2005 20:43:31 -0000       1.10
  +++ JAXBComplexContentTypeSG.java     13 Jul 2005 19:58:16 -0000      1.11
  @@ -153,7 +153,7 @@
       
       private void findParticles(GroupSG[] pStack, ParticleSG pParticle) 
throws SAXException {
           if (pParticle.isGroup()) {
  -            if (pParticle.getMaxOccurs() > 1) {
  +            if (pParticle.isMultiple()) {
                   groupParticlesWithMultiplicityGreaterOne.add(new 
Particle(pStack, pParticle));
               } else if (isMixed) {
                                mixedContentParticles.add(new Particle(pStack, 
pParticle));
  
  
  
  1.4       +1 -0      
ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/BeanGeneratingVisitor.java
  
  Index: BeanGeneratingVisitor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/BeanGeneratingVisitor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- BeanGeneratingVisitor.java        6 Jul 2005 21:34:13 -0000       1.3
  +++ BeanGeneratingVisitor.java        13 Jul 2005 19:58:16 -0000      1.4
  @@ -96,6 +96,7 @@
        }
   
        public void startComplexContent(ComplexTypeSG pType) throws 
SAXException {
  +             pType.getComplexContentSG().getElementParticles(); // Triggers 
the content verification
                ct = pType;
                generateAttributes(pType);
                if (pType.getComplexContentSG().isMixed()) {
  
  
  
  1.10      +82 -45    
ws-jaxme/src/jaxme/org/apache/ws/jaxme/junit/ParserTest.java
  
  Index: ParserTest.java
  ===================================================================
  RCS file: 
/home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/junit/ParserTest.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ParserTest.java   8 Jul 2005 20:43:58 -0000       1.9
  +++ ParserTest.java   13 Jul 2005 19:58:16 -0000      1.10
  @@ -53,6 +53,7 @@
   import org.apache.ws.jaxme.xs.types.XSID;
   import org.apache.ws.jaxme.xs.xml.XsQName;
   import org.xml.sax.InputSource;
  +import org.xml.sax.SAXException;
   
   
   /** <p>Implements some basic tests for the Schema generator.</p>
  @@ -1030,48 +1031,84 @@
       assertEquals(new Long(1), nmtsl.getMinLength());
     }  
   
  -  /** Test for <a 
href="http://issues.apache.org/jira/browse/JAXME-45";>JAXME-45</a>
  -   */
  -  public void testJira46() throws Exception {
  -      final String uri = "http://www.cnipa.it/schemas/2003/eGovIT/Busta1_0/";;
  -      final String schemaSpec =
  -          "<xs:schema targetNamespace='" + uri + "'\n" +
  -          "    xmlns:eGov_IT='" + uri + "'\n" +
  -          "    xmlns:xs='http://www.w3.org/2001/XMLSchema'>\n" +
  -          "  <xs:element name='Riferimento'>\n" +
  -          "    <xs:complexType>\n" +
  -          "      <xs:sequence/>\n" +
  -          "      <xs:attribute ref='eGov_IT:id' use='required'/>\n" +
  -          "    </xs:complexType>\n" +
  -          "  </xs:element>\n" +
  -          "  <xs:attribute name='id' type='xs:ID'/>\n" +
  -          "</xs:schema>\n";
  -
  -      InputSource isource = new InputSource(new StringReader(schemaSpec));
  -      isource.setSystemId("jira46.xsd");
  -      JAXBSchemaReader r = getSchemaReader();
  -      XSParser parser = r.getSGFactory().newXSParser();
  -      parser.setValidating(false);
  -      XSSchema schema = parser.parse(isource);
  -      XSAttribute[] attrs = schema.getAttributes();
  -      assertEquals(1, attrs.length);
  -      XSAttribute idAttr = attrs[0];
  -      assertTrue(idAttr instanceof JAXBAttribute);
  -      assertEquals(new XsQName(uri, "id"), idAttr.getName());
  -      assertEquals(XSID.getInstance(), idAttr.getType());
  -      assertTrue(idAttr.isOptional());
  -      XSElement[] elements = schema.getElements();
  -      assertEquals(1, elements.length);
  -      XSElement rifElem = elements[0];
  -      assertFalse(rifElem.getType().isSimple());
  -      XSComplexType ct = rifElem.getType().getComplexType();
  -      XSAttributable[] rifAttrs = ct.getAttributes();
  -      assertEquals(1, rifAttrs.length);
  -      XSAttribute idRef = (XSAttribute) rifAttrs[0];
  -      assertTrue(idRef instanceof JAXBAttribute);
  -      assertFalse(idRef.equals(idAttr));
  -      assertEquals(new XsQName(uri, "id"), idAttr.getName());
  -      assertEquals(XSID.getInstance(), idAttr.getType());
  -      assertFalse(idRef.isOptional());
  -  }
  +    /** Test for <a 
href="http://issues.apache.org/jira/browse/JAXME-46";>JAXME-46</a>
  +     */
  +    public void testJira46() throws Exception {
  +     final String uri = "http://www.cnipa.it/schemas/2003/eGovIT/Busta1_0/";;
  +     final String schemaSpec =
  +             "<xs:schema targetNamespace='" + uri + "'\n" +
  +             "    xmlns:eGov_IT='" + uri + "'\n" +
  +             "    xmlns:xs='http://www.w3.org/2001/XMLSchema'>\n" +
  +             "  <xs:element name='Riferimento'>\n" +
  +             "    <xs:complexType>\n" +
  +             "      <xs:sequence/>\n" +
  +             "      <xs:attribute ref='eGov_IT:id' use='required'/>\n" +
  +             "    </xs:complexType>\n" +
  +             "  </xs:element>\n" +
  +             "  <xs:attribute name='id' type='xs:ID'/>\n" +
  +             "</xs:schema>\n";
  +     
  +     InputSource isource = new InputSource(new StringReader(schemaSpec));
  +     isource.setSystemId("jira46.xsd");
  +     JAXBSchemaReader r = getSchemaReader();
  +     XSParser parser = r.getSGFactory().newXSParser();
  +     parser.setValidating(false);
  +     XSSchema schema = parser.parse(isource);
  +     XSAttribute[] attrs = schema.getAttributes();
  +     assertEquals(1, attrs.length);
  +     XSAttribute idAttr = attrs[0];
  +     assertTrue(idAttr instanceof JAXBAttribute);
  +     assertEquals(new XsQName(uri, "id"), idAttr.getName());
  +     assertEquals(XSID.getInstance(), idAttr.getType());
  +     assertTrue(idAttr.isOptional());
  +     XSElement[] elements = schema.getElements();
  +     assertEquals(1, elements.length);
  +     XSElement rifElem = elements[0];
  +     assertFalse(rifElem.getType().isSimple());
  +     XSComplexType ct = rifElem.getType().getComplexType();
  +     XSAttributable[] rifAttrs = ct.getAttributes();
  +     assertEquals(1, rifAttrs.length);
  +     XSAttribute idRef = (XSAttribute) rifAttrs[0];
  +     assertTrue(idRef instanceof JAXBAttribute);
  +     assertFalse(idRef.equals(idAttr));
  +     assertEquals(new XsQName(uri, "id"), idAttr.getName());
  +     assertEquals(XSID.getInstance(), idAttr.getType());
  +     assertFalse(idRef.isOptional());
  +    }
  +
  +    /** Test, whether a choice group with multiplicity > 1 is
  +     * rejected.
  +     */
  +    public void testMultipleGroupRejected() throws Exception {
  +     final String schemaSpec =
  +             "<xs:schema\n" +
  +             "    xmlns:xs='http://www.w3.org/2001/XMLSchema'\n" +
  +             "    elementFormDefault='qualified'\n" +
  +             "    xmlns:jaxb='http://java.sun.com/xml/ns/jaxb'\n" +
  +             "    jaxb:version='1.0'>\n" +
  +            "  <xs:annotation><xs:appinfo>\n" +
  +            "    <jaxb:schemaBindings xmlns:jaxb='" + 
JAXBParser.JAXB_SCHEMA_URI + "'>\n" +
  +            "      <jaxb:package 
name='parsertest.testmultiplegroupsrejected'/>\n" +
  +            "    </jaxb:schemaBindings>\n" +
  +            "  </xs:appinfo></xs:annotation>\n" +
  +            "  <xs:element name='DIAGJOBS'>\n" +
  +             "    <xs:complexType>\n" +
  +             "      <xs:choice maxOccurs='unbounded'>\n" +
  +             "        <xs:element name='DIAGJOB' type='xs:string'/>\n" +
  +             "        <xs:sequence>\n" +
  +             "          <xs:element name='DJREF' type='xs:long'/>\n" +
  +             "          <xs:element name='DESCRIPTIONS' type='xs:string' 
minOccurs='0'/>\n" +
  +             "        </xs:sequence>\n" +
  +             "      </xs:choice>\n" +
  +             "    </xs:complexType>\n" +
  +             "  </xs:element>\n" +
  +             "</xs:schema>\n";
  +             SchemaSG schema = parse(schemaSpec, 
"testMultipleGroupRejected.xsd");
  +             try {
  +                     schema.generate();
  +                     fail("Expected an exception");
  +             } catch (SAXException e) {
  +                     assertTrue(e.getMessage().indexOf("Model groups with 
maxOccurs > 1 are not yet supported.") != -1);
  +             }
  +    }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to