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