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"));
+    }
 }
 |