From: <svn...@os...> - 2011-05-28 09:36:26
|
Author: aaime Date: 2011-05-28 02:36:18 -0700 (Sat, 28 May 2011) New Revision: 37334 Modified: branches/2.7.x/modules/extension/xsd/xsd-core/src/main/java/org/geotools/xml/Encoder.java branches/2.7.x/modules/extension/xsd/xsd-core/src/main/java/org/geotools/xml/Parser.java branches/2.7.x/modules/extension/xsd/xsd-gml2/src/test/resources/org/geotools/gml2/test.xsd Log: [GEOT-3600] Encoder fails to respect elemntFormDefault=unqualified Modified: branches/2.7.x/modules/extension/xsd/xsd-core/src/main/java/org/geotools/xml/Encoder.java =================================================================== --- branches/2.7.x/modules/extension/xsd/xsd-core/src/main/java/org/geotools/xml/Encoder.java 2011-05-28 09:26:38 UTC (rev 37333) +++ branches/2.7.x/modules/extension/xsd/xsd-core/src/main/java/org/geotools/xml/Encoder.java 2011-05-28 09:36:18 UTC (rev 37334) @@ -50,6 +50,7 @@ import org.eclipse.xsd.XSDAttributeDeclaration; import org.eclipse.xsd.XSDElementDeclaration; import org.eclipse.xsd.XSDFactory; +import org.eclipse.xsd.XSDForm; import org.eclipse.xsd.XSDModelGroup; import org.eclipse.xsd.XSDNamedComponent; import org.eclipse.xsd.XSDParticle; @@ -899,7 +900,7 @@ schemaLocations = null; } - start(entry.encoding); + start(entry.encoding, entry.element); //TODO: this method of getting at properties wont maintain order very well, need // to come up with a better system that is capable of hanlding feature types @@ -1108,7 +1109,7 @@ return null; } - protected void start(Element element) throws SAXException { + protected void start(Element element, XSDElementDeclaration declaration) throws SAXException { String uri = element.getNamespaceURI(); String local = element.getLocalName(); @@ -1116,12 +1117,15 @@ NamespaceSupport namespaces = this.namespaces; - if (namespaceAware) { + // declaration == null -> gml3 envelope encoding test failing + // declaration.getSchema() == null -> wfs 2.0 feature collection encoding test failing + if (namespaceAware && (declaration == null || declaration.isGlobal() || + declaration.getSchema() == null || + declaration.getSchema().getElementFormDefault() == XSDForm.QUALIFIED_LITERAL)) { uri = (uri != null) ? uri : namespaces.getURI(""); qName = namespaces.getPrefix(uri) + ":" + qName; } else { uri = ""; - namespaces = null; } DOMAttributes atts = new DOMAttributes(element.getAttributes(), namespaces); @@ -1142,8 +1146,10 @@ Node node = (Node) element.getChildNodes().item(i); if (node instanceof Element) { - start((Element) node); - end((Element) node); + Element child = (Element) node; + start(child, Schemas.getChildElementDeclaration(declaration, + new QName(child.getNamespaceURI(), child.getNodeName()))); + end(child); } } Modified: branches/2.7.x/modules/extension/xsd/xsd-core/src/main/java/org/geotools/xml/Parser.java =================================================================== --- branches/2.7.x/modules/extension/xsd/xsd-core/src/main/java/org/geotools/xml/Parser.java 2011-05-28 09:26:38 UTC (rev 37333) +++ branches/2.7.x/modules/extension/xsd/xsd-core/src/main/java/org/geotools/xml/Parser.java 2011-05-28 09:36:18 UTC (rev 37334) @@ -480,10 +480,6 @@ parser.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation", schemaLocation.toString()); - //set the default location - parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", - handler.getConfiguration().getSchemaFileURL()); - return parser; } Modified: branches/2.7.x/modules/extension/xsd/xsd-gml2/src/test/resources/org/geotools/gml2/test.xsd =================================================================== --- branches/2.7.x/modules/extension/xsd/xsd-gml2/src/test/resources/org/geotools/gml2/test.xsd 2011-05-28 09:26:38 UTC (rev 37333) +++ branches/2.7.x/modules/extension/xsd/xsd-gml2/src/test/resources/org/geotools/gml2/test.xsd 2011-05-28 09:36:18 UTC (rev 37334) @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<schema targetNamespace="http://www.geotools.org/test" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:test="http://www.geotools.org/test" xmlns:gml="http://www.opengis.net/gml"> +<schema targetNamespace="http://www.geotools.org/test" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:test="http://www.geotools.org/test" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified"> <import namespace="http://www.opengis.net/gml" schemaLocation="feature.xsd"/> |