This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 00031c1cd01ba304fee6ddb2c65811c3dc3e3433
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Sun Dec 12 17:14:54 2021 +0100

    Post-merge refactoring: rename classes and move `DecimatedShape` to `j2d` 
package because it does not depend on JTS.
---
 .../DecimatedPathIterator.java}                    |   6 +-
 .../DecimatedShape.java}                           |  75 +++------
 .../sis/internal/feature/j2d/ShapeWrapper.java     | 174 +++++++++++++++++++++
 .../org/apache/sis/internal/feature/jts/JTS.java   |  21 +--
 .../apache/sis/internal/feature/jts/JTSShape.java  |  51 ------
 ...SPathIterator.java => PathIteratorAdapter.java} |   5 +-
 .../{AbstractJTSShape.java => ShapeAdapter.java}   |  20 ++-
 .../sis/internal/feature/jts/ShapeConverter.java   |   4 +-
 .../{JTSShapeTest.java => ShapeAdapterTest.java}   |  24 +--
 .../apache/sis/test/suite/FeatureTestSuite.java    |   2 +-
 10 files changed, 235 insertions(+), 147 deletions(-)

diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/DecimateJTSPathIterator.java
 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/DecimatedPathIterator.java
similarity index 96%
rename from 
core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/DecimateJTSPathIterator.java
rename to 
core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/DecimatedPathIterator.java
index 136c68d..c1a94df 100644
--- 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/DecimateJTSPathIterator.java
+++ 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/DecimatedPathIterator.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.feature.jts;
+package org.apache.sis.internal.feature.j2d;
 
 import java.awt.geom.PathIterator;
 
@@ -30,7 +30,7 @@ import java.awt.geom.PathIterator;
  * @since   1.2
  * @module
  */
