From 76452fb5fe6b7c6004bc40ba2847311ac6ee802e Mon Sep 17 00:00:00 2001 From: ccancellieri Date: Tue, 13 Sep 2011 23:47:30 +0200 Subject: [PATCH] changes implementing fix for defect #16 --- .../encoder/utils/PropertyXMLEncoder.java | 30 +++++++++++++---- .../rest/encoder/GSResourceEncoderTest.java | 14 ++++++++ .../coverage/GSCoverageEncoderTest.java | 33 +++++++++++++++++++ .../coverage/GSResourceEncoderTest.java | 26 --------------- 4 files changed, 70 insertions(+), 33 deletions(-) create mode 100644 src/test/java/it/geosolutions/geoserver/rest/encoder/GSResourceEncoderTest.java delete mode 100644 src/test/java/it/geosolutions/geoserver/rest/encoder/coverage/GSResourceEncoderTest.java diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/utils/PropertyXMLEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/utils/PropertyXMLEncoder.java index 4221618..8475fcf 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/encoder/utils/PropertyXMLEncoder.java +++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/utils/PropertyXMLEncoder.java @@ -64,14 +64,30 @@ public class PropertyXMLEncoder extends XmlElement { } protected void set(final String key, final String value) { - if (key != null && value != null) { - Element pp = null; - if ((pp = contains(key)) == null) - add(key, value); - else { - remove(pp); - add(key, value); + set(getRoot(), key, value); + } + + private void set(final Element e, final String key, final String value){ + if (!key.contains("/")) { + if (key != null && value != null) { + Element pp = null; + if ((pp = contains(key)) == null) + add(key, value); + else { + remove(pp); + add(key, value); + } } + } else { + final int i = key.indexOf("/"); + final String childName = key.substring(0, i); + final String newkey = key.substring(i + 1); + + Element child = e.getChild(childName); + if (child == null) { + child = new Element(childName); + } + set(child, newkey, value); } } diff --git a/src/test/java/it/geosolutions/geoserver/rest/encoder/GSResourceEncoderTest.java b/src/test/java/it/geosolutions/geoserver/rest/encoder/GSResourceEncoderTest.java new file mode 100644 index 0000000..c74bf02 --- /dev/null +++ b/src/test/java/it/geosolutions/geoserver/rest/encoder/GSResourceEncoderTest.java @@ -0,0 +1,14 @@ +package it.geosolutions.geoserver.rest.encoder; + +import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder; +import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy; +import it.geosolutions.geoserver.rest.encoder.coverage.GSCoverageEncoder; +import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder; + +import org.junit.Assert; +import org.junit.Test; + +public class GSResourceEncoderTest { + + +} diff --git a/src/test/java/it/geosolutions/geoserver/rest/encoder/coverage/GSCoverageEncoderTest.java b/src/test/java/it/geosolutions/geoserver/rest/encoder/coverage/GSCoverageEncoderTest.java index d26e5bb..11ffb99 100644 --- a/src/test/java/it/geosolutions/geoserver/rest/encoder/coverage/GSCoverageEncoderTest.java +++ b/src/test/java/it/geosolutions/geoserver/rest/encoder/coverage/GSCoverageEncoderTest.java @@ -19,6 +19,8 @@ */ package it.geosolutions.geoserver.rest.encoder.coverage; +import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder; +import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy; import it.geosolutions.geoserver.rest.encoder.coverage.GSCoverageEncoder; import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder; import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation; @@ -43,6 +45,37 @@ public class GSCoverageEncoderTest extends TestCase { */ protected final static Logger LOGGER = Logger.getLogger(GSCoverageEncoderTest.class); + /** + * test set or reset of reprojection + */ + @Test + public void testReprojection(){ + GSResourceEncoder re=new GSCoverageEncoder(); + + re.setProjectionPolicy(ProjectionPolicy.FORCE_DECLARED); + Assert.assertNotNull(re.contains("projectionPolicy",ProjectionPolicy.FORCE_DECLARED.toString())); + + re.setProjectionPolicy(ProjectionPolicy.NONE); + Assert.assertNull(re.contains("projectionPolicy",ProjectionPolicy.FORCE_DECLARED.toString())); + Assert.assertNotNull(re.contains("projectionPolicy",ProjectionPolicy.NONE.toString())); + } + + /** + * test set or reset of BB + */ + @Test + public void testBB(){ + GSResourceEncoder re=new GSCoverageEncoder(); + + re.setLatLonBoundingBox(-180d, 90d, 180d, -90d, null); + Assert.assertNotNull(re.contains("minx","-180.0")); + + re.setLatLonBoundingBox(-90d, 45d, 180d, -90d, null); + + Assert.assertNull(re.contains("minx","-180.0")); + Assert.assertNotNull(re.contains("minx","-90.0")); + } + @Test public void testAll() { final GSCoverageEncoder encoder=new GSCoverageEncoder(); diff --git a/src/test/java/it/geosolutions/geoserver/rest/encoder/coverage/GSResourceEncoderTest.java b/src/test/java/it/geosolutions/geoserver/rest/encoder/coverage/GSResourceEncoderTest.java deleted file mode 100644 index d67945e..0000000 --- a/src/test/java/it/geosolutions/geoserver/rest/encoder/coverage/GSResourceEncoderTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package it.geosolutions.geoserver.rest.encoder.coverage; - -import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder; -import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy; -import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder; - -import org.junit.Assert; -import org.junit.Test; - -public class GSResourceEncoderTest { - - /** - * test set or reset of reprojection - */ - @Test - public void testReprojection(){ - GSResourceEncoder re=new GSCoverageEncoder(); - - re.setProjectionPolicy(ProjectionPolicy.FORCE_DECLARED); - Assert.assertNotNull(re.contains("projectionPolicy",ProjectionPolicy.FORCE_DECLARED.toString())); - - re.setProjectionPolicy(ProjectionPolicy.NONE); - Assert.assertNull(re.contains("projectionPolicy",ProjectionPolicy.FORCE_DECLARED.toString())); - Assert.assertNotNull(re.contains("projectionPolicy",ProjectionPolicy.NONE.toString())); - } -}