You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2024/06/28 04:09:31 UTC
(sis) 01/02: Partial revert of the previous merge: the `CodeList.identifier()` method already existed in GeoAPI 3.0, we cannot change its return type (from `String` to `Optional`) in GeoAPI 3.1.
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-3.1
in repository https://gitbox.apache.org/repos/asf/sis.git
commit bede3d4c053dd9c9a855b924e2269b342f4d9312
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Fri Jun 28 05:12:40 2024 +0200
Partial revert of the previous merge: the `CodeList.identifier()` method already existed in GeoAPI 3.0,
we cannot change its return type (from `String` to `Optional<String>`) in GeoAPI 3.1.
---
.../org/apache/sis/coverage/grid/PixelInCell.java | 1 -
.../org/apache/sis/temporal/DefaultInstant.java | 4 +++-
.../main/org/apache/sis/util/iso/Types.java | 16 ++++++++++++++--
.../apache/sis/xml/bind/gml/TimePeriodBound.java | 7 ++++---
.../org/apache/sis/geometry/CoordinateFormat.java | 4 +++-
.../sis/referencing/privy/AxisDirections.java | 4 +++-
.../org/apache/sis/util/privy/MetadataServices.java | 21 +--------------------
geoapi/snapshot | 2 +-
.../main/org/apache/sis/cql/FilterToCQLVisitor.java | 8 ++++++--
.../test/org/apache/sis/cql/FilterReadingTest.java | 4 ++--
10 files changed, 37 insertions(+), 34 deletions(-)
diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelInCell.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelInCell.java
index 13ebad22fd..b9771e9d7f 100644
--- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelInCell.java
+++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelInCell.java
@@ -103,7 +103,6 @@ public enum PixelInCell implements ControlledVocabulary {
*
* @return the legacy ISO/OGC identifier for this constant.
*/
- @Override
public Optional<String> identifier() {
return Optional.of(identifier);
}
diff --git a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/temporal/DefaultInstant.java b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/temporal/DefaultInstant.java
index 77cdcc2d1c..17f412ffe3 100644
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/temporal/DefaultInstant.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/temporal/DefaultInstant.java
@@ -324,7 +324,9 @@ cmp: if (canTestBefore | canTestAfter | canTestEqual) {
public String toString() {
final var s = new StringBuilder();
if (indeterminate != null) {
- s.append(indeterminate.identifier().orElse(indeterminate.name()));
+ String id = indeterminate.identifier();
+ if (id == null) id = indeterminate.name();
+ s.append(id);
if (position != null) {
s.append(' ').append(position);
}
diff --git a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/util/iso/Types.java b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/util/iso/Types.java
index 1214ab578d..37f8764164 100644
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/util/iso/Types.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/util/iso/Types.java
@@ -222,7 +222,19 @@ public final class Types extends Static {
if (code == null) {
return null;
}
- String id = code.identifier().orElse("");
+ String id = null;
+ if (code instanceof CodeList<?>) {
+ id = ((CodeList<?>) code).identifier();
+ }
+ if (id == null) {
+ id = code.name();
+ for (String name : code.names()) {
+ if (!name.equals(id)) {
+ id = name;
+ break;
+ }
+ }
+ }
return id.isEmpty() ? code.name() : id;
}
@@ -255,7 +267,7 @@ public final class Types extends Static {
return null;
}
final String name = code.name();
- String id = code.identifier().orElse(name);
+ String id = getCodeName(code);
for (final String candidate : code.names()) {
if (!candidate.equals(name) && candidate.length() >= id.length()) {
id = candidate;
diff --git a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/gml/TimePeriodBound.java b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/gml/TimePeriodBound.java
index cf94c7a1c9..b70dbc2a38 100644
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/gml/TimePeriodBound.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/gml/TimePeriodBound.java
@@ -22,8 +22,10 @@ import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlTransient;
+// Specific to the main and geoapi-3.1 branches:
+import org.apache.sis.util.iso.Types;
+
// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.temporal.IndeterminateValue;
import org.opengis.temporal.Instant;
@@ -106,8 +108,7 @@ public abstract class TimePeriodBound {
value = TimeInstant.toXML(instant.getPosition());
if (value == null) {
instant.getIndeterminatePosition()
- .flatMap(IndeterminateValue::identifier)
- .ifPresent((p) -> indeterminatePosition = p);
+ .ifPresent((p) -> indeterminatePosition = Types.getCodeName(p));
}
}
if (value == null && indeterminatePosition == null) {
diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/CoordinateFormat.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/CoordinateFormat.java
index e39e51b45c..69cd312e03 100644
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/CoordinateFormat.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/CoordinateFormat.java
@@ -632,7 +632,9 @@ public class CoordinateFormat extends CompoundFormat<DirectPosition> {
*/
private static String symbol(final AxisDirection direction) {
// Following cast uses our knowledge of `camelCaseToAcronym` implementation.
- return ((StringBuilder) CharSequences.camelCaseToAcronym(direction.identifier().orElse(direction.name())))
+ String id = direction.identifier();
+ if (id == null) id = direction.name();
+ return ((StringBuilder) CharSequences.camelCaseToAcronym(id))
.insert(0, Characters.NO_BREAK_SPACE).toString();
}
diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/AxisDirections.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/AxisDirections.java
index 2cec5bccff..f1a452946a 100644
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/AxisDirections.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/AxisDirections.java
@@ -686,7 +686,9 @@ next: for (int i=0; i <= limit; i++) {
return abbreviation;
}
}
- return camelCaseToAcronym(direction.identifier().orElse(direction.name())).toString().intern();
+ String id = direction.identifier();
+ if (id == null) id = direction.name();
+ return camelCaseToAcronym(id).toString().intern();
}
/**
diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/privy/MetadataServices.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/privy/MetadataServices.java
index c20f80d7c5..de950c772d 100644
--- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/privy/MetadataServices.java
+++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/privy/MetadataServices.java
@@ -29,9 +29,6 @@ import org.apache.sis.system.OptionalDependency;
import org.apache.sis.util.CharSequences;
// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import java.util.MissingResourceException;
-import org.opengis.annotation.UML;
-import org.opengis.annotation.ResourceBundles;
import org.opengis.util.ControlledVocabulary;
@@ -122,23 +119,7 @@ public class MetadataServices extends OptionalDependency {
* @see org.apache.sis.util.iso.Types#getCodeTitle(ControlledVocabulary)
*/
public String getCodeTitle(final ControlledVocabulary code, final Locale locale) {
- /*
- * Following code reproduces the work done by `org.apache.sis.util.iso.Types.getCodeList(…)` with
- * less handling of special cases. It is executed only if the `org.apache.sis.metadata` module is
- * not on the module path, otherwise the `org.apache.sis.metadata` implementation will be used.
- */
- final UML uml = code.getClass().getAnnotation(UML.class);
- if (uml != null) try {
- return ResourceBundles.codeLists(locale).getString(uml.identifier() + '.' + code.identifier());
- } catch (MissingResourceException e) {
- /*
- * Ignore. The reason for not finding the resource may because of above code not covering enough cases.
- * Usually the `org.apache.sis.metadata` module will be present on the module path, in which case this
- * implementation will not be used. We need just enough code for allowing `org.apache.sis.util` tests
- * to pass.
- */
- }
- return CharSequences.camelCaseToSentence(code.identifier().orElse(code.name())).toString();
+ return CharSequences.camelCaseToSentence(code.name()).toString();
}
/**
diff --git a/geoapi/snapshot b/geoapi/snapshot
index e32e9fca0a..3a789ec3cf 160000
--- a/geoapi/snapshot
+++ b/geoapi/snapshot
@@ -1 +1 @@
-Subproject commit e32e9fca0a1b0f7f07b98cb7d396bff23a6a35c2
+Subproject commit 3a789ec3cfbbc41a961963bbc1447f0b988185bc
diff --git a/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/FilterToCQLVisitor.java b/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/FilterToCQLVisitor.java
index 8e07c44d27..98ea262159 100644
--- a/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/FilterToCQLVisitor.java
+++ b/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/FilterToCQLVisitor.java
@@ -142,14 +142,18 @@ final class FilterToCQLVisitor extends Visitor<Feature,StringBuilder> {
});
for (final SpatialOperatorName type : SpatialOperatorName.values()) {
if (type != SpatialOperatorName.BBOX) {
- function(type, type.identifier().orElse(type.name()).toUpperCase(Locale.US));
+ String id = type.identifier();
+ if (id == null) id = type.name();
+ function(type, id.toUpperCase(Locale.US));
if (type == SpatialOperatorName.OVERLAPS) break;
}
}
function(DistanceOperatorName.WITHIN, "DWITHIN");
function(DistanceOperatorName.BEYOND, "BEYOND");
for (final TemporalOperatorName type : TemporalOperatorName.values()) {
- function(type, type.identifier().orElse(type.name()).toUpperCase(Locale.US));
+ String id = type.identifier();
+ if (id == null) id = type.name();
+ function(type, id.toUpperCase(Locale.US));
if (type == TemporalOperatorName.ANY_INTERACTS) break;
}
/*
diff --git a/incubator/src/org.apache.sis.cql/test/org/apache/sis/cql/FilterReadingTest.java b/incubator/src/org.apache.sis.cql/test/org/apache/sis/cql/FilterReadingTest.java
index e220fe4b6c..fcedc82f40 100644
--- a/incubator/src/org.apache.sis.cql/test/org/apache/sis/cql/FilterReadingTest.java
+++ b/incubator/src/org.apache.sis.cql/test/org/apache/sis/cql/FilterReadingTest.java
@@ -352,7 +352,7 @@ public final class FilterReadingTest extends CQLTestCase {
}
private Filter<?> testSpatialOperators(final CodeList<?> operator, final String suffix) throws CQLException {
- final String name = operator.identifier().get().toUpperCase(Locale.US);
+ final String name = operator.identifier().toUpperCase(Locale.US);
final String cql = name + "(\"att\", POLYGON((10 20, 30 40, 50 60, 10 20))" + suffix + ')';
final Filter<?> filter = CQL.parseFilter(cql);
assertInstanceOf(SpatialOperator.class, filter, name);
@@ -429,7 +429,7 @@ public final class FilterReadingTest extends CQLTestCase {
@Test
public void testTemporalOperators() throws CQLException, ParseException {
for (final TemporalOperatorName operator : TemporalOperatorName.values()) {
- final String name = operator.identifier().get().toUpperCase(Locale.US);
+ final String name = operator.identifier().toUpperCase(Locale.US);
final String cql = "att " + name + " 2012-03-21T05:42:36Z";
final Filter<?> filter = CQL.parseFilter(cql);
assertInstanceOf(TemporalOperator.class, filter, name);