-final class DecimateJTSPathIterator implements PathIterator {
+final class DecimatedPathIterator implements PathIterator {
     /**
      * The source of line segments.
      */
@@ -49,7 +49,7 @@ final class DecimateJTSPathIterator implements PathIterator {
     /**
      * Creates a new iterator.
      */
-    DecimateJTSPathIterator(final PathIterator source, final double xRes, 
final double yRes) {
+    DecimatedPathIterator(final PathIterator source, final double xRes, final 
double yRes) {
         this.source = source;
         this.xRes   = xRes;
         this.yRes   = yRes;
diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/DecimateJTSShape.java
 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/DecimatedShape.java
similarity index 57%
rename from 
core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/DecimateJTSShape.java
rename to 
core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/DecimatedShape.java
index 92f1276..d388918 100644
--- 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/DecimateJTSShape.java
+++ 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/DecimatedShape.java
@@ -14,18 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.feature.jts;
+package org.apache.sis.internal.feature.j2d;
 
-import java.awt.Rectangle;
 import java.awt.Shape;
 import java.awt.geom.PathIterator;
 import java.awt.geom.AffineTransform;
-import java.awt.geom.Point2D;
-import java.awt.geom.Rectangle2D;
 
 
 /**
  * A shape that apply a simple decimation on-the-fly for faster drawing.
+ *
+ * <h2>Limitations</h2>
  * Current implementation assumes that the shape is flattened.
  * There is some tolerance for quadratic and cubic curves,
  * but the result may not be correct.
@@ -36,12 +35,7 @@ import java.awt.geom.Rectangle2D;
  * @since   1.2
  * @module
  */
-final class DecimateJTSShape implements Shape {
-    /**
-     * The shape to decimate.
-     */
-    private final Shape source;
-
+public final class DecimatedShape extends ShapeWrapper {
     /**
      * The desired resolution on each axis.
      */
@@ -50,68 +44,37 @@ final class DecimateJTSShape implements Shape {
     /**
      * Creates a new wrapper which will decimate the coordinates of the given 
source.
      *
-     * @param  source  the shape to decimate.
+     * @param  source      the shape to decimate.
+     * @param  resolution  the desired resolution on each axis.
      */
-    public DecimateJTSShape(final Shape source, final double[] resolution) {
-        this.source = source;
+    public DecimatedShape(final Shape source, final double[] resolution) {
+        super(source);
         xRes = Math.abs(resolution[0]);
         yRes = Math.abs(resolution[1]);
     }
 
     /**
      * Returns {@code true} if resolutions are strictly positive and finite 
numbers.
+     *
+     * @return whether this object can effectively apply decimation.
      */
-    final boolean isValid() {
+    public boolean isValid() {
         return xRes > 0 && yRes > 0 && xRes < Double.MAX_VALUE && yRes < 
Double.MAX_VALUE;
     }
 
-    @Override
-    public Rectangle getBounds() {
-        return source.getBounds();
-    }
-
-    @Override
-    public Rectangle2D getBounds2D() {
-        return source.getBounds2D();
-    }
-
-    @Override
-    public boolean contains(double x, double y) {
-        return source.contains(x, y);
-    }
-
-    @Override
-    public boolean contains(Point2D p) {
-        return source.contains(p);
-    }
-
-    @Override
-    public boolean intersects(double x, double y, double w, double h) {
-        return source.intersects(x, y, w, h);
-    }
-
-    @Override
-    public boolean intersects(Rectangle2D r) {
-        return source.intersects(r);
-    }
-
-    @Override
-    public boolean contains(double x, double y, double w, double h) {
-        return source.contains(x, y, w, h);
-    }
-
-    @Override
-    public boolean contains(Rectangle2D r) {
-        return source.contains(r);
-    }
-
+    /**
+     * Returns an iterator over the coordinates of this shape after decimation.
+     */
     @Override
     public PathIterator getPathIterator(final AffineTransform at) {
-        return new DecimateJTSPathIterator(source.getPathIterator(at), xRes, 
yRes);
+        return new DecimatedPathIterator(source.getPathIterator(at), xRes, 
yRes);
     }
 
+    /**
+     * Returns an iterator over the coordinates of this shape, approximated by 
decimated line segments.
+     */
     @Override
     public PathIterator getPathIterator(final AffineTransform at, final double 
flatness) {
-        return new DecimateJTSPathIterator(source.getPathIterator(at, 
flatness), xRes, yRes);
+        return new DecimatedPathIterator(source.getPathIterator(at, flatness), 
xRes, yRes);
     }
 }
diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/ShapeWrapper.java
 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/ShapeWrapper.java
new file mode 100644
index 0000000..d8487a3
--- /dev/null
+++ 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/ShapeWrapper.java
@@ -0,0 +1,174 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.internal.feature.j2d;
+
+import java.awt.Shape;
+import java.awt.Rectangle;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.PathIterator;
+import java.awt.geom.AffineTransform;
+
+
+/**
+ * A wrapper that delegate all {@link Shape} methods to a source shape.
+ * Subclasses should override at least one method for making this class useful.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @version 1.2
+ * @since   1.2
+ * @module
+ */
+abstract class ShapeWrapper implements Shape {
+    /**
+     * The source of coordinate values.
+     */
+    protected final Shape source;
+
+    /**
+     * Creates a new wrapper for the given shape.
+     *
+     * @param  source  the source of coordinate values.
+     */
+    protected ShapeWrapper(final Shape source) {
+        this.source = source;
+    }
+
+    /**
+     * Returns a rectangle that completely encloses this {@code Shape}.
+     * This is not necessarily the smallest bounding box if an accurate
+     * computation would be too expansive.
+     *
+     * @return a rectangle that completely encloses this {@code Shape}.
+     */
+    @Override
+    public Rectangle getBounds() {
+        return source.getBounds();
+    }
+
+    /**
+     * Returns a rectangle that completely encloses this {@code Shape}.
+     * This is not necessarily the smallest bounding box if an accurate
+     * computation would be too expansive.
+     *
+     * @return a rectangle that completely encloses this {@code Shape}.
+     */
+    @Override
+    public Rectangle2D getBounds2D() {
+        return source.getBounds2D();
+    }
+
+    /**
+     * Tests if the specified coordinates are inside the boundary of this 
shape.
+     *
+     * @param  x  the first coordinate value.
+     * @param  y  the second coordinate value.
+     * @return whether the point specified by given coordinates is inside this 
shape.
+     */
+    @Override
+    public boolean contains(double x, double y) {
+        return source.contains(x, y);
+    }
+
+    /**
+     * Tests if the point is inside the boundary of this shape.
+     *
+     * @param  p  the point to test.
+     * @return whether the given point is inside this shape.
+     */
+    @Override
+    public boolean contains(Point2D p) {
+        return source.contains(p);
+    }
+
+    /**
+     * Tests if the interior of this {@code Shape} intersects the interior of 
a specified rectangular area.
+     * This method may conservatively return {@code true} if an accurate 
computation would be too expansive.
+     *
+     * @param  x  minimal <var>x</var> coordinate of the rectangle.
+     * @param  y  minimal <var>y</var> coordinate of the rectangle.
+     * @param  w  width of the rectangle.
+     * @param  h  height of the rectangle.
+     * @return whether the specified rectangle intersects the interior of this 
shape.
+     */
+    @Override
+    public boolean intersects(double x, double y, double w, double h) {
+        return source.intersects(x, y, w, h);
+    }
+
+    /**
+     * Tests if the interior of this {@code Shape} intersects the interior of 
a specified rectangular area.
+     * This method may conservatively return {@code true} if an accurate 
computation would be too expansive.
+     *
+     * @param  r  the rectangular area to test.
+     * @return whether the specified rectangle intersects the interior of this 
shape.
+     */
+    @Override
+    public boolean intersects(Rectangle2D r) {
+        return source.intersects(r);
+    }
+
+    /**
+     * Tests if the interior of this {@code Shape} entirely contains the 
interior of a specified rectangular area.
+     * This method may conservatively return {@code false} if an accurate 
computation would be too expansive.
+     *
+     * @param  x  minimal <var>x</var> coordinate of the rectangle.
+     * @param  y  minimal <var>y</var> coordinate of the rectangle.
+     * @param  w  width of the rectangle.
+     * @param  h  height of the rectangle.
+     * @return whether the specified rectangle entirely contains the interior 
of this shape.
+     */
+    @Override
+    public boolean contains(double x, double y, double w, double h) {
+        return source.contains(x, y, w, h);
+    }
+
+    /**
+     * Tests if the interior of this {@code Shape} entirely contains the 
interior of a specified rectangular area.
+     * This method may conservatively return {@code false} if an accurate 
computation would be too expansive.
+     *
+     * @param  r  the rectangular area to test.
+     * @return whether the specified rectangle entirely contains the interior 
of this shape.
+     */
+    @Override
+    public boolean contains(Rectangle2D r) {
+        return source.contains(r);
+    }
+
+    /**
+     * Returns an iterator over the coordinates of this shape.
+     *
+     * @param  at  an optional transform to be applied on coordinate values, 
or {@code null} if none.
+     * @return iterator over the coordinate values of this shape.
+     */
+    @Override
+    public PathIterator getPathIterator(AffineTransform at) {
+        return source.getPathIterator(at);
+    }
+
+    /**
+     * Returns an iterator over the coordinates of this shape, approximated by 
line segments.
+     *
+     * @param  at        an optional transform to be applied on coordinate 
values, or {@code null} if none.
+     * @param  flatness  maximum distance between line segments approximations 
and the curve segments.
+     * @return iterator over the coordinate values of line segments 
approximating this shape.
+     */
+    @Override
+    public PathIterator getPathIterator(final AffineTransform at, final double 
flatness) {
+        return source.getPathIterator(at, flatness);
+    }
+}
diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTS.java 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTS.java
index fbec63a..8288253 100644
--- 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTS.java
+++ 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTS.java
@@ -282,7 +282,7 @@ public final class JTS extends Static {
     }
 
     /**
-     * Transform the given geometry using the given math transform.
+     * Transforms the given geometry using the given math transform.
      * If the geometry or the transform is null or identity, then the geometry 
is returned unchanged.
      *
      * @param  geometry   the geometry to transform, or {@code null}.
@@ -306,24 +306,7 @@ public final class JTS extends Static {
      */
     public static Shape asShape(final Geometry geometry) {
         ArgumentChecks.ensureNonNull("geometry", geometry);
-        return new JTSShape(geometry);
-    }
-
-    /**
-     * Returns a view of the given JTS geometry as a Java2D shape with a 
decimation applied on-the-fly.
-     *
-     * @param  geometry   the geometry to view as a shape, not {@code null}.
-     * @param  resolution decimation resolution as an array of length 2, or 
{@code null}.
-     * @return the Java2D shape view.
-     */
-    public static Shape asDecimatedShape(final Geometry geometry, final 
double[] resolution) {
-        ArgumentChecks.ensureNonNull("geometry", geometry);
-        final Shape shape = new JTSShape(geometry);
-        if (resolution != null) {
-            final DecimateJTSShape decimated = new DecimateJTSShape(shape, 
resolution);
-            if (decimated.isValid()) return decimated;
-        }
-        return shape;
+        return new ShapeAdapter(geometry);
     }
 
     /**
diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTSShape.java
 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTSShape.java
deleted file mode 100644
index f286a6e..0000000
--- 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTSShape.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sis.internal.feature.jts;
-
-import org.locationtech.jts.geom.Geometry;
-import java.awt.geom.AffineTransform;
-import java.awt.geom.PathIterator;
-import org.apache.sis.internal.feature.j2d.EmptyShape;
-
-
-/**
- * A thin wrapper that adapts a JTS geometry to the Shape interface so that the
- * geometry can be used by java2d without coordinate cloning.
- *
- * @author  Johann Sorel (Puzzle-GIS, Geomatys)
- * @version 1.2
- * @since   1.2
- * @module
- */
-class JTSShape extends AbstractJTSShape {
-
-    public JTSShape(final Geometry geom) {
-        super(geom);
-    }
-
-    /**
-     * {@inheritDoc }
-     */
-    @Override
-    public PathIterator getPathIterator(final AffineTransform at) {
-        if (geometry.isEmpty()) {
-            return EmptyShape.INSTANCE;
-        } else {
-            return new JTSPathIterator(geometry, at);
-        }
-    }
-}
diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTSPathIterator.java
 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/PathIteratorAdapter.java
similarity index 97%
rename from 
core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTSPathIterator.java
rename to 
core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/PathIteratorAdapter.java
index f8818ea..cc4dfed 100644
--- 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTSPathIterator.java
+++ 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/PathIteratorAdapter.java
@@ -33,6 +33,7 @@ import org.locationtech.jts.geom.Point;
 
 /**
  * Java2D path iterator for JTS geometry.
+ * This iterator gets coordinates from the {@link CoordinateSequence} 
associated to each geometry.
  *
  * @author  Johann Sorel (Puzzle-GIS, Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
@@ -40,7 +41,7 @@ import org.locationtech.jts.geom.Point;
  * @since   1.2
  * @module
  */
-final class JTSPathIterator implements PathIterator {
+final class PathIteratorAdapter implements PathIterator {
     /**
      * The transform to apply on returned coordinate values.
      * Never null (may be the identity transform instead).
@@ -79,7 +80,7 @@ final class JTSPathIterator implements PathIterator {
      * @param  geometry  the geometry on which to iterator.
      * @param  at  the transform to apply, or {@code null} for the identity 
transform.
      */
-    JTSPathIterator(final Geometry geometry, final AffineTransform at) {
+    PathIteratorAdapter(final Geometry geometry, final AffineTransform at) {
         this.at = (at != null) ? at : new AffineTransform();
         sequences = iterator(geometry);
         nextSequence();
diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/AbstractJTSShape.java
 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/ShapeAdapter.java
similarity index 90%
rename from 
core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/AbstractJTSShape.java
rename to 
core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/ShapeAdapter.java
index 5d9fea7..57551cf 100644
--- 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/AbstractJTSShape.java
+++ 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/ShapeAdapter.java
@@ -22,6 +22,7 @@ import java.awt.geom.Rectangle2D;
 import java.awt.geom.PathIterator;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.Point2D;
+import org.apache.sis.internal.feature.j2d.EmptyShape;
 import org.apache.sis.internal.referencing.j2d.IntervalRectangle;
 import org.locationtech.jts.geom.Coordinate;
 import org.locationtech.jts.geom.Envelope;
@@ -42,7 +43,7 @@ import org.locationtech.jts.geom.LinearRing;
  * @since   1.2
  * @module
  */
-abstract class AbstractJTSShape implements Shape {
+final class ShapeAdapter implements Shape {
     /**
      * A lightweight JTS geometry factory using the default
      * {@link org.locationtech.jts.geom.impl.CoordinateArraySequenceFactory}.
@@ -63,7 +64,7 @@ abstract class AbstractJTSShape implements Shape {
      *
      * @param  geometry  the JTS geometry to wrap.
      */
-    protected AbstractJTSShape(final Geometry geometry) {
+    protected ShapeAdapter(final Geometry geometry) {
         this.geometry = geometry;
     }
 
@@ -164,4 +165,19 @@ abstract class AbstractJTSShape implements Shape {
     public PathIterator getPathIterator(final AffineTransform at, final double 
flatness) {
         return getPathIterator(at);
     }
+
+    /**
+     * Returns an iterator for the shape outline geometry.
+     *
+     * @param  at  optional transform to apply on coordinate values.
+     * @return an iterator for the shape outline geometry.
+     */
+    @Override
+    public PathIterator getPathIterator(final AffineTransform at) {
+        if (geometry.isEmpty()) {
+            return EmptyShape.INSTANCE;
+        } else {
+            return new PathIteratorAdapter(geometry, at);
+        }
+    }
 }
diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/ShapeConverter.java
 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/ShapeConverter.java
index e48f754..2103f85 100644
--- 
a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/ShapeConverter.java
+++ 
b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/ShapeConverter.java
@@ -110,8 +110,8 @@ abstract class ShapeConverter {
      * @return JTS geometry with shape coordinates. Never null but can be 
empty.
      */
     static Geometry create(final GeometryFactory factory, final Shape shape, 
final double flatness) {
-        if (shape instanceof JTSShape) {
-            return ((JTSShape) shape).geometry;
+        if (shape instanceof ShapeAdapter) {
+            return ((ShapeAdapter) shape).geometry;
         }
         final PathIterator iterator = shape.getPathIterator(null, flatness);
         final ShapeConverter converter;
diff --git 
a/core/sis-feature/src/test/java/org/apache/sis/internal/feature/jts/JTSShapeTest.java
 
b/core/sis-feature/src/test/java/org/apache/sis/internal/feature/jts/ShapeAdapterTest.java
similarity index 90%
rename from 
core/sis-feature/src/test/java/org/apache/sis/internal/feature/jts/JTSShapeTest.java
rename to 
core/sis-feature/src/test/java/org/apache/sis/internal/feature/jts/ShapeAdapterTest.java
index baac3c1..4ae3a90 100644
--- 
a/core/sis-feature/src/test/java/org/apache/sis/internal/feature/jts/JTSShapeTest.java
+++ 
b/core/sis-feature/src/test/java/org/apache/sis/internal/feature/jts/ShapeAdapterTest.java
@@ -18,6 +18,7 @@ package org.apache.sis.internal.feature.jts;
 
 import java.awt.Shape;
 import java.awt.geom.PathIterator;
+import org.apache.sis.internal.feature.j2d.DecimatedShape;
 import org.locationtech.jts.geom.Coordinate;
 import org.locationtech.jts.geom.Geometry;
 import org.locationtech.jts.geom.GeometryFactory;
@@ -31,14 +32,14 @@ import static org.junit.Assert.*;
 
 
 /**
- * Tests {@link JTSShape}.
+ * Tests {@link ShapeAdapter}.
  *
  * @author  Johann Sorel (Puzzle-GIS, Geomatys)
  * @version 1.2
  * @since   1.2
  * @module
  */
-public final strictfp class JTSShapeTest extends TestCase {
+public final strictfp class ShapeAdapterTest extends TestCase {
     /**
      * The geometry factory used by the tests.
      */
@@ -57,7 +58,7 @@ public final strictfp class JTSShapeTest extends TestCase {
     /**
      * Build a new test case.
      */
-    public JTSShapeTest() {
+    public ShapeAdapterTest() {
         factory = new GeometryFactory();
         buffer  = new double[2];
     }
@@ -66,7 +67,7 @@ public final strictfp class JTSShapeTest extends TestCase {
      * Initializes the test with the given geometry.
      */
     private void initialize(final Geometry geometry) {
-        final Shape shape = new JTSShape(geometry);
+        final Shape shape = new ShapeAdapter(geometry);
         iterator = shape.getPathIterator(null);
     }
 
@@ -97,7 +98,7 @@ public final strictfp class JTSShapeTest extends TestCase {
     }
 
     /**
-     * Tests {@link JTSShape} with a point.
+     * Tests {@link ShapeAdapter} with a point.
      */
     @Test
     public void testPoint() {
@@ -107,7 +108,7 @@ public final strictfp class JTSShapeTest extends TestCase {
     }
 
     /**
-     * Tests {@link JTSShape} with a line string.
+     * Tests {@link ShapeAdapter} with a line string.
      */
     @Test
     public void testLineString() {
@@ -123,7 +124,7 @@ public final strictfp class JTSShapeTest extends TestCase {
     }
 
     /**
-     * Tests {@link JTSShape} with a multi line string.
+     * Tests {@link ShapeAdapter} with a multi line string.
      */
     @Test
     public void testMultiLineString() {
@@ -146,7 +147,7 @@ public final strictfp class JTSShapeTest extends TestCase {
     }
 
     /**
-     * Tests {@link JTSShape} with a polygon.
+     * Tests {@link ShapeAdapter} with a polygon.
      */
     @Test
     public void testPolygon() {
@@ -165,7 +166,7 @@ public final strictfp class JTSShapeTest extends TestCase {
     }
 
     /**
-     * Tests {@link JTSShape} with a multi-polygon.
+     * Tests {@link ShapeAdapter} with a multi-polygon.
      */
     @Test
     public void testMultiPolygon() {
@@ -200,7 +201,7 @@ public final strictfp class JTSShapeTest extends TestCase {
     }
 
     /**
-     * Tests {@link JTS#asDecimatedShape(Geometry, double[])} with a line 
string.
+     * Tests {@link ShapeAdapter} with the addition of a decimation.
      */
     @Test
     public void testAsDecimatedShapeLineString() {
@@ -209,7 +210,8 @@ public final strictfp class JTSShapeTest extends TestCase {
             new Coordinate(1, 0),
             new Coordinate(2, 0)
         });
-        final Shape shape = JTS.asDecimatedShape(line, new double[] {1.5, 
1.5});
+        final DecimatedShape shape = new DecimatedShape(new 
ShapeAdapter(line), new double[] {1.5, 1.5});
+        assertTrue(shape.isValid());
         iterator = shape.getPathIterator(null);
 
         assertSegmentEquals(PathIterator.SEG_MOVETO, 0, 0);
diff --git 
a/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java
 
b/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java
index c95df3d..190d833 100644
--- 
a/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java
+++ 
b/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java
@@ -74,7 +74,7 @@ import org.junit.runners.Suite;
     org.apache.sis.internal.feature.esri.FactoryTest.class,
     org.apache.sis.internal.feature.jts.FactoryTest.class,
     org.apache.sis.internal.feature.jts.JTSTest.class,
-    org.apache.sis.internal.feature.jts.JTSShapeTest.class,
+    org.apache.sis.internal.feature.jts.ShapeAdapterTest.class,
     org.apache.sis.internal.feature.jts.ShapeConverterTest.class,
     org.apache.sis.feature.builder.CharacteristicTypeBuilderTest.class,
     org.apache.sis.feature.builder.AttributeTypeBuilderTest.class,

Reply via email to