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,