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 2004/12/05 00:24:49 UTC

cvs commit: ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl JAXBAttributeSG.java

jochen      2004/12/04 15:24:49

  Modified:    src/xs/org/apache/ws/jaxme/xs/junit Tag: Branch_R0_3
                        JiraTest.java
               src/jaxme/org/apache/ws/jaxme/junit Tag: Branch_R0_3
                        ParserTest.java
               src/xs/org/apache/ws/jaxme/xs/impl Tag: Branch_R0_3
                        XSAttributeImpl.java
               src/jaxme/org/apache/ws/jaxme/generator/sg/impl Tag:
                        Branch_R0_3 JAXBAttributeSG.java
  Added:       src/test/jaxb/jira Tag: Branch_R0_3 jaxme-46.xsd
  Log:
  JaxMe-46: A referenced attribute wasn't necessarily initialized.
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.1.2.1   +0 -0      ws-jaxme/src/test/jaxb/jira/jaxme-46.xsd
  
  Index: jaxme-46.xsd
  ===================================================================
  RCS file: /home/cvs/ws-jaxme/src/test/jaxb/jira/jaxme-46.xsd,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  
  
  
  No                   revision
  No                   revision
  1.2.2.2   +40 -0     ws-jaxme/src/xs/org/apache/ws/jaxme/xs/junit/JiraTest.java
  
  Index: JiraTest.java
  ===================================================================
  RCS file: /home/cvs/ws-jaxme/src/xs/org/apache/ws/jaxme/xs/junit/JiraTest.java,v
  retrieving revision 1.2.2.1
  retrieving revision 1.2.2.2
  diff -u -r1.2.2.1 -r1.2.2.2
  --- JiraTest.java	22 Oct 2004 21:34:38 -0000	1.2.2.1
  +++ JiraTest.java	4 Dec 2004 23:24:48 -0000	1.2.2.2
  @@ -7,13 +7,17 @@
   
   import javax.xml.parsers.ParserConfigurationException;
   
  +import org.apache.ws.jaxme.xs.XSAttributable;
  +import org.apache.ws.jaxme.xs.XSAttribute;
   import org.apache.ws.jaxme.xs.XSComplexType;
  +import org.apache.ws.jaxme.xs.XSElement;
   import org.apache.ws.jaxme.xs.XSEnumeration;
   import org.apache.ws.jaxme.xs.XSParser;
   import org.apache.ws.jaxme.xs.XSSchema;
   import org.apache.ws.jaxme.xs.XSSimpleContentType;
   import org.apache.ws.jaxme.xs.XSSimpleType;
   import org.apache.ws.jaxme.xs.XSType;
  +import org.apache.ws.jaxme.xs.types.XSID;
   import org.apache.ws.jaxme.xs.types.XSString;
   import org.apache.ws.jaxme.xs.util.XsDateTimeFormat;
   import org.apache.ws.jaxme.xs.xml.XsAnyURI;
  @@ -128,5 +132,41 @@
           XSEnumeration[] outerType2Enums = outerType2contentType.getSimpleType().getEnumerations();
           assertEquals(1, outerType2Enums.length);
           assertEquals("4", outerType2Enums[0].getValue());
  +    }
  +
  +    /** Test for JAXME-46 in Jira.
  +     */
  +    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";
  +        XSSchema schema = parse(schemaSpec, "jira46.xsd");
  +        XSAttribute[] attrs = schema.getAttributes();
  +        assertEquals(1, attrs.length);
  +        XSAttribute idAttr = attrs[0];
  +        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];
  +        XSComplexType ct = assertComplexType(rifElem.getType());
  +        XSAttributable[] rifAttrs = ct.getAttributes();
  +        assertEquals(1, rifAttrs.length);
  +        XSAttribute idRef = (XSAttribute) rifAttrs[0];
  +        assertFalse(idRef.equals(idAttr));
  +        assertEquals(new XsQName(uri, "id"), idAttr.getName());
  +        assertEquals(XSID.getInstance(), idAttr.getType());
  +        assertFalse(idRef.isOptional());
       }
   }
  
  
  
  No                   revision
  No                   revision
  1.4.2.2   +65 -5     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.4.2.1
  retrieving revision 1.4.2.2
  diff -u -r1.4.2.1 -r1.4.2.2
  --- ParserTest.java	20 Aug 2004 12:22:55 -0000	1.4.2.1
  +++ ParserTest.java	4 Dec 2004 23:24:48 -0000	1.4.2.2
  @@ -31,16 +31,26 @@
   import org.apache.ws.jaxme.generator.sg.ListTypeSG;
   import org.apache.ws.jaxme.generator.sg.ObjectSG;
   import org.apache.ws.jaxme.generator.sg.ParticleSG;
  +import org.apache.ws.jaxme.generator.sg.SGFactory;
   import org.apache.ws.jaxme.generator.sg.SchemaSG;
   import org.apache.ws.jaxme.generator.sg.SimpleContentSG;
   import org.apache.ws.jaxme.generator.sg.SimpleTypeSG;
   import org.apache.ws.jaxme.generator.sg.TypeSG;
   import org.apache.ws.jaxme.generator.sg.UnionTypeSG;
  +import org.apache.ws.jaxme.generator.sg.impl.JAXBSGFactory;
   import org.apache.ws.jaxme.generator.sg.impl.JAXBSchemaReader;
  +import org.apache.ws.jaxme.generator.sg.impl.SGFactoryImpl;
   import org.apache.ws.jaxme.js.JavaQNameImpl;
  +import org.apache.ws.jaxme.xs.XSAttributable;
  +import org.apache.ws.jaxme.xs.XSAttribute;
  +import org.apache.ws.jaxme.xs.XSComplexType;
  +import org.apache.ws.jaxme.xs.XSElement;
   import org.apache.ws.jaxme.xs.XSParser;
  +import org.apache.ws.jaxme.xs.XSSchema;
  +import org.apache.ws.jaxme.xs.jaxb.JAXBAttribute;
   import org.apache.ws.jaxme.xs.jaxb.JAXBJavaType;
   import org.apache.ws.jaxme.xs.jaxb.impl.JAXBParser;
  +import org.apache.ws.jaxme.xs.types.XSID;
   import org.apache.ws.jaxme.xs.xml.XsQName;
   import org.xml.sax.InputSource;
   
  @@ -54,15 +64,20 @@
     public ParserTest(String arg) { super(arg); }
   
     protected SchemaSG parse(String pSchema, String pSystemId) throws Exception {
  -    Generator generator = new GeneratorImpl();
  -    JAXBSchemaReader r = new JAXBSchemaReader();
  -    generator.setSchemaReader(r);
  -    r.setGenerator(generator);
  +    JAXBSchemaReader r = getSchemaReader();
       InputSource isource = new InputSource(new StringReader(pSchema));
       isource.setSystemId(pSystemId);
       return r.parse(isource);
     }
   
  +  protected JAXBSchemaReader getSchemaReader() {
  +      Generator generator = new GeneratorImpl();
  +      JAXBSchemaReader r = new JAXBSchemaReader();
  +      generator.setSchemaReader(r);
  +      r.setGenerator(generator);
  +      return r;
  +  }
  +
     public void testSimpleTypes() throws Exception {
       final String schema =
         "<?xml version='1.0'?>\n" +
  @@ -1014,4 +1029,49 @@
       ListTypeSG nmtsl = nmtss.getListType();
       assertEquals(new Long(1), nmtsl.getMinLength());
     }  
  +
  +  /** Test for <a href="http://nagoya.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());
  +  }
   }
  
  
  
  No                   revision
  No                   revision
  1.3.2.1   +4 -0      ws-jaxme/src/xs/org/apache/ws/jaxme/xs/impl/XSAttributeImpl.java
  
  Index: XSAttributeImpl.java
  ===================================================================
  RCS file: /home/cvs/ws-jaxme/src/xs/org/apache/ws/jaxme/xs/impl/XSAttributeImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- XSAttributeImpl.java	16 Feb 2004 23:39:43 -0000	1.3
  +++ XSAttributeImpl.java	4 Dec 2004 23:24:48 -0000	1.3.2.1
  @@ -129,11 +129,15 @@
       XSType myType;
       if (isReference()) {
         XSAttribute attribute = getXSSchema().getAttribute(getName());
  +      attribute.validate();
         if (attribute == null) {
           throw new LocSAXException("Invalid attribute reference: No type named " + getName() + " defined.",
                                        getXsTAttribute().getLocator());
         }
         myType = attribute.getType();
  +      if (myType == null) {
  +          throw new IllegalStateException("The referenced attributes type must not be null.");
  +      }
       } else if (isInnerSimpleType()) {
         XsTLocalSimpleType innerSimpleType = getXsTAttribute().getSimpleType();
         myType = getXSSchema().getXSObjectFactory().newXSType(this, innerSimpleType);
  
  
  
  No                   revision
  No                   revision
  1.3.2.2   +3 -3      ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBAttributeSG.java
  
  Index: JAXBAttributeSG.java
  ===================================================================
  RCS file: /home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/JAXBAttributeSG.java,v
  retrieving revision 1.3.2.1
  retrieving revision 1.3.2.2
  diff -u -r1.3.2.1 -r1.3.2.2
  --- JAXBAttributeSG.java	26 Jul 2004 07:23:25 -0000	1.3.2.1
  +++ JAXBAttributeSG.java	4 Dec 2004 23:24:49 -0000	1.3.2.2
  @@ -59,6 +59,9 @@
   		isRequired = !pAttribute.isOptional();
   		name = pAttribute.getName();
           XSType type = pAttribute.getType();
  +        if (type == null) {
  +            throw new IllegalStateException("The attribute type must not be null.");
  +        }
           if (type.isGlobal()) {
           	typeSG = getFactory().getTypeSG(type);
               if (typeSG == null) {
  @@ -112,9 +115,6 @@
   	public XsQName getName(AttributeSG pController) { return name; }
   	
   	public boolean isRequired(AttributeSG pAttrController) { return isRequired; }
  -	public boolean hasIsSetMethod(AttributeSG pController) {
  -		return false;
  -	}
   	
   	public void forAllValues(AttributeSG pController, JavaMethod pMethod,
   							 DirectAccessible pElement, SGlet pSGlet) throws SAXException {
  
  
  

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