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
The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
new 8032c960ae `ControlledVocabulary.identifier()` become optional. This
change helped to see potential NullPointerException.
8032c960ae is described below
commit 8032c960ae4f14c19b8e4dadf784f22ff1f1934a
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Tue Jun 25 16:05:59 2024 +0200
`ControlledVocabulary.identifier()` become optional.
This change helped to see potential NullPointerException.
---
.../main/org/apache/sis/coverage/grid/PixelInCell.java | 5 +++--
.../main/org/apache/sis/temporal/DefaultInstant.java | 2 +-
.../main/org/apache/sis/util/iso/Types.java | 9 +++------
.../main/org/apache/sis/xml/bind/gml/TimePeriodBound.java | 5 ++++-
.../main/org/apache/sis/geometry/CoordinateFormat.java | 4 ++--
.../main/org/apache/sis/referencing/privy/AxisDirections.java | 3 +--
.../main/org/apache/sis/util/privy/MetadataServices.java | 2 +-
geoapi/snapshot | 2 +-
.../main/org/apache/sis/cql/FilterToCQLVisitor.java | 4 ++--
.../test/org/apache/sis/cql/FilterReadingTest.java | 4 ++--
10 files changed, 20 insertions(+), 20 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 5b2b7a1f8d..13ebad22fd 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
@@ -16,6 +16,7 @@
*/
package org.apache.sis.coverage.grid;
+import java.util.Optional;
import org.opengis.metadata.spatial.PixelOrientation;
// Specific to the geoapi-3.1 and geoapi-4.0 branches:
@@ -103,8 +104,8 @@ public enum PixelInCell implements ControlledVocabulary {
* @return the legacy ISO/OGC identifier for this constant.
*/
@Override
- public String identifier() {
- return identifier;
+ 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 0eb5682cbe..77cdcc2d1c 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,7 @@ cmp: if (canTestBefore | canTestAfter | canTestEqual) {
public String toString() {
final var s = new StringBuilder();
if (indeterminate != null) {
- s.append(indeterminate.identifier());
+ s.append(indeterminate.identifier().orElse(indeterminate.name()));
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 fabfd4b0d5..1214ab578d 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,8 +222,8 @@ public final class Types extends Static {
if (code == null) {
return null;
}
- final String id = code.identifier();
- return (id != null && !id.isEmpty()) ? id : code.name();
+ String id = code.identifier().orElse("");
+ return id.isEmpty() ? code.name() : id;
}
/**
@@ -254,11 +254,8 @@ public final class Types extends Static {
if (code == null) {
return null;
}
- String id = code.identifier();
final String name = code.name();
- if (id == null) {
- id = name;
- }
+ String id = code.identifier().orElse(name);
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 5b51345ec5..cf94c7a1c9 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
@@ -23,6 +23,7 @@ import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlTransient;
// Specific to the geoapi-3.1 and geoapi-4.0 branches:
+import org.opengis.temporal.IndeterminateValue;
import org.opengis.temporal.Instant;
@@ -104,7 +105,9 @@ public abstract class TimePeriodBound {
if (instant != null) {
value = TimeInstant.toXML(instant.getPosition());
if (value == null) {
- instant.getIndeterminatePosition().ifPresent((p) ->
indeterminatePosition = p.identifier());
+ instant.getIndeterminatePosition()
+ .flatMap(IndeterminateValue::identifier)
+ .ifPresent((p) -> indeterminatePosition = 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 7ffd22a0b4..b5752a0760 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
@@ -631,8 +631,8 @@ public class CoordinateFormat extends
CompoundFormat<DirectPosition> {
* Returns the symbol ("E", "N", "SW", <i>etc.</i>) for given axis
direction.
*/
private static String symbol(final AxisDirection direction) {
- // Following cast uses or knowledge of `camelCaseToAcronym`
implementation.
- return ((StringBuilder)
CharSequences.camelCaseToAcronym(direction.identifier()))
+ // Following cast uses our knowledge of `camelCaseToAcronym`
implementation.
+ return ((StringBuilder)
CharSequences.camelCaseToAcronym(direction.identifier().orElse(direction.name())))
.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 414d1a7a54..0b756d9f7c 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
@@ -702,8 +702,7 @@ next: for (int i=0; i <= limit; i++) {
return "m"; // Arbitrary abbreviation, may change
in any future SIS version.
}
}
- final String id = direction.identifier(); // UML identifier, or null
if none.
- return camelCaseToAcronym(id != null ? id :
direction.name()).toString().intern();
+ return
camelCaseToAcronym(direction.identifier().orElse(direction.name())).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 e3684de28a..c20f80d7c5 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
@@ -138,7 +138,7 @@ public class MetadataServices extends OptionalDependency {
* to pass.
*/
}
- return CharSequences.camelCaseToSentence(code.identifier()).toString();
+ return
CharSequences.camelCaseToSentence(code.identifier().orElse(code.name())).toString();
}
/**
diff --git a/geoapi/snapshot b/geoapi/snapshot
index 2c16f9a1d5..a012f57760 160000
--- a/geoapi/snapshot
+++ b/geoapi/snapshot
@@ -1 +1 @@
-Subproject commit 2c16f9a1d5c2bd2b7c4b1666f877232f162bbc30
+Subproject commit a012f5776018987a7e9aaf5125a8286ded7de414
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 9dc909eff5..8e07c44d27 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,14 @@ final class FilterToCQLVisitor extends
Visitor<Feature,StringBuilder> {
});
for (final SpatialOperatorName type : SpatialOperatorName.values()) {
if (type != SpatialOperatorName.BBOX) {
- function(type, type.identifier().toUpperCase(Locale.US));
+ function(type,
type.identifier().orElse(type.name()).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().toUpperCase(Locale.US));
+ function(type,
type.identifier().orElse(type.name()).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 fcedc82f40..e220fe4b6c 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().toUpperCase(Locale.US);
+ final String name = operator.identifier().get().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().toUpperCase(Locale.US);
+ final String name =
operator.identifier().get().toUpperCase(Locale.US);
final String cql = "att " + name + " 2012-03-21T05:42:36Z";
final Filter<?> filter = CQL.parseFilter(cql);
assertInstanceOf(TemporalOperator.class, filter, name);