This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/sis.git
commit c49c79d2c582156b44d401dbe25b1cc41c69c054 Merge: 6e795b173e 01b0b23c5b Author: Martin Desruisseaux <[email protected]> AuthorDate: Sat May 11 17:46:22 2024 +0200 Merge branch 'geoapi-3.1'. .../apache/sis/feature/AbstractIdentifiedType.java | 13 +++---- .../org/apache/sis/feature/AbstractOperation.java | 4 +-- .../main/org/apache/sis/feature/FeatureFormat.java | 7 ++-- .../apache/sis/feature/builder/TypeBuilder.java | 4 +-- .../sis/feature/DefaultAttributeTypeTest.java | 5 ++- .../builder/AssociationRoleBuilderTest.java | 4 +-- .../feature/builder/AttributeTypeBuilderTest.java | 12 +++---- .../builder/CharacteristicTypeBuilderTest.java | 4 +-- .../feature/builder/FeatureTypeBuilderTest.java | 4 +-- .../org/apache/sis/metadata/PropertyAccessor.java | 5 +-- .../org/apache/sis/metadata/TypeValuePolicy.java | 15 ++++---- .../org/apache/sis/metadata/sql/Dispatcher.java | 2 +- .../apache/sis/metadata/sql/MetadataSource.java | 2 +- .../bind/metadata/replace/ServiceParameter.java | 7 ++-- .../metadata/replace/ServiceParameterTest.java | 4 +-- .../sis/referencing/AbstractIdentifiedObject.java | 37 +++++++++----------- .../operation/AbstractCoordinateOperation.java | 15 +------- .../operation/LooselyDefinedMethod.java | 4 +-- .../operation/TransformedCoordinateSet.java | 2 ++ .../apache/sis/parameter/ParameterBuilderTest.java | 15 ++++---- .../org/apache/sis/parameter/ParametersTest.java | 28 +++++++-------- .../referencing/AbstractIdentifiedObjectTest.java | 19 +++++----- .../referencing/AbstractReferenceSystemTest.java | 5 +-- .../org/apache/sis/referencing/Assertions.java | 15 ++++++++ .../sis/referencing/cs/DefaultCartesianCSTest.java | 3 +- .../referencing/cs/DefaultEllipsoidalCSTest.java | 3 +- .../referencing/datum/DefaultEllipsoidTest.java | 5 +-- .../datum/DefaultGeodeticDatumTest.java | 21 +++++------- .../datum/DefaultPrimeMeridianTest.java | 3 +- .../datum/DefaultTemporalDatumTest.java | 3 +- .../datum/DefaultVerticalDatumTest.java | 7 ++-- .../operation/provider/ProvidersTest.java | 6 ++-- .../CC_GeneralOperationParameterTest.java | 40 ++++++++++------------ .../CC_OperationParameterGroupTest.java | 4 +-- .../test/org/apache/sis/storage/gpx/TypesTest.java | 2 +- .../apache/sis/storage/folder/StoreProvider.java | 2 +- .../main/org/apache/sis/util/Classes.java | 30 ++++++++++++++++ .../main/org/apache/sis/util/Deprecable.java | 6 ++-- .../org/apache/sis/gui/dataset/FeatureTable.java | 2 +- 39 files changed, 204 insertions(+), 165 deletions(-) diff --cc endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/AbstractIdentifiedType.java index ea9d4b74b3,1d99dbb8f8..a4062967b0 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/AbstractIdentifiedType.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/AbstractIdentifiedType.java @@@ -34,16 -38,11 +35,16 @@@ import org.apache.sis.util.resources.Er /** * Identification and description information inherited by property types and feature types. * + * <div class="warning"><b>Warning:</b> + * This class is expected to implement a GeoAPI {@code IdentifiedType} interface in a future version. + * When such interface will be available, most references to {@code AbstractIdentifiedType} in the API + * will be replaced by references to the {@code IdentifiedType} interface.</div> + * * @author Martin Desruisseaux (Geomatys) - * @version 1.4 + * @version 1.5 * @since 0.5 */ -public class AbstractIdentifiedType implements IdentifiedType, Deprecable, Serializable { +public class AbstractIdentifiedType implements Deprecable, Serializable { /** * For cross-version compatibility. */ @@@ -280,10 -281,11 +281,10 @@@ * Returns a natural language designator for the element. * This can be used as an alternative to the {@linkplain #getName() name} in user interfaces. * - * @return natural language designator for the element, or {@code null} if none. + * @return natural language designator for the element. */ - public InternationalString getDesignation() { - return designation; - @Override + public Optional<InternationalString> getDesignation() { + return Optional.ofNullable(designation); } /** @@@ -295,8 -297,9 +296,8 @@@ * * @return information beyond that required for concise definition of the element, or {@code null} if none. */ - public InternationalString getDescription() { - return description; - @Override + public Optional<InternationalString> getDescription() { + return Optional.ofNullable(description); } /** diff --cc endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/FeatureFormat.java index 676d9d3d36,614f3ce6c0..2f0a746d06 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/FeatureFormat.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/FeatureFormat.java @@@ -321,12 -333,12 +321,12 @@@ public class FeatureFormat extends Tabu boolean hasDesignation = false; boolean hasCharacteristics = false; boolean hasDeprecatedTypes = false; - for (final PropertyType propertyType : featureType.getProperties(true)) { + for (final AbstractIdentifiedType propertyType : featureType.getProperties(true)) { if (!hasDesignation) { - hasDesignation = propertyType.getDesignation() != null; + hasDesignation = propertyType.getDesignation().isPresent(); } - if (!hasCharacteristics && propertyType instanceof AttributeType<?>) { - hasCharacteristics = !((AttributeType<?>) propertyType).characteristics().isEmpty(); + if (!hasCharacteristics && propertyType instanceof DefaultAttributeType<?>) { + hasCharacteristics = !((DefaultAttributeType<?>) propertyType).characteristics().isEmpty(); } if (!hasDeprecatedTypes && propertyType instanceof Deprecable) { hasDeprecatedTypes = ((Deprecable) propertyType).isDeprecated(); diff --cc endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/builder/TypeBuilder.java index 83c0475912,38914393d7..212a42b92d --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/builder/TypeBuilder.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/builder/TypeBuilder.java @@@ -114,11 -118,11 +114,11 @@@ public abstract class TypeBuilder imple * Initializes this builder to the value of the given type. * The caller is responsible to invoke {@link #reset()} (if needed) before this method. */ - final void initialize(final IdentifiedType template) { + final void initialize(final AbstractIdentifiedType template) { putIfNonNull(AbstractIdentifiedType.NAME_KEY, template.getName()); putIfNonNull(AbstractIdentifiedType.DEFINITION_KEY, template.getDefinition()); - putIfNonNull(AbstractIdentifiedType.DESIGNATION_KEY, template.getDesignation()); - putIfNonNull(AbstractIdentifiedType.DESCRIPTION_KEY, template.getDescription()); + putIfNonNull(AbstractIdentifiedType.DESIGNATION_KEY, template.getDesignation().orElse(null)); + putIfNonNull(AbstractIdentifiedType.DESCRIPTION_KEY, template.getDescription().orElse(null)); if (template instanceof Deprecable && ((Deprecable) template).isDeprecated()) { identification.put(AbstractIdentifiedType.DEPRECATED_KEY, Boolean.TRUE); } diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/sql/MetadataSource.java index b49468feb2,b1e7fff38f..7f674489ca --- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/sql/MetadataSource.java +++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/sql/MetadataSource.java @@@ -983,9 -983,9 +983,9 @@@ public class MetadataSource implements * the name between bracket is a subtype of the given `type` argument. */ final Class<?> type = TableHierarchy.subType(info.getMetadataType(), toSearch.identifier); - final Class<?> returnType = method.getReturnType(); + final Class<?> returnType = Interim.getReturnType(method); final boolean wantCollection = Collection.class.isAssignableFrom(returnType); - final Class<?> elementType = wantCollection ? Classes.boundOfParameterizedProperty(method) : returnType; + final Class<?> elementType = (wantCollection || Classes.isParameterizedProperty(returnType)) ? Classes.boundOfParameterizedProperty(method) : returnType; final boolean isMetadata = standard.isMetadata(elementType); final String tableName = getTableName(type); final String columnName = info.asNameMap(standard).get(method.getName()); diff --cc endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ServiceParameter.java index f5365cd727,8621ef0726..280235677e --- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ServiceParameter.java +++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ServiceParameter.java @@@ -316,10 -329,21 +317,10 @@@ public final class ServiceParameter ext /** * Returns a narrative explanation of the role of the parameter. * - * @return a narrative explanation of the role of the parameter, or {@code null} if none. + * @return a narrative explanation of the role of the parameter. */ - public InternationalString getDescription() { - return description; - @Override + public Optional<InternationalString> getDescription() { + return Optional.ofNullable(description); } /** diff --cc endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/bind/metadata/replace/ServiceParameterTest.java index f2e76fb389,4d67ae3516..c4eb58af24 --- a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/bind/metadata/replace/ServiceParameterTest.java +++ b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/bind/metadata/replace/ServiceParameterTest.java @@@ -64,11 -66,11 +64,11 @@@ public final class ServiceParameterTes @Test public void testGetName() { final ServiceParameter param = create(); - final Identifier name = param.getName(); + final ReferenceIdentifier name = param.getName(); assertEquals("TestSpace", name.getCodeSpace()); assertEquals("My service parameter", name.getCode()); - assertEquals("TestSpace:My service parameter", String.valueOf(name)); - assertNull (param.getDescription()); + assertEquals("TestSpace:My service parameter", name.toString()); + assertTrue(param.getDescription().isEmpty()); } /** diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java index 7f745f77a5,8b4b5d266b..9af53cbf78 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java @@@ -592,16 -586,8 +594,15 @@@ public class AbstractIdentifiedObject e * * @since 0.6 */ - @XmlElement(name = "description") - public InternationalString getDescription() { + public Optional<InternationalString> getDescription() { - return Optional.ofNullable((name != null) ? name.getDescription() : null); + final ReferenceIdentifier name = getName(); + if (name instanceof ImmutableIdentifier) { - return ((ImmutableIdentifier) name).getDescription(); ++ return Optional.ofNullable(((ImmutableIdentifier) name).getDescription()); + } + if (name instanceof DefaultIdentifier) { - return ((DefaultIdentifier) name).getDescription(); ++ return Optional.ofNullable(((DefaultIdentifier) name).getDescription()); + } - return null; ++ return Optional.empty(); } /** diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java index cb6bbfbfca,2f5ffd4044..5c073eb229 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java @@@ -593,12 -557,11 +594,11 @@@ check: for (int isTarget=0; ; isTa * nature of the parameters. In principle this property is irrelevant to coordinate * {@linkplain DefaultConversion conversions}, but Apache SIS accepts it anyway. * - * @return the coordinate operation version. + * @return the coordinate operation version, or {@code null} in none. */ @Override - @XmlElement(name = "operationVersion") - public Optional<String> getOperationVersion() { - return Optional.ofNullable(operationVersion); + public String getOperationVersion() { + return operationVersion; } /** diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/parameter/ParametersTest.java index 2e32861653,18d92697ec..afc3045ae8 --- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/parameter/ParametersTest.java +++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/parameter/ParametersTest.java @@@ -105,20 -110,23 +105,20 @@@ public final class ParametersTest exten { assertEquals(valueDomain, Parameters.getValueDomain(descriptor)); assertEquals(valueDomain, Parameters.getValueDomain(new ParameterDescriptor<T>() { - @Override public ReferenceIdentifier getName() {return descriptor.getName();} - @Override public Collection<GenericName> getAlias() {return descriptor.getAlias();} - @Override public Set<ReferenceIdentifier> getIdentifiers() {return descriptor.getIdentifiers();} - @Override public InternationalString getRemarks() {return descriptor.getRemarks();} - @Override public int getMinimumOccurs() {return descriptor.getMinimumOccurs();} - @Override public int getMaximumOccurs() {return descriptor.getMaximumOccurs();} - @Override public Class<T> getValueClass() {return descriptor.getValueClass();} - @Override public Set<T> getValidValues() {return descriptor.getValidValues();} - @Override public Comparable<T> getMinimumValue() {return descriptor.getMinimumValue();} - @Override public Comparable<T> getMaximumValue() {return descriptor.getMaximumValue();} - @Override public T getDefaultValue() {return descriptor.getDefaultValue();} - @Override public Unit<?> getUnit() {return descriptor.getUnit();} - @Override public ParameterValue<T> createValue() {return descriptor.createValue();} - @Override public String toWKT() {return descriptor.toWKT();} + @Override public ReferenceIdentifier getName() {return descriptor.getName();} + @Override public Collection<GenericName> getAlias() {return descriptor.getAlias();} + @Override public Set<ReferenceIdentifier> getIdentifiers() {return descriptor.getIdentifiers();} + @Override public InternationalString getRemarks() {return descriptor.getRemarks();} - @Override public Optional<InternationalString> getDescription() {return descriptor.getDescription();} - @Override public ParameterDirection getDirection() {return descriptor.getDirection();} + @Override public int getMinimumOccurs() {return descriptor.getMinimumOccurs();} + @Override public int getMaximumOccurs() {return descriptor.getMaximumOccurs();} - @Override public TypeName getValueType() {return descriptor.getValueType();} + @Override public Class<T> getValueClass() {return descriptor.getValueClass();} + @Override public Set<T> getValidValues() {return descriptor.getValidValues();} + @Override public Comparable<T> getMinimumValue() {return descriptor.getMinimumValue();} + @Override public Comparable<T> getMaximumValue() {return descriptor.getMaximumValue();} + @Override public T getDefaultValue() {return descriptor.getDefaultValue();} + @Override public Unit<?> getUnit() {return descriptor.getUnit();} + @Override public ParameterValue<T> createValue() {return descriptor.createValue();} + @Override public String toWKT() {return descriptor.toWKT();} })); } diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/AbstractReferenceSystemTest.java index d0db525abc,e8cea7e541..9a3c4ea9b8 --- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/AbstractReferenceSystemTest.java +++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/AbstractReferenceSystemTest.java @@@ -36,9 -36,11 +36,10 @@@ import org.apache.sis.test.mock.Vertica import static org.apache.sis.test.TestUtilities.getSingleton; import static org.apache.sis.test.Assertions.assertSerializedEquals; import static org.apache.sis.referencing.Assertions.assertWktEquals; + import static org.apache.sis.referencing.Assertions.assertRemarksEquals; -// Specific to the geoapi-3.1 and geoapi-4.0 branches: -import static org.opengis.referencing.IdentifiedObject.*; -import static org.opengis.referencing.ObjectDomain.*; +// Specific to the main branch: +import static org.opengis.referencing.ReferenceSystem.*; /** diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java index 1243f6a381,c89b830d0f..521982f2bc --- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java +++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java @@@ -45,9 -45,10 +45,10 @@@ import static org.apache.sis.test.TestU import static org.apache.sis.test.Assertions.assertSerializedEquals; import static org.apache.sis.metadata.Assertions.assertXmlEquals; import static org.apache.sis.referencing.Assertions.assertWktEquals; + import static org.apache.sis.referencing.Assertions.assertRemarksEquals; -// Specific to the geoapi-3.1 and geoapi-4.0 branches: -import static org.opengis.test.Assertions.assertMatrixEquals; +// Specific to the main branch: +import static org.apache.sis.test.GeoapiAssert.assertMatrixEquals; /** diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultVerticalDatumTest.java index 49ab7a1481,5a2241fb77..ae7c354dc7 --- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultVerticalDatumTest.java +++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultVerticalDatumTest.java @@@ -36,10 -36,10 +36,11 @@@ import org.apache.sis.xml.test.TestCase import static org.apache.sis.test.TestUtilities.getScope; import static org.apache.sis.metadata.Assertions.assertXmlEquals; import static org.apache.sis.referencing.Assertions.assertWktEquals; + import static org.apache.sis.referencing.Assertions.assertRemarksEquals; -// Specific to the geoapi-3.1 and geoapi-4.0 branches: -import org.opengis.referencing.datum.RealizationMethod; +// Specific to the main branch: +import java.lang.reflect.Field; +import org.opengis.referencing.datum.VerticalDatumType; /** diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/provider/ProvidersTest.java index 23f5dc0352,b4a1c3e11b..e1b9691d20 --- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/provider/ProvidersTest.java +++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/provider/ProvidersTest.java @@@ -232,8 -231,8 +232,8 @@@ public final class ProvidersTest extend */ @Test public void testDescription() { - assertNotEquals(0, ((DefaultParameterDescriptor<Double>) SatelliteTracking.SATELLITE_ORBIT_INCLINATION).getDescription().length()); - assertNotEquals(0, ((DefaultParameterDescriptor<Double>) SatelliteTracking.SATELLITE_ORBITAL_PERIOD ).getDescription().length()); - assertNotEquals(0, ((DefaultParameterDescriptor<Double>) SatelliteTracking.ASCENDING_NODE_PERIOD ).getDescription().length()); - assertNotEquals(0, SatelliteTracking.SATELLITE_ORBIT_INCLINATION.getDescription().orElseThrow().length()); - assertNotEquals(0, SatelliteTracking.SATELLITE_ORBITAL_PERIOD .getDescription().orElseThrow().length()); - assertNotEquals(0, SatelliteTracking.ASCENDING_NODE_PERIOD .getDescription().orElseThrow().length()); ++ assertNotEquals(0, ((DefaultParameterDescriptor<Double>) SatelliteTracking.SATELLITE_ORBIT_INCLINATION).getDescription().orElseThrow().length()); ++ assertNotEquals(0, ((DefaultParameterDescriptor<Double>) SatelliteTracking.SATELLITE_ORBITAL_PERIOD ).getDescription().orElseThrow().length()); ++ assertNotEquals(0, ((DefaultParameterDescriptor<Double>) SatelliteTracking.ASCENDING_NODE_PERIOD ).getDescription().orElseThrow().length()); } } diff --cc endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/folder/StoreProvider.java index eafe3535ea,dd72fe7799..863f6e3c57 --- a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/folder/StoreProvider.java +++ b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/folder/StoreProvider.java @@@ -120,7 -117,7 +120,7 @@@ public final class StoreProvider extend * Creates a parameter descriptor equals to the given one except for the remarks which are set to the given value. */ private static <T> ParameterDescriptor<T> annotate(ParameterBuilder builder, ParameterDescriptor<T> e, InternationalString remark) { - return builder.addName(e.getName()).setDescription(((DefaultParameterDescriptor) e).getDescription()).setRemarks(remark).create(e.getValueClass(), null); - return builder.addName(e.getName()).setDescription(e.getDescription().orElse(null)).setRemarks(remark).create(e.getValueClass(), null); ++ return builder.addName(e.getName()).setDescription(((DefaultParameterDescriptor) e).getDescription().orElse(null)).setRemarks(remark).create(e.getValueClass(), null); } /**
