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 2025/04/03 13:50:50 UTC
(sis) 01/03: Fix a `ClassCastException` in the comparison of temporal objects.
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
commit 304b134b1df2bcabf72c0d20c739c38fa5a54301
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Wed Apr 2 14:52:35 2025 +0200
Fix a `ClassCastException` in the comparison of temporal objects.
---
.../main/org/apache/sis/filter/TemporalFilter.java | 6 +++---
.../main/org/apache/sis/temporal/TimeMethods.java | 2 +-
incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/CQL.java | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/TemporalFilter.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/TemporalFilter.java
index 8619c71015..6413abcadc 100644
--- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/TemporalFilter.java
+++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/TemporalFilter.java
@@ -201,7 +201,7 @@ class TemporalFilter<R,T> extends BinaryFunction<R,T,T>
}
} catch (DateTimeException e) {
throw new InvalidFilterValueException(Errors.format(
- Errors.Keys.CannotCompareInstanceOf_2, left.getClass(), right.getClass()));
+ Errors.Keys.CannotCompareInstanceOf_2, left.getClass(), right.getClass()), e);
}
}
return false;
@@ -240,7 +240,7 @@ class TemporalFilter<R,T> extends BinaryFunction<R,T,T>
return operation.evaluate(left, right);
} catch (DateTimeException e) {
throw new InvalidFilterValueException(Errors.format(
- Errors.Keys.CannotCompareInstanceOf_2, left.getClass(), right.getClass()));
+ Errors.Keys.CannotCompareInstanceOf_2, left.getClass(), right.getClass()), e);
}
}
return false;
@@ -280,7 +280,7 @@ class TemporalFilter<R,T> extends BinaryFunction<R,T,T>
return operation.evaluate(left, right);
} catch (DateTimeException e) {
throw new InvalidFilterValueException(Errors.format(
- Errors.Keys.CannotCompareInstanceOf_2, left.getClass(), right.getClass()));
+ Errors.Keys.CannotCompareInstanceOf_2, left.getClass(), right.getClass()), e);
}
}
return false;
diff --git a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/temporal/TimeMethods.java b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/temporal/TimeMethods.java
index da063eeb9e..5cc49c0f66 100644
--- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/temporal/TimeMethods.java
+++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/temporal/TimeMethods.java
@@ -219,7 +219,7 @@ public class TimeMethods<T> implements Serializable {
}
return p.test(self, other);
}
- } else if (self instanceof Comparable<?> && type.isInstance(other)) {
+ } else if (self instanceof Comparable<?> && self.getClass().isInstance(other)) {
/*
* The type of the first operand is not a special case, but the second operand is compatible
* for a call to the generic `compareTo(…)` method. This case does not happen often, because
diff --git a/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/CQL.java b/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/CQL.java
index d6096d76cf..472228bb9a 100644
--- a/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/CQL.java
+++ b/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/CQL.java
@@ -284,7 +284,7 @@ public final class CQL {
case INT: return ff.literal(Integer.valueOf(tree.getText()));
case FLOAT: return ff.literal(Double.valueOf(tree.getText()));
case DATE: {
- TemporalAccessor ta = LenientDateFormat.FORMAT.parse(tree.getText());
+ TemporalAccessor ta = LenientDateFormat.parseBest(tree.getText());
return ff.literal(ta);
// TODO: return ff.literal(TemporalObjects.getTimeInMillis(tree.getText()));
}