This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sis.git
commit 3c78638b96e1e5cb3bacabc80a125f752148478f Merge: f1ea236300 230b6bceb6 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Sat Jul 15 15:55:53 2023 +0200 Merge branch 'geoapi-3.1'. This merge completes the preparation for JPMS (Jigsaw) and prepares the upgrade from JUnit 4 to JUnit 5. https://github.com/apache/sis/pull/34 .gitattributes | 43 ++++-- .../apache/sis/console/MimeTypeCommandTest.java | 14 +- .../gui/referencing/PositionableProjection.java | 10 ++ application/sis-webapp/pom.xml | 10 +- .../org/apache/sis/services/ServletListener.java | 6 +- .../org/apache/sis/coverage/SampleDimension.java | 16 +- .../apache/sis/feature/DefaultAttributeType.java | 5 +- .../sis/feature/GroupAsPolylineOperation.java | 4 +- .../sis/feature/builder/FeatureTypeBuilder.java | 2 +- .../apache/sis/filter/BinaryGeometryFilter.java | 30 ++-- .../org/apache/sis/filter/BinarySpatialFilter.java | 15 +- .../apache/sis/filter/DefaultFilterFactory.java | 4 +- .../java/org/apache/sis/filter/DistanceFilter.java | 23 ++- .../apache/sis/internal/feature/Geometries.java | 99 ++++++++---- .../sis/internal/feature/GeometryFactories.java | 26 +++- .../sis/internal/feature/GeometryWithCRS.java | 13 +- .../sis/internal/feature/GeometryWrapper.java | 72 +++++---- .../org/apache/sis/internal/feature/Resources.java | 5 + .../sis/internal/feature/Resources.properties | 1 + .../sis/internal/feature/Resources_fr.properties | 1 + .../internal/feature/SpatialOperationContext.java | 12 +- .../sis/internal/feature/StandardGeometries.java | 170 +++++++++++++++++++++ .../apache/sis/internal/feature/esri/Factory.java | 44 ++++-- .../apache/sis/internal/feature/esri/Wrapper.java | 13 +- .../sis/internal/feature/esri/package-info.java | 2 +- .../apache/sis/internal/feature/j2d/Factory.java | 22 +-- .../sis/internal/feature/j2d/PointWrapper.java | 12 +- .../apache/sis/internal/feature/j2d/Wrapper.java | 12 +- .../sis/internal/feature/j2d/package-info.java | 2 +- .../apache/sis/internal/feature/jts/Factory.java | 57 ++++--- .../apache/sis/internal/feature/jts/Wrapper.java | 53 +++++-- .../sis/internal/filter/GeometryConverter.java | 8 +- .../java/org/apache/sis/internal/filter/Node.java | 12 +- .../internal/filter/sqlmm/GeometryConstructor.java | 9 +- .../sis/internal/filter/sqlmm/GeometryParser.java | 11 +- .../sis/internal/filter/sqlmm/OneGeometry.java | 15 +- .../apache/sis/internal/filter/sqlmm/SQLMM.java | 2 +- .../sis/internal/filter/sqlmm/ST_FromBinary.java | 2 +- .../sis/internal/filter/sqlmm/ST_FromText.java | 2 +- .../apache/sis/internal/filter/sqlmm/ST_Point.java | 21 ++- .../sis/internal/filter/sqlmm/ST_Transform.java | 10 +- .../sis/internal/filter/sqlmm/SpatialFunction.java | 2 +- .../sis/internal/filter/sqlmm/TwoGeometries.java | 23 ++- .../apache/sis/feature/EnvelopeOperationTest.java | 6 +- .../sis/filter/BinarySpatialFilterTestCase.java | 4 +- .../sis/internal/feature/GeometriesTestCase.java | 14 +- .../internal/feature/StandardGeometriesTest.java | 59 +++++++ .../sis/internal/feature/esri/FactoryTest.java | 22 ++- .../apache/sis/internal/feature/jts/JTSTest.java | 14 +- .../internal/filter/sqlmm/RegistryTestCase.java | 8 +- .../sis/internal/jaxb/code/MD_ObligationCode.java | 2 +- .../sis/internal/jaxb/gco/GO_CharacterString.java | 20 ++- .../apache/sis/internal/jaxb/gco/GO_DateTime.java | 4 +- .../apache/sis/internal/jaxb/gco/GO_Distance.java | 2 +- .../apache/sis/internal/jaxb/gco/GO_Integer.java | 2 +- .../apache/sis/internal/jaxb/gco/GO_Measure.java | 2 +- .../internal/jaxb/gco/GO_MultiplicityRange.java | 8 +- .../org/apache/sis/internal/jaxb/gco/GO_Real.java | 2 +- .../apache/sis/internal/jaxb/gco/GO_Record.java | 2 +- .../sis/internal/jaxb/gco/GO_RecordType.java | 2 +- .../apache/sis/internal/jaxb/gco/GO_Temporal.java | 4 +- .../org/apache/sis/internal/jaxb/gco/GO_URL.java | 6 +- .../sis/internal/jaxb/gco/GO_UnlimitedInteger.java | 4 +- .../jaxb/gco/InternationalStringAdapter.java | 2 +- .../apache/sis/internal/jaxb/gco/Multiplicity.java | 2 +- .../sis/internal/jaxb/gco/MultiplicityRange.java | 8 +- .../sis/internal/jaxb/gco/StringAdapter.java | 2 +- .../sis/internal/jaxb/gco/UnlimitedInteger.java | 16 +- .../org/apache/sis/internal/jaxb/gcx/Anchor.java | 2 +- .../org/apache/sis/internal/jaxb/gcx/FileName.java | 4 +- .../apache/sis/internal/jaxb/gcx/MimeFileType.java | 4 +- .../sis/internal/jaxb/geometry/GM_Object.java | 2 +- .../sis/internal/jaxb/gml/CodeListAdapter.java | 12 +- .../apache/sis/internal/jaxb/gml/GMLAdapter.java | 2 +- .../apache/sis/internal/jaxb/gml/TimePeriod.java | 4 +- .../apache/sis/internal/jaxb/gts/TM_Duration.java | 2 +- .../sis/internal/jaxb/gts/TM_PeriodDuration.java | 2 +- .../org/apache/sis/internal/jaxb/lan/Country.java | 20 ++- .../apache/sis/internal/jaxb/lan/LanguageCode.java | 6 +- .../sis/internal/jaxb/lan/LocaleAdapter.java | 4 +- .../jaxb/lan/LocalisedCharacterString.java | 6 +- .../apache/sis/internal/jaxb/lan/PT_FreeText.java | 4 +- .../apache/sis/internal/jaxb/lan/PT_Locale.java | 30 ++-- .../apache/sis/internal/jaxb/lan/TextGroup.java | 4 +- .../internal/jaxb/metadata/replace/Parameter.java | 5 + .../jaxb/metadata/replace/QualityParameter.java | 20 ++- .../metadata/replace/ReferenceSystemMetadata.java | 6 +- .../internal/jaxb/metadata/replace/SensorType.java | 12 +- .../jaxb/metadata/replace/ServiceParameter.java | 43 ++++-- .../sis/internal/metadata/ReferencingServices.java | 17 +-- .../sis/internal/metadata/sql/ScriptRunner.java | 35 ++++- .../org/apache/sis/metadata/sql/Installer.java | 15 +- .../main/java/org/apache/sis/util/iso/Types.java | 58 +++---- .../org.apache.sis.internal.util.MetadataServices | 1 + .../sis/internal/jaxb/gco/MultiplicityTest.java | 22 ++- .../sis/internal/jaxb/lan/PT_LocaleTest.java | 27 ++-- .../java/org/apache/sis/metadata/Assertions.java | 3 +- .../metadata/iso/citation/DefaultCitationTest.java | 32 ++-- .../sis/metadata/iso/extent/DefaultExtentTest.java | 32 +++- .../DefaultServiceIdentificationTest.java | 18 ++- .../iso/lineage/DefaultProcessStepTest.java | 21 ++- .../quality/AbstractPositionalAccuracyTest.java | 22 ++- .../org/apache/sis/metadata/xml/TestUsingFile.java | 52 ++++++- .../java/org/apache/sis/test/sql/TestDatabase.java | 29 ++-- .../apache/sis/test/xml/DocumentComparator.java | 8 +- .../java/org/apache/sis/test/xml/TestCase.java | 104 +++++++------ .../java/org/apache/sis/test/xml/package-info.java | 2 +- .../sis/util/iso/DefaultNameFactoryTest.java | 5 +- .../java/org/apache/sis/util/iso/TypesTest.java | 9 -- .../jaxb/referencing/CC_OperationParameter.java | 14 +- .../apache/sis/internal/jaxb/referencing/Code.java | 6 +- .../jaxb/referencing/SC_DerivedCRSType.java | 6 +- .../referencing/provider/Description.java} | 35 +++-- .../referencing/provider/SatelliteTracking.java | 4 +- .../sis/parameter/DefaultParameterDescriptor.java | 6 +- .../sis/parameter/DefaultParameterValue.java | 2 +- ...pache.sis.internal.metadata.ReferencingServices | 1 + .../sis/parameter/ParameterMarshallingTest.java | 43 +++++- .../referencing/crs/DefaultCompoundCRSTest.java | 14 +- .../sis/referencing/crs/DefaultDerivedCRSTest.java | 14 +- .../referencing/crs/DefaultGeodeticCRSTest.java | 14 +- .../referencing/crs/DefaultProjectedCRSTest.java | 20 ++- .../sis/referencing/cs/DefaultCartesianCSTest.java | 14 +- .../referencing/cs/DefaultEllipsoidalCSTest.java | 14 +- .../referencing/datum/DefaultEllipsoidTest.java | 24 +-- .../datum/DefaultGeodeticDatumTest.java | 12 +- .../datum/DefaultPrimeMeridianTest.java | 15 +- .../datum/DefaultTemporalDatumTest.java | 14 +- .../datum/DefaultVerticalDatumTest.java | 25 +-- .../referencing/factory/sql/EPSGFactoryTest.java | 14 +- .../DefaultConcatenatedOperationTest.java | 14 +- .../operation/DefaultPassThroughOperationTest.java | 14 +- .../operation/SingleOperationMarshallingTest.java | 17 ++- .../operation/projection/InitializerTest.java | 8 +- .../operation/transform/LinearTransformTest.java | 5 +- .../transform/ProjectiveTransformTest.java | 3 - .../sis/test/integration/MetadataVerticalTest.java | 15 +- .../sis/internal/system/OptionalDependency.java | 50 ++---- .../apache/sis/internal/util/MetadataServices.java | 12 +- .../org/apache/sis/internal/util/Numerics.java | 59 +------ .../java/org/apache/sis/math/SequenceVector.java | 5 +- .../java/org/apache/sis/measure/NumberRange.java | 4 +- .../java/org/apache/sis/setup/GeometryLibrary.java | 25 ++- .../java/org/apache/sis/util/ArgumentChecks.java | 21 +++ .../src/main/java/org/apache/sis/util/Numbers.java | 13 +- .../sis/util/ResourceInternationalString.java | 82 +++------- .../org/apache/sis/internal/util/NumericsTest.java | 28 ---- .../test/java/org/apache/sis/test/TestCase.java | 2 - .../java/org/apache/sis/test/TestUtilities.java | 16 +- ide-project/NetBeans/build.xml | 14 ++ ide-project/NetBeans/nbproject/project.properties | 4 +- pom.xml | 23 ++- .../profile/fra/DirectReferenceSystemTest.java | 13 +- .../apache/sis/profile/japan/JapanProfileTest.java | 26 ++-- .../sis/internal/netcdf/DiscreteSampling.java | 4 +- .../jdbc/AbstractTestBaseForInternalJDBC.java | 3 +- .../internal/shapefile/jdbc/DBFConnectionTest.java | 4 +- .../internal/shapefile/jdbc/DBFResultSetTest.java | 2 - .../internal/shapefile/jdbc/DBFStatementTest.java | 2 - .../sis/storage/shapefile/ShapeFileTest.java | 3 +- .../apache/sis/internal/sql/feature/Database.java | 2 +- .../sis/internal/sql/feature/GeometryGetter.java | 6 +- .../sis/internal/sql/feature/SelectionClause.java | 2 +- .../internal/sql/feature/GeometryGetterTest.java | 12 +- .../sql/feature/SelectionClauseWriterTest.java | 5 +- .../sis/internal/sql/postgis/PostgresTest.java | 28 +++- .../org/apache/sis/storage/sql/SQLStoreTest.java | 29 +++- .../sis/internal/storage/MetadataBuilder.java | 5 +- .../org/apache/sis/internal/storage/csv/Store.java | 4 +- .../sis/internal/storage/wkt/StoreFormat.java | 4 +- .../internal/storage/xml/MimeTypeDetectorTest.java | 6 +- .../apache/sis/storage/StorageConnectorTest.java | 23 ++- .../sis/internal/storage/gpx/Description.java | 62 ++++++++ .../org/apache/sis/internal/storage/gpx/Types.java | 7 +- .../storage/xml/stream/StaxStreamReader.java | 3 +- .../sis/internal/storage/gpx/ReaderTest.java | 27 ++-- .../apache/sis/internal/storage/gpx/TestData.java | 91 +++++++++++ .../sis/internal/storage/gpx/WriterTest.java | 35 +++-- 178 files changed, 1883 insertions(+), 1108 deletions(-) diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java index 457d8ea980,b03cadd903..f694d42062 --- a/core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java +++ b/core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java @@@ -45,12 -51,11 +45,11 @@@ import org.apache.sis.internal.geoapi.f * @author Alexis Manin (Geomatys) * @version 1.4 * - * @param <R> the type of resources (e.g. {@link org.opengis.feature.Feature}) used as inputs. + * @param <R> the type of resources (e.g. {@code Feature}) used as inputs. - * @param <G> the implementation type of geometry objects. * * @since 1.1 */ - abstract class BinaryGeometryFilter<R,G> extends Node implements Optimization.OnFilter<R> { -abstract class BinaryGeometryFilter<R> extends Node implements SpatialOperator<R>, Optimization.OnFilter<R> { ++abstract class BinaryGeometryFilter<R> extends Node implements Optimization.OnFilter<R> { /** * For cross-version compatibility. */ @@@ -58,15 -63,19 +57,15 @@@ /** * The first of the two expressions to be used by this function. - * - * @see BinarySpatialOperator#getOperand1() */ @SuppressWarnings("serial") // Most SIS implementations are serializable. - protected final Expression<R, GeometryWrapper<G>> expression1; + protected final Expression<R, GeometryWrapper> expression1; /** * The second of the two expressions to be used by this function. - * - * @see BinarySpatialOperator#getOperand2() */ @SuppressWarnings("serial") // Most SIS implementations are serializable. - protected final Expression<R, GeometryWrapper<G>> expression2; + protected final Expression<R, GeometryWrapper> expression2; /** * The preferred CRS and other context to use if geometry transformations are needed. @@@ -142,8 -151,7 +141,7 @@@ /** * Returns the original expression specified by the user. * - * @param <R> the type of resources (e.g. {@link org.opengis.feature.Feature}) used as inputs. + * @param <R> the type of resources (e.g. {@code Feature}) used as inputs. - * @param <G> the geometry implementation type. * @param expression the expression to unwrap. * @return the unwrapped expression. */ @@@ -219,10 -227,10 +217,10 @@@ final CoordinateReferenceSystem targetCRS = AttributeConvention.getCRSCharacteristic( featureType, featureType.getProperty(((ValueReference<?,?>) other).getXPath())); if (targetCRS != null) { - final GeometryWrapper<G> geometry = wrapper.apply(null); - final GeometryWrapper<G> transformed = geometry.transform(targetCRS); + final GeometryWrapper geometry = wrapper.apply(null); + final GeometryWrapper transformed = geometry.transform(targetCRS); if (geometry != transformed) { - literal = Optimization.literal(transformed); + literal = (Literal<R,?>) Optimization.literal(transformed); if (literal == effective1) effective1 = literal; else effective2 = literal; } diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/BinarySpatialFilter.java index e3ee507b62,ff76063e42..3266c8d02b --- a/core/sis-feature/src/main/java/org/apache/sis/filter/BinarySpatialFilter.java +++ b/core/sis-feature/src/main/java/org/apache/sis/filter/BinarySpatialFilter.java @@@ -38,12 -40,11 +38,11 @@@ import org.apache.sis.internal.geoapi.f * @author Martin Desruisseaux (Geomatys) * @version 1.4 * - * @param <R> the type of resources (e.g. {@link org.opengis.feature.Feature}) used as inputs. + * @param <R> the type of resources (e.g. {@code Feature}) used as inputs. - * @param <G> the implementation type of geometry objects. * * @since 1.1 */ - final class BinarySpatialFilter<R,G> extends BinaryGeometryFilter<R,G> { -final class BinarySpatialFilter<R> extends BinaryGeometryFilter<R> implements BinarySpatialOperator<R> { ++final class BinarySpatialFilter<R> extends BinaryGeometryFilter<R> { /** * For cross-version compatibility. */ diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/DistanceFilter.java index 30061a34c4,8b43988333..77d53b6dd0 --- a/core/sis-feature/src/main/java/org/apache/sis/filter/DistanceFilter.java +++ b/core/sis-feature/src/main/java/org/apache/sis/filter/DistanceFilter.java @@@ -43,12 -45,11 +43,11 @@@ import org.apache.sis.internal.geoapi.f * @author Martin Desruisseaux (Geomatys) * @version 1.4 * - * @param <R> the type of resources (e.g. {@link org.opengis.feature.Feature}) used as inputs. + * @param <R> the type of resources (e.g. {@code Feature}) used as inputs. - * @param <G> the implementation type of geometry objects. * * @since 1.1 */ - final class DistanceFilter<R,G> extends BinaryGeometryFilter<R,G> { -final class DistanceFilter<R> extends BinaryGeometryFilter<R> implements DistanceOperator<R> { ++final class DistanceFilter<R> extends BinaryGeometryFilter<R> { /** * For cross-version compatibility. */ @@@ -136,12 -138,13 +135,12 @@@ * * @throws IllegalStateException if the geometry is not a literal. */ - @Override public Geometry getGeometry() { - final Literal<R, ? extends GeometryWrapper<G>> literal; + final Literal<R, ? extends GeometryWrapper> literal; if (expression2 instanceof Literal<?,?>) { - literal = (Literal<R, ? extends GeometryWrapper<G>>) expression2; + literal = (Literal<R, ? extends GeometryWrapper>) expression2; } else if (expression1 instanceof Literal<?,?>) { - literal = (Literal<R, ? extends GeometryWrapper<G>>) expression1; + literal = (Literal<R, ? extends GeometryWrapper>) expression1; } else { throw new IllegalStateException(); } diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/feature/GeometryWrapper.java index ce16183e7d,2f7d9a14f3..fce3b79a44 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/GeometryWrapper.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/GeometryWrapper.java @@@ -127,10 -133,11 +127,10 @@@ public abstract class GeometryWrapper e /** * Returns the geometry bounding box, together with its coordinate reference system. + * For an empty geometry or a single point, the returned envelope will be empty. * * @return the geometry envelope. Should never be {@code null}. - * Note though that for an empty geometry or a single point, the returned envelope will be empty. */ - @Override public abstract GeneralEnvelope getEnvelope(); /** @@@ -192,13 -200,12 +192,12 @@@ * @param context the preferred CRS and other context to use if geometry transformations are needed. * @return result of applying the specified predicate. * @throws UnsupportedOperationException if the operation cannot be performed with current implementation. - * @throws InvalidFilterValueException if an error occurred while executing the operation on given geometries. + * @throws IllegalArgumentException if an error occurred while executing the operation on given geometries. */ - public final boolean predicate(final DistanceOperatorName type, final GeometryWrapper<G> other, + public final boolean predicate(final DistanceOperatorName type, final GeometryWrapper other, final Quantity<Length> distance, final SpatialOperationContext context) { - @SuppressWarnings({"unchecked", "rawtypes"}) - final GeometryWrapper<G>[] geometries = new GeometryWrapper[] {this, other}; + final GeometryWrapper[] geometries = new GeometryWrapper[] {this, other}; try { if (context.transform(geometries)) { double dv = distance.getValue().doubleValue(); @@@ -230,13 -237,12 +229,12 @@@ * @param context the preferred CRS and other context to use if geometry transformations are needed. * @return result of applying the specified predicate. * @throws UnsupportedOperationException if the operation cannot be performed with current implementation. - * @throws InvalidFilterValueException if an error occurred while executing the operation on given geometries. + * @throws IllegalArgumentException if an error occurred while executing the operation on given geometries. */ - public final boolean predicate(final SpatialOperatorName type, final GeometryWrapper<G> other, + public final boolean predicate(final SpatialOperatorName type, final GeometryWrapper other, final SpatialOperationContext context) { - @SuppressWarnings({"unchecked", "rawtypes"}) - final GeometryWrapper<G>[] geometries = new GeometryWrapper[] {this, other}; + final GeometryWrapper[] geometries = new GeometryWrapper[] {this, other}; try { if (context.transform(geometries)) { return geometries[0].predicateSameCRS(type, geometries[1]); @@@ -484,7 -490,8 +482,7 @@@ * * @see #getCoordinateReferenceSystem() */ - public GeometryWrapper<G> transform(final CoordinateReferenceSystem targetCRS) throws TransformException { - @Override + public GeometryWrapper transform(final CoordinateReferenceSystem targetCRS) throws TransformException { if (targetCRS == null) { return this; } diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/filter/GeometryConverter.java index b3a4a96bd7,99281ba329..74ffd6be25 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/GeometryConverter.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/GeometryConverter.java @@@ -147,10 -148,10 +147,10 @@@ final class GeometryConverter<R,G> exte * * @param input the geometry to evaluate with this expression. * @return the geometry wrapper, or {@code null} if the evaluated value is null. - * @throws InvalidFilterValueException if the expression result is not an instance of a supported type. + * @throws IllegalArgumentException if the expression result is not an instance of a supported type. */ @Override - public GeometryWrapper<G> apply(final R input) { + public GeometryWrapper apply(final R input) { final Object value = expression.apply(input); final Envelope envelope; if (value instanceof GeographicBoundingBox) { diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/filter/Node.java index 8c2ccd3bdc,77882fa9c2..c50f4b5292 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Node.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Node.java @@@ -194,8 -196,7 +194,7 @@@ public abstract class Node implements S * If the given exception was wrapped by {@link #toGeometryWrapper(Geometries, Expression)}, * returns the original expression. Otherwise returns the given expression. * - * @param <R> the type of resources (e.g. {@code Feature}) used as inputs. - * @param <G> the geometry implementation type. - * @param <R> the type of resources (e.g. {@link org.opengis.feature.Feature}) used as inputs. ++ * @param <R> the type of resources (e.g. {@code Feature}) used as inputs. * @param expression the expression to unwrap. * @return the unwrapped expression. */ @@@ -215,12 -216,11 +214,11 @@@ * @param expression the expression for which to get the geometry library. * @return the geometry library (never {@code null}). */ - protected static <G> Geometries<G> getGeometryLibrary(final Expression<?, GeometryWrapper<G>> expression) { + protected static Geometries<?> getGeometryLibrary(final Expression<?, GeometryWrapper> expression) { if (expression instanceof GeometryConverter<?,?>) { - return ((GeometryConverter<?,G>) expression).library; + return ((GeometryConverter<?,?>) expression).library; } - throw new InvalidFilterValueException(Resources.format(Resources.Keys.NotAGeometryAtFirstExpression)); + throw new IllegalArgumentException(Resources.format(Resources.Keys.NotAGeometryAtFirstExpression)); } /** diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/GeometryConstructor.java index 07e52584a7,833821543f..4fa320d224 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/GeometryConstructor.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/GeometryConstructor.java @@@ -22,9 -22,11 +22,10 @@@ import org.opengis.referencing.crs.Coor import org.apache.sis.internal.feature.Geometries; import org.apache.sis.internal.feature.GeometryWrapper; import org.apache.sis.util.resources.Errors; + import org.apache.sis.util.Classes; // Branch-dependent imports -import org.opengis.filter.Expression; -import org.opengis.filter.InvalidFilterValueException; +import org.apache.sis.filter.Expression; /** @@@ -122,11 -124,11 +123,11 @@@ class GeometryConstructor<R,G> extends } else { result = library.createFromComponents(operation.getGeometryType().get(), value); } - final Object geometry = result.implementation(); + final Object geometry = library.getGeometry(result); final Class<?> expected = operation.getReturnType(library); if (!expected.isInstance(geometry)) { - throw new InvalidFilterValueException(Errors.format( + throw new IllegalArgumentException(Errors.format( - Errors.Keys.IllegalArgumentClass_3, "geom", expected, geometry.getClass())); + Errors.Keys.IllegalArgumentClass_3, "geom", expected, Classes.getClass(geometry))); } if (srid != null) { final CoordinateReferenceSystem crs = getTargetCRS(input); diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/GeometryParser.java index 635882b939,d126a159c2..23137b26b6 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/GeometryParser.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/GeometryParser.java @@@ -20,9 -20,11 +20,10 @@@ import org.opengis.referencing.crs.Coor import org.apache.sis.internal.feature.Geometries; import org.apache.sis.internal.feature.GeometryWrapper; import org.apache.sis.util.resources.Errors; + import org.apache.sis.util.Classes; // Branch-dependent imports -import org.opengis.filter.Expression; -import org.opengis.filter.InvalidFilterValueException; +import org.apache.sis.filter.Expression; /** @@@ -99,10 -101,10 +100,10 @@@ abstract class GeometryParser<R,G> exte case ST_BdPolyFromText: case ST_BdMPolyFromWKB: case ST_BdMPolyFromText: break; - default: warning(new InvalidFilterValueException(Errors.format( + default: warning(new IllegalArgumentException(Errors.format( Errors.Keys.IllegalArgumentClass_3, inputName(), getValueClass(), - result.implementation().getClass())), true); + Classes.getClass(library.getGeometry(result)))), true); } } if (srid != null) { diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/OneGeometry.java index 5f1da923c3,f3ba0a9677..6ebc493f15 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/OneGeometry.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/OneGeometry.java @@@ -33,8 -33,7 +33,7 @@@ import org.apache.sis.filter.Expression * @author Martin Desruisseaux (Geomatys) * @version 1.4 * - * @param <R> the type of resources (e.g. {@link org.opengis.feature.Feature}) used as inputs. + * @param <R> the type of resources (e.g. {@code Feature}) used as inputs. - * @param <G> the implementation type of geometry objects. * * @since 1.1 */ diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Point.java index 94f90443f9,282118f134..71f3fd6f38 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Point.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Point.java @@@ -46,8 -47,7 +46,7 @@@ import org.apache.sis.filter.Expression * @author Martin Desruisseaux (Geomatys) * @version 1.4 * - * @param <R> the type of resources (e.g. {@link org.opengis.feature.Feature}) used as inputs. + * @param <R> the type of resources (e.g. {@code Feature}) used as inputs. - * @param <G> the implementation type of geometry objects. * * @since 1.1 */ @@@ -147,11 -147,11 +146,11 @@@ final class ST_Point<R> extends Functio * * @param value the WKB or WKT value to parse. Can be {@code null}. * @return the parsed point, or {@code null} if the given value is null. - * @throws InvalidFilterValueException if the value is not a string or byte array. + * @throws IllegalArgumentException if the value is not a string or byte array. * @throws Exception if parsing failed for another reason. */ - private GeometryWrapper<G> parse(final Object value) throws Exception { - final GeometryWrapper<G> point; + private GeometryWrapper parse(final Object value) throws Exception { + final GeometryWrapper point; if (value == null) { return null; } else if (value instanceof byte[]) { @@@ -161,11 -161,11 +160,11 @@@ } else if (value instanceof String) { point = library.parseWKT((String) value); } else { - throw new InvalidFilterValueException(Errors.format( + throw new IllegalArgumentException(Errors.format( Errors.Keys.IllegalArgumentClass_3, "wkt|wkb", String.class, value.getClass())); } - final Object implementation = point.implementation(); - if (library.pointClass.isInstance(implementation)) { + final Object geometry = library.getGeometry(point); + if (library.pointClass.isInstance(geometry)) { return point; } else { final String type = (value instanceof String) ? "wkt" : "wkb"; diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Transform.java index 2370a485a4,474f08191e..5b9b2f9305 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Transform.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/ST_Transform.java @@@ -76,9 -77,9 +76,9 @@@ final class ST_Transform<R> extends Fun * Creates a new function with the given parameters. It is caller's responsibility to ensure * that the given array is non-null and does not contain null elements. * - * @throws InvalidFilterValueException if CRS cannot be constructed from the second expression. + * @throws IllegalArgumentException if CRS cannot be constructed from the second expression. */ - ST_Transform(final Expression<R,?>[] parameters, final Geometries<G> library) { + ST_Transform(final Expression<R,?>[] parameters, final Geometries<?> library) { super(SQLMM.ST_Transform, parameters, PRESENT); geometry = toGeometryWrapper(library, parameters[0]); } diff --cc core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/TwoGeometries.java index cc72136844,591235d679..d6eb55dda6 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/TwoGeometries.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/TwoGeometries.java @@@ -38,8 -39,7 +38,7 @@@ import org.apache.sis.internal.geoapi.f * @author Martin Desruisseaux (Geomatys) * @version 1.4 * - * @param <R> the type of resources (e.g. {@link org.opengis.feature.Feature}) used as inputs. + * @param <R> the type of resources (e.g. {@code Feature}) used as inputs. - * @param <G> the implementation type of geometry objects. * * @since 1.1 */ diff --cc core/sis-feature/src/test/java/org/apache/sis/feature/EnvelopeOperationTest.java index 011dc0651c,c936c35c1e..cf0fd652e8 --- a/core/sis-feature/src/test/java/org/apache/sis/feature/EnvelopeOperationTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/feature/EnvelopeOperationTest.java @@@ -155,9 -160,9 +155,9 @@@ public final class EnvelopeOperationTes if (asCharacteristic) { @SuppressWarnings("unchecked") - final AbstractAttribute<GeometryWrapper<?>> property = - (AbstractAttribute<GeometryWrapper<?>>) feature.getProperty(propertyName); - final Attribute<GeometryWrapper> property = - (Attribute<GeometryWrapper>) feature.getProperty(propertyName); - final Attribute<CoordinateReferenceSystem> crsCharacteristic = Features.cast( ++ final AbstractAttribute<GeometryWrapper> property = ++ (AbstractAttribute<GeometryWrapper>) feature.getProperty(propertyName); + final AbstractAttribute<CoordinateReferenceSystem> crsCharacteristic = Features.cast( property.getType().characteristics().get(AttributeConvention.CRS), CoordinateReferenceSystem.class).newInstance(); crsCharacteristic.setValue(crs); diff --cc core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameter.java index eb98a38311,d49c7fdef4..c2938b3744 --- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameter.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameter.java @@@ -92,7 -101,8 +98,7 @@@ public final class QualityParameter ext * @see #getDescription() */ @XmlElement - DefaultMeasureDescription description; - @SuppressWarnings("serial") // Most Apache SIS implementations are serializable. - public Description description; ++ public DefaultMeasureDescription description; /** * Value type of the data quality parameter (shall be one of the data types defined in ISO/TS 19103:2005). @@@ -102,8 -112,17 +108,9 @@@ */ @XmlElement(required = true) @XmlJavaTypeAdapter(GO_GenericName.class) // Not in package-info because shall not be applied to getLegacyName(). - TypeName valueType; + @SuppressWarnings("serial") // Most Apache SIS implementations are serializable. + public TypeName valueType; - /** - * Structure of the data quality parameter. - * - * @see #getValueClass() - */ - @XmlElement - public ValueStructure valueStructure; - /** * Creates an initially empty parameter. * This constructor is needed by JAXB at unmarshalling time. diff --cc core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java index 73dda6ae44,542f170e37..9681cd5ac0 --- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java @@@ -97,8 -104,17 +102,9 @@@ public final class ServiceParameter ext */ @XmlElement(required=true, name="name") @XmlJavaTypeAdapter(GO_GenericName.Since2014.class) - MemberName memberName; + @SuppressWarnings("serial") // Most Apache SIS implementations are serializable. + public MemberName memberName; - /** - * Indication if the parameter is an input to the service, an output or both. - * - * @see #getDirection() - */ - @XmlElement(required = true) - public ParameterDirection direction; - /** * A narrative explanation of the role of the parameter. * diff --cc core/sis-metadata/src/main/java/org/apache/sis/util/iso/Types.java index 6ec6d7cf87,9e2a783799..c67e6268c3 --- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Types.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Types.java @@@ -292,12 -293,9 +292,9 @@@ public final class Types extends Stati * @see #getDescription(Class) */ @OptionalCandidate - public static InternationalString getDescription(final ControlledVocabulary code) { + public static InternationalString getDescription(final CodeList<?> code) { - if (code != null) { - final String resources = toResourceName(code.getClass().getName()); - if (resources != null) { - return new Description(resources, Description.resourceKey(code)); - } + if (code != null && hasResources(code.getClass())) { + return new Description(Description.resourceKey(code)); } return null; } @@@ -379,7 -365,7 +369,7 @@@ */ @Override protected ResourceBundle getBundle(final Locale locale) { - return ResourceBundle.getBundle(resources, locale, CLASSLOADER); - return ResourceBundles.descriptions(locale); ++ return ResourceBundle.getBundle("org.opengis.metadata.Descriptions", locale, CLASSLOADER); } /** @@@ -442,11 -429,19 +432,19 @@@ * * @param code the code list for which to create a title. */ - CodeTitle(final ControlledVocabulary code) { + CodeTitle(final CodeList<?> code) { - super(CodeLists.RESOURCES, resourceKey(code)); + super(resourceKey(code)); this.code = code; } + /** + * Loads the GeoAPI resources. A cache is managed by {@link ResourceBundle}. + */ + @Override + protected ResourceBundle getBundle(final Locale locale) { - return ResourceBundles.codeLists(locale); ++ return ResourceBundle.getBundle(CodeLists.RESOURCES, locale); + } + /** * Returns a fallback if no resource is found. */ diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentificationTest.java index 8abc32c730,1fd98a22af..121630ff23 --- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentificationTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentificationTest.java @@@ -17,11 -17,17 +17,12 @@@ package org.apache.sis.metadata.iso.identification; import java.util.Set; + import java.io.InputStream; import jakarta.xml.bind.JAXBException; import org.opengis.util.NameFactory; -import org.opengis.parameter.ParameterDirection; import org.opengis.parameter.ParameterDescriptor; import org.opengis.metadata.citation.Citation; -import org.opengis.metadata.identification.CouplingType; -import org.opengis.metadata.identification.CoupledResource; -import org.opengis.metadata.identification.OperationMetadata; -import org.opengis.metadata.identification.ServiceIdentification; -import org.opengis.metadata.identification.DistributedComputingPlatform; +import org.apache.sis.internal.geoapi.evolution.UnsupportedCodeList; import org.apache.sis.metadata.iso.citation.DefaultCitation; import org.apache.sis.metadata.xml.TestUsingFile; import org.apache.sis.util.iso.DefaultNameFactory; @@@ -104,9 -116,9 +110,9 @@@ public final class DefaultServiceIdenti */ @Test public void testUnmarshal() throws JAXBException { - final DefaultServiceIdentification id = unmarshalFile(DefaultServiceIdentification.class, XML2016+FILENAME); - final ServiceIdentification id = unmarshalFile(ServiceIdentification.class, openTestFile(Format.XML2016)); ++ final DefaultServiceIdentification id = unmarshalFile(DefaultServiceIdentification.class, openTestFile(Format.XML2016)); verify(id); - final CoupledResource resource = getSingleton(id.getCoupledResources()); + final DefaultCoupledResource resource = getSingleton(id.getCoupledResources()); assertTitleEquals("resourceReference", "WMS specification", getSingleton(resource.getResourceReferences())); } @@@ -117,9 -129,9 +123,9 @@@ */ @Test public void testUnmarshalLegacy() throws JAXBException { - final DefaultServiceIdentification id = unmarshalFile(DefaultServiceIdentification.class, XML2007+FILENAME); - final ServiceIdentification id = unmarshalFile(ServiceIdentification.class, openTestFile(Format.XML2007)); ++ final DefaultServiceIdentification id = unmarshalFile(DefaultServiceIdentification.class, openTestFile(Format.XML2007)); verify(id); - final CoupledResource resource = getSingleton(id.getCoupledResources()); + final DefaultCoupledResource resource = getSingleton(id.getCoupledResources()); assertEquals("scopedName", "mySpace:ABC-123", String.valueOf(resource.getScopedName())); } diff --cc core/sis-metadata/src/test/java/org/apache/sis/util/iso/TypesTest.java index c65a9431b5,ad72a9692b..b4cbdfd1a3 --- a/core/sis-metadata/src/test/java/org/apache/sis/util/iso/TypesTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/util/iso/TypesTest.java @@@ -142,22 -155,10 +142,13 @@@ public final class TypesTest extends Te assertSame(PixelInCell.CELL_CORNER, Types.forCodeName(PixelInCell.class, "cellCorner", false)); assertSame(PixelInCell.CELL_CENTER, Types.forCodeName(PixelInCell.class, "cell center", false)); assertSame(PixelInCell.CELL_CENTER, Types.forCodeName(PixelInCell.class, "cellCenter", false)); - assertSame(PixelInCell.CELL_CENTER, Types.forCodeName(PixelInCell.class, "cell centre", false)); - assertSame(PixelInCell.CELL_CENTER, Types.forCodeName(PixelInCell.class, "cellCentre", false)); + + if (PENDING_NEXT_GEOAPI_RELEASE) { + assertSame(PixelInCell.CELL_CENTER, Types.forCodeName(PixelInCell.class, "cell centre", false)); + assertSame(PixelInCell.CELL_CENTER, Types.forCodeName(PixelInCell.class, "cellCentre", false)); + } } - /** - * Tests the {@link Types#toResourceName(String)} method. - */ - @Test - public void testGetResources() { - assertEquals("org.opengis.metadata.Descriptions", Types.toResourceName("org.opengis.metadata.Identifier")); - assertNull(Types.toResourceName("org.opengis.metadata2.Identifier")); - } - /** * Tests the {@link Types#getDescription(Class)} method. */ diff --cc core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearTransformTest.java index 2422748819,2595e8e9c4..c52da8ef9b --- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearTransformTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearTransformTest.java @@@ -23,14 -23,9 +23,12 @@@ import org.opengis.referencing.operatio // Test imports import org.junit.Test; - import org.junit.runner.RunWith; import org.apache.sis.test.DependsOn; - import org.apache.sis.test.TestRunner; import static org.opengis.test.Assert.assertInstanceOf; +// Branch-dependent imports +import org.junit.Ignore; + /** * Tests various implementation of the {@link LinearTransform} interface by inheriting the tests defined diff --cc core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/ProjectiveTransformTest.java index 0535413d2c,6663f63e7d..e23c2aecc9 --- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/ProjectiveTransformTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/ProjectiveTransformTest.java @@@ -34,18 -35,15 +34,16 @@@ import org.apache.sis.math.Fraction // Test imports import org.opengis.test.Validators; - import org.apache.sis.test.TestRunner; import org.apache.sis.test.DependsOn; - import org.junit.runner.RunWith; import org.junit.After; import org.junit.Test; -import org.opengis.test.Assert; -import static org.junit.Assert.*; -import static org.opengis.test.Assert.assertInstanceOf; +import static org.apache.sis.test.GeoapiAssert.assertMatrixEquals; +import static org.opengis.test.Assert.*; // Branch-dependent imports -import org.opengis.test.referencing.AffineTransformTest; +import org.junit.Ignore; +import org.opengis.referencing.operation.TransformException; +import org.opengis.test.referencing.TransformTestCase; /** @@@ -58,19 -56,8 +56,18 @@@ * @version 1.4 * @since 0.5 */ - @RunWith(TestRunner.class) @DependsOn({AbstractMathTransformTest.class, ScaleTransformTest.class}) -public class ProjectiveTransformTest extends AffineTransformTest { +public class ProjectiveTransformTest extends TransformTestCase { + /** + * The factory to use for creating linear transforms. + */ + private final MathTransformFactory mtFactory; + + /** + * The matrix for the tested transform. + */ + private Matrix matrix; + /** * Tolerance factor for strict comparisons. */ diff --cc core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataVerticalTest.java index 261415dfd0,9da38465c8..3d3f6f436b --- a/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataVerticalTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataVerticalTest.java @@@ -18,6 -18,8 +18,7 @@@ package org.apache.sis.test.integration import java.net.URI; import java.util.Locale; + import java.io.InputStream; -import java.nio.charset.StandardCharsets; import jakarta.xml.bind.JAXBException; import org.opengis.metadata.*; @@@ -100,11 -105,11 +105,11 @@@ public class MetadataVerticalTest exten */ @Test public void testMetadataWithVerticalCRS() throws JAXBException { - final Metadata metadata = unmarshalFile(Metadata.class, XML_FILE); + final Metadata metadata = unmarshalFile(Metadata.class, openTestFile()); - assertEquals("fileIdentifier", "20090901", metadata.getMetadataIdentifier().getCode()); - assertEquals("language", Locale.ENGLISH, getSingleton(metadata.getLocalesAndCharsets().keySet())); - assertEquals("characterSet", StandardCharsets.UTF_8, getSingleton(metadata.getLocalesAndCharsets().values())); - assertEquals("dateStamp", xmlDate("2014-01-04 00:00:00"), getSingleton(metadata.getDateInfo()).getDate()); + assertEquals("fileIdentifier", "20090901", metadata.getFileIdentifier()); + assertEquals("language", Locale.ENGLISH, metadata.getLanguage()); + assertEquals("characterSet", CharacterSet.UTF_8, metadata.getCharacterSet()); + assertEquals("dateStamp", xmlDate("2014-01-04 00:00:00"), metadata.getDateStamp()); /* * <gmd:contact> * <gmd:CI_ResponsibleParty> diff --cc core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java index 6a51e000bc,bbc43df887..c0308a07da --- a/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java +++ b/core/sis-utility/src/main/java/org/apache/sis/internal/util/MetadataServices.java @@@ -19,6 -19,8 +19,7 @@@ package org.apache.sis.internal.util import java.text.Format; import java.util.Locale; import java.util.TimeZone; + import java.util.ServiceLoader; -import java.util.MissingResourceException; import java.util.function.Supplier; import javax.sql.DataSource; import java.sql.SQLException; diff --cc pom.xml index 9df24882b9,ea39255b3e..aa1a4b6025 --- a/pom.xml +++ b/pom.xml @@@ -524,8 -524,13 +524,15 @@@ =========================================================== --> <dependencies> <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> ++ <version>5.9.3</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.junit.vintage</groupId> + <artifactId>junit-vintage-engine</artifactId> ++ <version>5.9.3</version> <scope>test</scope> </dependency> </dependencies> diff --cc storage/sis-shapefile/src/test/java/org/apache/sis/storage/shapefile/ShapeFileTest.java index 4da6f19241,bddd9f5f1b..f30aace1c0 --- a/storage/sis-shapefile/src/test/java/org/apache/sis/storage/shapefile/ShapeFileTest.java +++ b/storage/sis-shapefile/src/test/java/org/apache/sis/storage/shapefile/ShapeFileTest.java @@@ -25,11 -25,9 +25,10 @@@ import java.text.MessageFormat import java.util.logging.Logger; import org.apache.sis.storage.DataStoreException; - import org.apache.sis.test.TestCase; import org.junit.Ignore; import org.junit.Test; -import org.opengis.feature.Feature; +import org.apache.sis.feature.AbstractFeature; +import org.apache.sis.feature.AbstractAttribute; /** diff --cc storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java index 5a44f56479,3bc737deea..70c8beeb2a --- a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java @@@ -234,10 -236,10 +234,10 @@@ final class Store extends URIDataStore super(provider, connector); final Reader r = connector.commit(Reader.class, StoreProvider.NAME); source = (r instanceof BufferedReader) ? (BufferedReader) r : new LineNumberReader(r); - geometries = Geometries.implementation(connector.getOption(OptionKey.GEOMETRY_LIBRARY)); + geometries = Geometries.factory(connector.getOption(OptionKey.GEOMETRY_LIBRARY)); dissociate = FoliationRepresentation.FRAGMENTED.equals(connector.getOption(DataOptionKey.FOLIATION_REPRESENTATION)); GeneralEnvelope envelope = null; - FeatureType featureType = null; + DefaultFeatureType featureType = null; Foliation foliation = null; try { final List<String> elements = new ArrayList<>(); diff --cc storage/sis-xmlstore/src/test/java/org/apache/sis/internal/storage/gpx/ReaderTest.java index 69183ad663,b5a5663b63..96266047b9 --- a/storage/sis-xmlstore/src/test/java/org/apache/sis/internal/storage/gpx/ReaderTest.java +++ b/storage/sis-xmlstore/src/test/java/org/apache/sis/internal/storage/gpx/ReaderTest.java @@@ -223,11 -224,11 +224,11 @@@ public final class ReaderTest extends T @Test @DependsOnMethod("testMetadata100") public void testWayPoint100() throws DataStoreException { - try (Store reader = create("1.0/waypoint.xml")) { + try (Store reader = create(TestData.V1_0, TestData.WAYPOINT)) { verifyAlmostEmptyMetadata((Metadata) reader.getMetadata()); assertEquals("version", StoreProvider.V1_0, reader.getVersion()); - try (Stream<Feature> features = reader.features(false)) { - final Iterator<Feature> it = features.iterator(); + try (Stream<AbstractFeature> features = reader.features(false)) { + final Iterator<AbstractFeature> it = features.iterator(); verifyPoint(it.next(), 0, false); verifyPoint(it.next(), 1, false); verifyPoint(it.next(), 2, false); @@@ -244,11 -245,11 +245,11 @@@ @Test @DependsOnMethod("testMetadata110") public void testWayPoint110() throws DataStoreException { - try (Store reader = create("1.1/waypoint.xml")) { + try (Store reader = create(TestData.V1_1, TestData.WAYPOINT)) { verifyAlmostEmptyMetadata((Metadata) reader.getMetadata()); assertEquals("version", StoreProvider.V1_1, reader.getVersion()); - try (Stream<Feature> features = reader.features(false)) { - final Iterator<Feature> it = features.iterator(); + try (Stream<AbstractFeature> features = reader.features(false)) { + final Iterator<AbstractFeature> it = features.iterator(); verifyPoint(it.next(), 0, true); verifyPoint(it.next(), 1, true); verifyPoint(it.next(), 2, true); @@@ -265,11 -266,11 +266,11 @@@ @Test @DependsOnMethod("testWayPoint100") public void testRoute100() throws DataStoreException { - try (Store reader = create("1.0/route.xml")) { + try (Store reader = create(TestData.V1_0, TestData.ROUTE)) { verifyAlmostEmptyMetadata((Metadata) reader.getMetadata()); assertEquals("version", StoreProvider.V1_0, reader.getVersion()); - try (Stream<Feature> features = reader.features(false)) { - final Iterator<Feature> it = features.iterator(); + try (Stream<AbstractFeature> features = reader.features(false)) { + final Iterator<AbstractFeature> it = features.iterator(); verifyRoute(it.next(), false, 1); verifyEmpty(it.next(), "rtept"); assertFalse("hasNext", it.hasNext()); @@@ -372,11 -373,11 +373,11 @@@ @Test @DependsOnMethod("testRoute100") public void testTrack100() throws DataStoreException { - try (Store reader = create("1.0/track.xml")) { + try (Store reader = create(TestData.V1_0, TestData.TRACK)) { verifyAlmostEmptyMetadata((Metadata) reader.getMetadata()); assertEquals("version", StoreProvider.V1_0, reader.getVersion()); - try (Stream<Feature> features = reader.features(false)) { - final Iterator<Feature> it = features.iterator(); + try (Stream<AbstractFeature> features = reader.features(false)) { + final Iterator<AbstractFeature> it = features.iterator(); verifyTrack(it.next(), false, 1); verifyEmpty(it.next(), "trkseg"); assertFalse("hasNext", it.hasNext()); @@@ -392,11 -393,11 +393,11 @@@ @Test @DependsOnMethod("testRoute110") public void testTrack110() throws DataStoreException { - try (Store reader = create("1.1/track.xml")) { + try (Store reader = create(TestData.V1_1, TestData.TRACK)) { verifyAlmostEmptyMetadata((Metadata) reader.getMetadata()); assertEquals("version", StoreProvider.V1_1, reader.getVersion()); - try (Stream<Feature> features = reader.features(false)) { - final Iterator<Feature> it = features.iterator(); + try (Stream<AbstractFeature> features = reader.features(false)) { + final Iterator<AbstractFeature> it = features.iterator(); verifyTrack(it.next(), true, 3); verifyEmpty(it.next(), "trkseg"); assertFalse("hasNext", it.hasNext());