This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 3.5.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/3.5.x-fixes by this push:
new f79fda70a4 CXF-8920: use the same approach with
Temporal.class.isAssignableFrom check as used for non-collection fields to
recognize and convert temporal values (#1408)
f79fda70a4 is described below
commit f79fda70a4b556a7dd58a1ad89b1b37ade8dfb64
Author: Andrei Bastun <[email protected]>
AuthorDate: Wed Aug 30 16:32:51 2023 +0200
CXF-8920: use the same approach with Temporal.class.isAssignableFrom check
as used for non-collection fields to recognize and convert temporal values
(#1408)
Co-authored-by: Andrei Bastun <[email protected]>
(cherry picked from commit f424bda17e26f9db306ecd852228defc5a421986)
---
.../ext/search/AbstractSearchConditionParser.java | 10 ++++++++--
.../cxf/jaxrs/ext/search/fiql/FiqlCollectionsTest.java | 18 ++++++++++++++++++
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git
a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/AbstractSearchConditionParser.java
b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/AbstractSearchConditionParser.java
index 08c4abaeb7..ca531c9818 100644
---
a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/AbstractSearchConditionParser.java
+++
b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/AbstractSearchConditionParser.java
@@ -194,6 +194,7 @@ public abstract class AbstractSearchConditionParser<T>
implements SearchConditio
&& (isPrimitive
||
Date.class.isAssignableFrom(returnType)
+ || Temporal.class.isAssignableFrom(returnType)
|| returnCollection
|| paramConverterAvailable(returnType));
@@ -207,8 +208,13 @@ public abstract class AbstractSearchConditionParser<T>
implements SearchConditio
if (lastTry) {
if (!returnCollection) {
- nextObject = isPrimitive ?
InjectionUtils.convertStringToPrimitive(value, returnType)
- : convertToDate(returnType, value);
+ if (isPrimitive) {
+ nextObject =
InjectionUtils.convertStringToPrimitive(value, returnType);
+ } else if (Temporal.class.isAssignableFrom(returnType)) {
+ nextObject = convertToTemporal((Class<? extends
Temporal>)returnType, value);
+ } else {
+ nextObject = convertToDate(returnType, value);
+ }
} else {
CollectionCheck collCheck =
getCollectionCheck(originalPropName, true, actualReturnType);
if (collCheck == null) {
diff --git
a/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlCollectionsTest.java
b/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlCollectionsTest.java
index 26ccf89975..0acf211d5d 100644
---
a/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlCollectionsTest.java
+++
b/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlCollectionsTest.java
@@ -18,6 +18,7 @@
*/
package org.apache.cxf.jaxrs.ext.search.fiql;
+import java.time.LocalDate;
import java.util.Set;
import org.apache.cxf.jaxrs.ext.search.SearchCondition;
@@ -46,6 +47,14 @@ public class FiqlCollectionsTest {
assertNotNull(room);
}
+ @Test
+ public void testTemporalUsedOnCollection() throws SearchParseException {
+ FiqlParser<Room> roomParser = new FiqlParser<>(Room.class);
+ SearchCondition<Room> roomCondition =
roomParser.parse("furniture.spec.features.localDate==2023-08-24");
+ Room room = roomCondition.getCondition();
+ assertNotNull(room);
+ }
+
public static class Room {
Set<Furniture> furniture;
public Set<Furniture> getFurniture() {
@@ -88,11 +97,20 @@ public class FiqlCollectionsTest {
public static class Feature {
String description;
+ LocalDate localDate;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
+
+ public LocalDate getLocalDate() {
+ return localDate;
+ }
+
+ public void setLocalDate(LocalDate localDate) {
+ this.localDate = localDate;
+ }
}
}
\ No newline at end of file