Author: jdeolive Date: 2012-05-28 15:58:36 -0700 (Mon, 28 May 2012) New Revision: 38770 Modified: trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/GMLConfiguration.java trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/bindings/AbstractGeometryTypeBinding.java trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/bindings/EnvelopeTypeBinding.java trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/v3_2/GMLConfiguration.java trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/v3_2/bindings/EnvelopeTypeBinding.java trunk/modules/extension/xsd/xsd-gml3/src/test/java/org/geotools/gml3/GML3EncodingTest.java Log: GEOT-4152, option for skipping encoding of srsDimension Modified: trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/GMLConfiguration.java =================================================================== --- trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/GMLConfiguration.java 2012-05-28 02:37:52 UTC (rev 38769) +++ trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/GMLConfiguration.java 2012-05-28 22:58:36 UTC (rev 38770) @@ -116,6 +116,12 @@ public static final QName ENCODE_FEATURE_MEMBER = org.geotools.gml2.GMLConfiguration.ENCODE_FEATURE_MEMBER; /** + * Boolean property which controls whether geometry and envelope objects are encoded with an + * srs dimension attribute. + */ + public static final QName NO_SRS_DIMENSION = new QName( "org.geotools.gml", "noSrsDimension" ); + + /** * extended support for arcs and surface flag */ boolean extArcSurfaceSupport = false; Modified: trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/bindings/AbstractGeometryTypeBinding.java =================================================================== --- trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/bindings/AbstractGeometryTypeBinding.java 2012-05-28 02:37:52 UTC (rev 38769) +++ trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/bindings/AbstractGeometryTypeBinding.java 2012-05-28 22:58:36 UTC (rev 38770) @@ -20,7 +20,9 @@ import org.geotools.geometry.jts.coordinatesequence.CoordinateSequences; import org.geotools.gml3.GML; +import org.geotools.gml3.GMLConfiguration; import org.geotools.xml.AbstractComplexBinding; +import org.geotools.xml.Configuration; import org.geotools.xml.ElementInstance; import org.geotools.xml.Node; import org.opengis.referencing.crs.CoordinateReferenceSystem; @@ -67,6 +69,16 @@ * @source $URL$ */ public class AbstractGeometryTypeBinding extends AbstractComplexBinding { + Configuration config; + + public AbstractGeometryTypeBinding(Configuration config) { + this.config = config; + } + + public void setConfiguration(Configuration config) { + this.config = config; + } + /** * @generated */ @@ -117,6 +129,11 @@ } if ("srsDimension".equals(name.getLocalPart())) { + //check if srsDimension is turned off + if (config.hasProperty(GMLConfiguration.NO_SRS_DIMENSION)) { + return null; + } + /** * For the dimension, use the actual dimension of the geometry. Using * the dimension of the CRS is not sufficient, since currently CRSes Modified: trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/bindings/EnvelopeTypeBinding.java =================================================================== --- trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/bindings/EnvelopeTypeBinding.java 2012-05-28 02:37:52 UTC (rev 38769) +++ trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/bindings/EnvelopeTypeBinding.java 2012-05-28 22:58:36 UTC (rev 38770) @@ -23,7 +23,9 @@ import org.geotools.geometry.jts.LiteCoordinateSequence; import org.geotools.geometry.jts.ReferencedEnvelope; import org.geotools.gml3.GML; +import org.geotools.gml3.GMLConfiguration; import org.geotools.xml.AbstractComplexBinding; +import org.geotools.xml.Configuration; import org.geotools.xml.ElementInstance; import org.geotools.xml.Node; import org.opengis.geometry.DirectPosition; @@ -86,6 +88,12 @@ * @source $URL$ */ public class EnvelopeTypeBinding extends AbstractComplexBinding { + Configuration config; + + public EnvelopeTypeBinding(Configuration config) { + this.config = config; + } + /** * @generated */ @@ -179,6 +187,11 @@ return GML3EncodingUtils.toURI(((ReferencedEnvelope) envelope) .getCoordinateReferenceSystem()); } else if (localName.equals("srsDimension")) { + //check if srsDimension is turned off + if (config.hasProperty(GMLConfiguration.NO_SRS_DIMENSION)) { + return null; + } + CoordinateReferenceSystem crs = ((ReferencedEnvelope) envelope) .getCoordinateReferenceSystem(); if (crs != null) { Modified: trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/v3_2/GMLConfiguration.java =================================================================== --- trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/v3_2/GMLConfiguration.java 2012-05-28 02:37:52 UTC (rev 38769) +++ trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/v3_2/GMLConfiguration.java 2012-05-28 22:58:36 UTC (rev 38770) @@ -16,6 +16,8 @@ */ package org.geotools.gml3.v3_2; +import javax.xml.namespace.QName; + import org.geotools.gml2.bindings.GMLCoordinatesTypeBinding; import org.geotools.gml3.bindings.AbstractFeatureCollectionTypeBinding; import org.geotools.gml3.bindings.AbstractFeatureTypeBinding; @@ -84,6 +86,12 @@ public class GMLConfiguration extends Configuration { /** + * Boolean property which controls whether geometry and envelope objects are encoded with an + * srs dimension attribute. + */ + public static final QName NO_SRS_DIMENSION = org.geotools.gml3.GMLConfiguration.NO_SRS_DIMENSION; + + /** * Creates a new configuration. * * @generated Modified: trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/v3_2/bindings/EnvelopeTypeBinding.java =================================================================== --- trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/v3_2/bindings/EnvelopeTypeBinding.java 2012-05-28 02:37:52 UTC (rev 38769) +++ trunk/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/v3_2/bindings/EnvelopeTypeBinding.java 2012-05-28 22:58:36 UTC (rev 38770) @@ -19,9 +19,14 @@ import javax.xml.namespace.QName; import org.geotools.gml3.v3_2.GML; +import org.geotools.xml.Configuration; public class EnvelopeTypeBinding extends org.geotools.gml3.bindings.EnvelopeTypeBinding { + public EnvelopeTypeBinding(Configuration config) { + super(config); + } + @Override public QName getTarget() { return GML.EnvelopeType; Modified: trunk/modules/extension/xsd/xsd-gml3/src/test/java/org/geotools/gml3/GML3EncodingTest.java =================================================================== --- trunk/modules/extension/xsd/xsd-gml3/src/test/java/org/geotools/gml3/GML3EncodingTest.java 2012-05-28 02:37:52 UTC (rev 38769) +++ trunk/modules/extension/xsd/xsd-gml3/src/test/java/org/geotools/gml3/GML3EncodingTest.java 2012-05-28 22:58:36 UTC (rev 38770) @@ -193,4 +193,14 @@ assertEquals( 0, dom.getElementsByTagName("gml:boundedBy").getLength()); } + + public void testEncodeWithNoSrsDimension() throws Exception { + GMLConfiguration gml = new GMLConfiguration(); + Document dom = new Encoder(gml).encodeAsDOM(GML3MockData.point(), GML.Point); + assertTrue(dom.getDocumentElement().hasAttribute("srsDimension")); + + gml.getProperties().add(GMLConfiguration.NO_SRS_DIMENSION); + dom = new Encoder(gml).encodeAsDOM(GML3MockData.point(), GML.Point); + assertFalse(dom.getDocumentElement().hasAttribute("srsDimension")); + } } |