You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by sh...@apache.org on 2021/09/03 10:16:59 UTC

[unomi] branch draft-dependency-upgrades updated: Upgrading libraries: - Karaf -> 4.2.11 - CXF -> 3.4.4 - GraphQL -> 17 - GraphQL annotations -> 9.0 - Jackson -> 2.11.1

This is an automated email from the ASF dual-hosted git repository.

shuber pushed a commit to branch draft-dependency-upgrades
in repository https://gitbox.apache.org/repos/asf/unomi.git


The following commit(s) were added to refs/heads/draft-dependency-upgrades by this push:
     new f1dff6f  Upgrading libraries: - Karaf -> 4.2.11 - CXF -> 3.4.4 - GraphQL -> 17 - GraphQL annotations -> 9.0 - Jackson -> 2.11.1
f1dff6f is described below

commit f1dff6f5adca2f468c2e1415a7ea73fe3fcf7c72
Author: Serge Huber <sh...@jahia.com>
AuthorDate: Fri Sep 3 12:16:51 2021 +0200

    Upgrading libraries:
    - Karaf -> 4.2.11
    - CXF -> 3.4.4
    - GraphQL -> 17
    - GraphQL annotations -> 9.0
    - Jackson -> 2.11.1
---
 api/pom.xml                                        |  7 +-
 .../main/java/org/apache/unomi/api/Consent.java    |  9 ++-
 api/src/main/java/org/apache/unomi/api/Event.java  | 10 +--
 .../java/org/apache/unomi/api/MetadataItem.java    |  8 +-
 .../java/org/apache/unomi/api/PartialList.java     |  7 +-
 .../org/apache/unomi/api/PersonaWithSessions.java  |  5 +-
 .../main/java/org/apache/unomi/api/Profile.java    |  8 +-
 .../unomi/api/PropertyMergeStrategyType.java       |  4 +-
 .../java/org/apache/unomi/api/PropertyType.java    |  8 +-
 .../main/java/org/apache/unomi/api/ValueType.java  |  5 +-
 .../java/org/apache/unomi/api/actions/Action.java  |  8 +-
 .../org/apache/unomi/api/conditions/Condition.java |  9 ++-
 .../apache/unomi/api/conditions/ConditionType.java |  4 +-
 .../converters/UnomiToGraphQLConverter.java        |  3 +-
 .../apache/unomi/graphql/scalars/DateFunction.java |  8 +-
 .../unomi/graphql/scalars/DateTimeFunction.java    |  8 +-
 .../apache/unomi/graphql/scalars/JSONFunction.java |  4 +-
 .../unomi/graphql/schema/PropertyFilterUtils.java  | 13 ++--
 .../graphql/schema/PropertyValueTypeHelper.java    |  7 +-
 graphql/karaf-feature/pom.xml                      |  4 +-
 graphql/karaf-feature/src/main/feature/feature.xml | 16 ++--
 graphql/pom.xml                                    |  9 ++-
 kar/src/main/feature/feature.xml                   |  2 +-
 .../unomi/persistence/spi/CustomObjectMapper.java  |  4 +-
 .../spi/PropertyTypedObjectDeserializer.java       |  9 ++-
 plugins/kafka-injector/pom.xml                     |  4 +-
 pom.xml                                            |  8 +-
 rest/pom.xml                                       | 88 +++++++++++++++++++++-
 28 files changed, 195 insertions(+), 84 deletions(-)

diff --git a/api/pom.xml b/api/pom.xml
index 287c0dc..272d1d9 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -31,12 +31,18 @@
     <packaging>bundle</packaging>
 
     <dependencies>
+        <!--
         <dependency>
             <groupId>javax.xml.bind</groupId>
             <artifactId>jaxb-api</artifactId>
             <version>2.2.11</version>
             <scope>provided</scope>
         </dependency>
+        -->
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
@@ -65,7 +71,6 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
-                <version>4.2.1</version>
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
diff --git a/api/src/main/java/org/apache/unomi/api/Consent.java b/api/src/main/java/org/apache/unomi/api/Consent.java
index 2cb20ab..100a918 100644
--- a/api/src/main/java/org/apache/unomi/api/Consent.java
+++ b/api/src/main/java/org/apache/unomi/api/Consent.java
@@ -16,7 +16,8 @@
  */
 package org.apache.unomi.api;
 
-import javax.xml.bind.annotation.XmlTransient;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 import java.io.Serializable;
 import java.text.DateFormat;
 import java.text.ParseException;
@@ -181,7 +182,7 @@ public class Consent implements Serializable {
      * @return true if the consent is granted using the current date (internally a new Date() is created and the
      * {@link Consent#isConsentGrantedAtDate} is called.
      */
-    @XmlTransient
+    @JsonIgnore
     public boolean isConsentGrantedNow() {
         return isConsentGrantedAtDate(new Date());
     }
@@ -191,7 +192,7 @@ public class Consent implements Serializable {
      * @param testDate the date against which to test the consent to be granted.
      * @return true if the consent is granted at the specified date, false otherwise.
      */
-    @XmlTransient
+    @JsonIgnore
     public boolean isConsentGrantedAtDate(Date testDate) {
         if (getStatusDate().before(testDate) && (getRevokeDate() == null || (getRevokeDate().after(testDate)))) {
             if (getStatus().equals(ConsentStatus.GRANTED)) {
@@ -211,7 +212,7 @@ public class Consent implements Serializable {
      * @return a Map that contains the following key-value pairs : typeIdentifier:String, status:String (must
      *                   be one of GRANTED, DENIED or REVOKED), statusDate:String (generated by the dateFormat), revokeDate:String (generated by the dateFormat)
      */
-    @XmlTransient
+    @JsonIgnore
     public Map<String,Object> toMap(DateFormat dateFormat) {
         Map<String,Object> map = new LinkedHashMap<>();
         map.put("scope", scope);
diff --git a/api/src/main/java/org/apache/unomi/api/Event.java b/api/src/main/java/org/apache/unomi/api/Event.java
index ab7e1b0..bd51272 100644
--- a/api/src/main/java/org/apache/unomi/api/Event.java
+++ b/api/src/main/java/org/apache/unomi/api/Event.java
@@ -17,10 +17,10 @@
 
 package org.apache.unomi.api;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.unomi.api.actions.ActionPostExecutor;
 
-import javax.xml.bind.annotation.XmlTransient;
 import java.util.*;
 
 /**
@@ -238,7 +238,7 @@ public class Event extends Item implements TimestampedItem {
      *
      * @return the profile
      */
-    @XmlTransient
+    @JsonIgnore
     public Profile getProfile() {
         return profile;
     }
@@ -257,7 +257,7 @@ public class Event extends Item implements TimestampedItem {
      *
      * @return the session
      */
-    @XmlTransient
+    @JsonIgnore
     public Session getSession() {
         return session;
     }
@@ -295,7 +295,7 @@ public class Event extends Item implements TimestampedItem {
      *
      * @return the attributes
      */
-    @XmlTransient
+    @JsonIgnore
     public Map<String, Object> getAttributes() {
         return attributes;
     }
@@ -424,7 +424,7 @@ public class Event extends Item implements TimestampedItem {
      *
      * @return the action post executors
      */
-    @XmlTransient
+    @JsonIgnore
     public List<ActionPostExecutor> getActionPostExecutors() {
         return actionPostExecutors;
     }
diff --git a/api/src/main/java/org/apache/unomi/api/MetadataItem.java b/api/src/main/java/org/apache/unomi/api/MetadataItem.java
index fb8b521..70906fc 100644
--- a/api/src/main/java/org/apache/unomi/api/MetadataItem.java
+++ b/api/src/main/java/org/apache/unomi/api/MetadataItem.java
@@ -17,8 +17,8 @@
 
 package org.apache.unomi.api;
 
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 
 /**
  * A superclass for all {@link Item}s that bear {@link Metadata}.
@@ -40,7 +40,7 @@ public abstract class MetadataItem extends Item {
      *
      * @return the associated Metadata
      */
-    @XmlElement(name = "metadata")
+    @JsonProperty("metadata")
     public Metadata getMetadata() {
         return metadata;
     }
@@ -50,7 +50,7 @@ public abstract class MetadataItem extends Item {
         this.metadata = metadata;
     }
 
-    @XmlTransient
+    @JsonIgnore
     public String getScope() {
         return metadata.getScope();
     }
diff --git a/api/src/main/java/org/apache/unomi/api/PartialList.java b/api/src/main/java/org/apache/unomi/api/PartialList.java
index 568cf33..2d398dc 100644
--- a/api/src/main/java/org/apache/unomi/api/PartialList.java
+++ b/api/src/main/java/org/apache/unomi/api/PartialList.java
@@ -17,7 +17,8 @@
 
 package org.apache.unomi.api;
 
-import javax.xml.bind.annotation.XmlTransient;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
@@ -139,7 +140,7 @@ public class PartialList<T> implements Serializable {
      *
      * @return the size of this PartialList
      */
-    @XmlTransient
+    @JsonIgnore
     public int size() {
         return list.size();
     }
@@ -150,7 +151,7 @@ public class PartialList<T> implements Serializable {
      * @param index the index of the element to retrieve
      * @return the element at the specified index
      */
-    @XmlTransient
+    @JsonIgnore
     public T get(int index) {
         return list.get(index);
     }
diff --git a/api/src/main/java/org/apache/unomi/api/PersonaWithSessions.java b/api/src/main/java/org/apache/unomi/api/PersonaWithSessions.java
index 0a507e9..0948dc9 100644
--- a/api/src/main/java/org/apache/unomi/api/PersonaWithSessions.java
+++ b/api/src/main/java/org/apache/unomi/api/PersonaWithSessions.java
@@ -17,7 +17,8 @@
 
 package org.apache.unomi.api;
 
-import javax.xml.bind.annotation.XmlTransient;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 import java.io.Serializable;
 import java.util.List;
 
@@ -53,7 +54,7 @@ public class PersonaWithSessions implements Serializable {
         this.sessions = sessions;
     }
 
-    @XmlTransient
+    @JsonIgnore
     public PersonaSession getLastSession() {
         return sessions.size()>0?sessions.get(0):null;
     }
diff --git a/api/src/main/java/org/apache/unomi/api/Profile.java b/api/src/main/java/org/apache/unomi/api/Profile.java
index 7115bd5..48d7707 100644
--- a/api/src/main/java/org/apache/unomi/api/Profile.java
+++ b/api/src/main/java/org/apache/unomi/api/Profile.java
@@ -17,11 +17,11 @@
 
 package org.apache.unomi.api;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.unomi.api.segments.Scoring;
 import org.apache.unomi.api.segments.Segment;
 
-import javax.xml.bind.annotation.XmlTransient;
 import java.util.*;
 
 /**
@@ -175,7 +175,7 @@ public class Profile extends Item {
      *
      * Note that Profiles are always in the shared system scope ({@link Metadata#SYSTEM_SCOPE}).
      */
-    @XmlTransient
+    @JsonIgnore
     public String getScope() {
         return Metadata.SYSTEM_SCOPE;
     }
@@ -246,7 +246,7 @@ public class Profile extends Item {
      * Returns true if this profile is an anonymous profile.
      * @return true of the profile has been marked as an anonymous profile, false otherwise.
      */
-    @XmlTransient
+    @JsonIgnore
     public boolean isAnonymousProfile() {
         Boolean anonymous = (Boolean) getSystemProperties().get("isAnonymousProfile");
         return anonymous != null && anonymous;
@@ -259,7 +259,7 @@ public class Profile extends Item {
      * @return true if the operation was successful (inserted exception in the case of a revoked consent, in which case
      * it is successful if there was a consent to revoke).
      */
-    @XmlTransient
+    @JsonIgnore
     public boolean setConsent(Consent consent) {
         if (ConsentStatus.REVOKED.equals(consent.getStatus())) {
             if (consent.getScope() != null) {
diff --git a/api/src/main/java/org/apache/unomi/api/PropertyMergeStrategyType.java b/api/src/main/java/org/apache/unomi/api/PropertyMergeStrategyType.java
index dd47a51..17e128e 100644
--- a/api/src/main/java/org/apache/unomi/api/PropertyMergeStrategyType.java
+++ b/api/src/main/java/org/apache/unomi/api/PropertyMergeStrategyType.java
@@ -17,7 +17,7 @@
 
 package org.apache.unomi.api;
 
-import javax.xml.bind.annotation.XmlTransient;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 
 /**
  * A unomi plugin that defines a new property merge strategy.
@@ -57,7 +57,7 @@ public class PropertyMergeStrategyType implements PluginType {
         this.filter = filter;
     }
 
-    @XmlTransient
+    @JsonIgnore
     public long getPluginId() {
         return pluginId;
     }
diff --git a/api/src/main/java/org/apache/unomi/api/PropertyType.java b/api/src/main/java/org/apache/unomi/api/PropertyType.java
index 090d7ee..a56c80c 100644
--- a/api/src/main/java/org/apache/unomi/api/PropertyType.java
+++ b/api/src/main/java/org/apache/unomi/api/PropertyType.java
@@ -17,12 +17,12 @@
 
 package org.apache.unomi.api;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.unomi.api.query.DateRange;
 import org.apache.unomi.api.query.IpRange;
 import org.apache.unomi.api.query.NumericRange;
 
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
 import java.util.*;
 
 /**
@@ -94,7 +94,7 @@ public class PropertyType extends MetadataItem {
      * @return the value type identifier associated with values defined by this PropertyType
      * @see ValueType
      */
-    @XmlElement(name = "type")
+    @JsonProperty("type")
     public String getValueTypeId() {
         return valueTypeId;
     }
@@ -113,7 +113,7 @@ public class PropertyType extends MetadataItem {
      *
      * @return the value type associated with values defined for properties using this PropertyType
      */
-    @XmlTransient
+    @JsonIgnore
     public ValueType getValueType() {
         return valueType;
     }
diff --git a/api/src/main/java/org/apache/unomi/api/ValueType.java b/api/src/main/java/org/apache/unomi/api/ValueType.java
index 16e1eac..e76c01a 100644
--- a/api/src/main/java/org/apache/unomi/api/ValueType.java
+++ b/api/src/main/java/org/apache/unomi/api/ValueType.java
@@ -17,7 +17,8 @@
 
 package org.apache.unomi.api;
 
-import javax.xml.bind.annotation.XmlTransient;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 import java.util.LinkedHashSet;
 import java.util.Set;
 
@@ -107,7 +108,7 @@ public class ValueType implements PluginType {
         this.descriptionKey = descriptionKey;
     }
 
-    @XmlTransient
+    @JsonIgnore
     public long getPluginId() {
         return pluginId;
     }
diff --git a/api/src/main/java/org/apache/unomi/api/actions/Action.java b/api/src/main/java/org/apache/unomi/api/actions/Action.java
index b3505bb..8880434 100644
--- a/api/src/main/java/org/apache/unomi/api/actions/Action.java
+++ b/api/src/main/java/org/apache/unomi/api/actions/Action.java
@@ -17,10 +17,10 @@
 
 package org.apache.unomi.api.actions;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.unomi.api.rules.Rule;
 
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
 import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
@@ -54,7 +54,7 @@ public class Action implements Serializable {
      *
      * @return the action's type
      */
-    @XmlTransient
+    @JsonIgnore
     public ActionType getActionType() {
         return actionType;
     }
@@ -74,7 +74,7 @@ public class Action implements Serializable {
      *
      * @return the identifier of the associated action type
      */
-    @XmlElement(name = "type")
+    @JsonProperty("type")
     public String getActionTypeId() {
         return actionTypeId;
     }
diff --git a/api/src/main/java/org/apache/unomi/api/conditions/Condition.java b/api/src/main/java/org/apache/unomi/api/conditions/Condition.java
index a319ddd..33b0be2 100644
--- a/api/src/main/java/org/apache/unomi/api/conditions/Condition.java
+++ b/api/src/main/java/org/apache/unomi/api/conditions/Condition.java
@@ -17,8 +17,9 @@
 
 package org.apache.unomi.api.conditions;
 
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
@@ -53,7 +54,7 @@ public class Condition implements Serializable {
      *
      * @return the condition type
      */
-    @XmlTransient
+    @JsonIgnore
     public ConditionType getConditionType() {
         return conditionType;
     }
@@ -73,7 +74,7 @@ public class Condition implements Serializable {
      *
      * @return the identifier of the associated condition type
      */
-    @XmlElement(name="type")
+    @JsonProperty("type")
     public String getConditionTypeId() {
         return conditionTypeId;
     }
diff --git a/api/src/main/java/org/apache/unomi/api/conditions/ConditionType.java b/api/src/main/java/org/apache/unomi/api/conditions/ConditionType.java
index c8a4322..39188d2 100644
--- a/api/src/main/java/org/apache/unomi/api/conditions/ConditionType.java
+++ b/api/src/main/java/org/apache/unomi/api/conditions/ConditionType.java
@@ -17,11 +17,11 @@
 
 package org.apache.unomi.api.conditions;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.unomi.api.Metadata;
 import org.apache.unomi.api.MetadataItem;
 import org.apache.unomi.api.Parameter;
 
-import javax.xml.bind.annotation.XmlElement;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -113,7 +113,7 @@ public class ConditionType extends MetadataItem  {
      *
      * @return a List of the defined {@link Parameter}s for this ConditionType
      */
-    @XmlElement(name = "parameters")
+    @JsonProperty("parameters")
     public List<Parameter> getParameters() {
         return parameters;
     }
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/converters/UnomiToGraphQLConverter.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/converters/UnomiToGraphQLConverter.java
index 450b30d..1778d11 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/converters/UnomiToGraphQLConverter.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/converters/UnomiToGraphQLConverter.java
@@ -18,6 +18,7 @@
 package org.apache.unomi.graphql.converters;
 
 import graphql.Scalars;
+import graphql.scalars.ExtendedScalars;
 import graphql.schema.GraphQLList;
 import graphql.schema.GraphQLNonNull;
 import graphql.schema.GraphQLType;
@@ -56,7 +57,7 @@ public interface UnomiToGraphQLConverter {
                 graphQLType = Scalars.GraphQLInt;
                 break;
             case "long":
-                graphQLType = Scalars.GraphQLLong;
+                graphQLType = ExtendedScalars.GraphQLLong;
                 break;
             case "float":
                 graphQLType = Scalars.GraphQLFloat;
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/DateFunction.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/DateFunction.java
index 6b24212..5c16ea2 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/DateFunction.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/DateFunction.java
@@ -18,7 +18,9 @@ package org.apache.unomi.graphql.scalars;
 
 import graphql.annotations.processor.ProcessingElementsContainer;
 import graphql.annotations.processor.typeFunctions.TypeFunction;
+import graphql.scalars.ExtendedScalars;
 import graphql.scalars.datetime.DateScalar;
+import graphql.schema.GraphQLScalarType;
 import graphql.schema.GraphQLType;
 
 import java.lang.reflect.AnnotatedType;
@@ -26,14 +28,14 @@ import java.time.LocalDate;
 
 public class DateFunction implements TypeFunction {
 
-    public static final DateScalar DATE_SCALAR = new DateScalar();
+    public static final GraphQLScalarType DATE_SCALAR = ExtendedScalars.Date;
 
     public DateFunction() {
     }
 
     @Override
     public String getTypeName(Class<?> aClass, AnnotatedType annotatedType) {
-        return DATE_SCALAR.getName();
+        return ExtendedScalars.Date.getName();
     }
 
     @Override
@@ -43,7 +45,7 @@ public class DateFunction implements TypeFunction {
 
     @Override
     public GraphQLType buildType(boolean input, Class<?> aClass, AnnotatedType annotatedType, ProcessingElementsContainer container) {
-        return DATE_SCALAR;
+        return ExtendedScalars.Date;
     }
 
 }
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/DateTimeFunction.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/DateTimeFunction.java
index 2bda277..cebd932 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/DateTimeFunction.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/DateTimeFunction.java
@@ -18,7 +18,9 @@ package org.apache.unomi.graphql.scalars;
 
 import graphql.annotations.processor.ProcessingElementsContainer;
 import graphql.annotations.processor.typeFunctions.TypeFunction;
+import graphql.scalars.ExtendedScalars;
 import graphql.scalars.datetime.DateTimeScalar;
+import graphql.schema.GraphQLScalarType;
 import graphql.schema.GraphQLType;
 
 import java.lang.reflect.AnnotatedType;
@@ -26,11 +28,11 @@ import java.time.OffsetDateTime;
 
 public class DateTimeFunction implements TypeFunction {
 
-    public static final DateTimeScalar DATE_TIME_SCALAR = new DateTimeScalar();
+    public static final GraphQLScalarType DATE_TIME_SCALAR = ExtendedScalars.DateTime;
 
     @Override
     public String getTypeName(Class<?> aClass, AnnotatedType annotatedType) {
-        return DATE_TIME_SCALAR.getName();
+        return ExtendedScalars.DateTime.getName();
     }
 
     @Override
@@ -40,7 +42,7 @@ public class DateTimeFunction implements TypeFunction {
 
     @Override
     public GraphQLType buildType(boolean input, Class<?> aClass, AnnotatedType annotatedType, ProcessingElementsContainer container) {
-        return DATE_TIME_SCALAR;
+        return ExtendedScalars.DateTime;
     }
 
 }
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/JSONFunction.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/JSONFunction.java
index b3590b8..a676e3e 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/JSONFunction.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/scalars/JSONFunction.java
@@ -18,14 +18,16 @@ package org.apache.unomi.graphql.scalars;
 
 import graphql.annotations.processor.ProcessingElementsContainer;
 import graphql.annotations.processor.typeFunctions.TypeFunction;
+import graphql.scalars.ExtendedScalars;
 import graphql.scalars.object.JsonScalar;
+import graphql.schema.GraphQLScalarType;
 import graphql.schema.GraphQLType;
 
 import java.lang.reflect.AnnotatedType;
 
 public class JSONFunction implements TypeFunction {
 
-    public static final JsonScalar JSON_SCALAR = new JsonScalar();
+    public static final GraphQLScalarType JSON_SCALAR = ExtendedScalars.Json;
 
     @Override
     public String getTypeName(Class<?> aClass, AnnotatedType annotatedType) {
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyFilterUtils.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyFilterUtils.java
index 436193a..3e02449 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyFilterUtils.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyFilterUtils.java
@@ -18,6 +18,7 @@ package org.apache.unomi.graphql.schema;
 
 import graphql.Scalars;
 import graphql.annotations.processor.GraphQLAnnotations;
+import graphql.scalars.ExtendedScalars;
 import graphql.schema.GraphQLInputObjectField;
 import graphql.schema.GraphQLInputObjectType;
 import graphql.schema.GraphQLInputType;
@@ -74,23 +75,23 @@ public class PropertyFilterUtils {
         } else if ("long".equals(propertyType.getValueTypeId())) {
             fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
                     .name(propertyName + "_equals")
-                    .type(Scalars.GraphQLLong)
+                    .type(ExtendedScalars.GraphQLLong)
                     .build());
             fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
                     .name(propertyName + "_lt")
-                    .type(Scalars.GraphQLLong)
+                    .type(ExtendedScalars.GraphQLLong)
                     .build());
             fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
                     .name(propertyName + "_lte")
-                    .type(Scalars.GraphQLLong)
+                    .type(ExtendedScalars.GraphQLLong)
                     .build());
             fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
                     .name(propertyName + "_gt")
-                    .type(Scalars.GraphQLLong)
+                    .type(ExtendedScalars.GraphQLLong)
                     .build());
             fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
                     .name(propertyName + "_gte")
-                    .type(Scalars.GraphQLLong)
+                    .type(ExtendedScalars.GraphQLLong)
                     .build());
         } else if ("float".equals(propertyType.getValueTypeId())) {
 
@@ -117,7 +118,7 @@ public class PropertyFilterUtils {
         } else if ("date".equals(propertyType.getValueTypeId())) {
             fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
                     .name(propertyName + "_equals")
-                    .type(DateTimeFunction.DATE_TIME_SCALAR)
+                    .type(ExtendedScalars.DateTime)
                     .build());
             fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
                     .name(propertyName + "_lt")
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyValueTypeHelper.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyValueTypeHelper.java
index 797b70d..85ce8b0 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyValueTypeHelper.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyValueTypeHelper.java
@@ -17,6 +17,7 @@
 package org.apache.unomi.graphql.schema;
 
 import graphql.Scalars;
+import graphql.scalars.ExtendedScalars;
 import graphql.schema.DataFetchingEnvironment;
 import graphql.schema.GraphQLInputObjectType;
 import graphql.schema.GraphQLInputType;
@@ -56,10 +57,10 @@ public class PropertyValueTypeHelper {
 
         if (Scalars.GraphQLFloat.getName().equals(scalarType.getName())
                 || Scalars.GraphQLInt.getName().equals(scalarType.getName())
-                || Scalars.GraphQLLong.getName().equals(scalarType.getName())
+                || ExtendedScalars.GraphQLLong.getName().equals(scalarType.getName())
                 || Scalars.GraphQLFloat.getName().equals(scalarType.getName())
-                || Scalars.GraphQLBigDecimal.getName().equals(scalarType.getName())
-                || Scalars.GraphQLBigInteger.getName().equals(scalarType.getName())) {
+                || ExtendedScalars.GraphQLBigDecimal.getName().equals(scalarType.getName())
+                || ExtendedScalars.GraphQLBigInteger.getName().equals(scalarType.getName())) {
             return "propertyValueInteger";
         } else if (DateTimeFunction.DATE_TIME_SCALAR.getName().equals(scalarType.getName())
                 || DateFunction.DATE_SCALAR.getName().equals(scalarType.getName())) {
diff --git a/graphql/karaf-feature/pom.xml b/graphql/karaf-feature/pom.xml
index 07f4478..2a323f9 100644
--- a/graphql/karaf-feature/pom.xml
+++ b/graphql/karaf-feature/pom.xml
@@ -52,12 +52,12 @@
         <dependency>
             <groupId>org.antlr</groupId>
             <artifactId>antlr4-runtime</artifactId>
-            <version>4.7.1</version>
+            <version>4.9.2</version>
         </dependency>
         <dependency>
             <groupId>com.graphql-java</groupId>
             <artifactId>java-dataloader</artifactId>
-            <version>2.2.0</version>
+            <version>3.1.0</version>
         </dependency>
         <dependency>
             <groupId>org.reactivestreams</groupId>
diff --git a/graphql/karaf-feature/src/main/feature/feature.xml b/graphql/karaf-feature/src/main/feature/feature.xml
index 3da9ba9..6fbe9bb 100644
--- a/graphql/karaf-feature/src/main/feature/feature.xml
+++ b/graphql/karaf-feature/src/main/feature/feature.xml
@@ -16,7 +16,7 @@
   ~ limitations under the License.
   -->
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.6.0" name="cdp-graphql-feature">
-    <feature name="cdp-graphql-feature" description="Apache Unomi :: GraphQL API :: Karaf Feature" version="2.0.0.SNAPSHOT">
+    <feature name="cdp-graphql-feature" description="Apache Unomi :: GraphQL API :: Karaf Feature" version="${project.version}">
         <details>Apache Unomi Context GraphQL API Karaf Feature</details>
         <feature>unomi-kar</feature>
         <feature prerequisite="true" dependency="false">wrap</feature>
@@ -28,13 +28,13 @@
         <bundle start-level="80">wrap:mvn:org.codehaus.mojo/animal-sniffer-annotations/1.14</bundle>
         <bundle start-level="80">mvn:commons-fileupload/commons-fileupload/1.3.1</bundle>
         <bundle start-level="80">mvn:commons-io/commons-io/2.4</bundle>
-        <bundle start-level="80">mvn:org.antlr/antlr4-runtime/4.7.1</bundle>
-        <bundle start-level="80">mvn:com.graphql-java/java-dataloader/2.2.0</bundle>
+        <bundle start-level="80">mvn:org.antlr/antlr4-runtime/4.9.2</bundle>
+        <bundle start-level="80">mvn:com.graphql-java/java-dataloader/3.1.0</bundle>
         <bundle start-level="80">mvn:org.reactivestreams/reactive-streams/1.0.2</bundle>
-        <bundle start-level="80">mvn:com.graphql-java/graphql-java/14.0</bundle>
-        <bundle start-level="80">mvn:io.github.graphql-java/graphql-java-annotations/8.0</bundle>
-        <bundle start-level="80">mvn:javax.validation/validation-api/1.1.0.Final</bundle>
-        <bundle start-level="80">wrap:mvn:com.graphql-java/graphql-java-extended-scalars/1.0</bundle>
+        <bundle start-level="80">mvn:com.graphql-java/graphql-java/${graphql.java.version}</bundle>
+        <bundle start-level="80">mvn:io.github.graphql-java/graphql-java-annotations/${graphql.java.annotations.version}</bundle>
+        <bundle start-level="80">mvn:jakarta.validation/jakarta.validation-api/${bean.validation.version}</bundle>
+        <bundle start-level="80">wrap:mvn:com.graphql-java/graphql-java-extended-scalars/${graphql.java.extended.scalars.version}</bundle>
         <bundle start-level="80">wrap:mvn:com.squareup.okhttp3/okhttp/3.2.0</bundle>
         <bundle start-level="80">wrap:mvn:com.squareup.okio/okio/1.6.0</bundle>
         <bundle start-level="80">mvn:io.reactivex.rxjava2/rxjava/2.2.19</bundle>
@@ -52,6 +52,6 @@
         <bundle start-level="80">mvn:org.eclipse.jetty/jetty-security/${jetty.websocket.version}</bundle>
         <bundle start-level="80">mvn:org.eclipse.jetty/jetty-server/${jetty.websocket.version}</bundle>
         <bundle start-level="80">mvn:org.eclipse.jetty/jetty-http/${jetty.websocket.version}</bundle>
-        <bundle start-level="80" start="false">mvn:org.apache.unomi/cdp-graphql-api-impl/2.0.0-SNAPSHOT</bundle>
+        <bundle start-level="80" start="false">mvn:org.apache.unomi/cdp-graphql-api-impl/${project.version}</bundle>
     </feature>
 </features>
diff --git a/graphql/pom.xml b/graphql/pom.xml
index e0d1906..aec3216 100644
--- a/graphql/pom.xml
+++ b/graphql/pom.xml
@@ -32,12 +32,13 @@
     <packaging>pom</packaging>
 
     <properties>
-        <graphql.java.version>14.0</graphql.java.version>
-        <graphql.java.annotations.version>8.0</graphql.java.annotations.version>
-        <graphql.java.extended.scalars.version>1.0</graphql.java.extended.scalars.version>
+        <graphql.java.version>17.1</graphql.java.version>
+        <graphql.java.annotations.version>9.0</graphql.java.annotations.version>
+        <graphql.java.extended.scalars.version>17.0</graphql.java.extended.scalars.version>
         <reactivex.version>2.2.19</reactivex.version>
         <!--jetty.websocket.version>9.4.28.v20200408</jetty.websocket.version-->
-        <jetty.websocket.version>9.4.22.v20191022</jetty.websocket.version>
+        <!--jetty.websocket.version>9.4.22.v20191022</jetty.websocket.version-->
+        <jetty.websocket.version>9.4.38.v20210224</jetty.websocket.version>
     </properties>
 
     <modules>
diff --git a/kar/src/main/feature/feature.xml b/kar/src/main/feature/feature.xml
index 774485c..cd50edb 100644
--- a/kar/src/main/feature/feature.xml
+++ b/kar/src/main/feature/feature.xml
@@ -27,7 +27,7 @@
         <feature>war</feature>
         <feature>cxf-jaxrs</feature>
         <feature>cxf-features-metrics</feature>
-        <feature>cxf-rs-description-openapi-v3</feature>
+        <!--feature>cxf-rs-description-openapi-v3</feature-->
         <feature>cellar</feature>
         <feature>eventadmin</feature>
         <feature>shell-compat</feature>
diff --git a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/CustomObjectMapper.java b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/CustomObjectMapper.java
index 786bbdc..3ec3dbd 100644
--- a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/CustomObjectMapper.java
+++ b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/CustomObjectMapper.java
@@ -47,7 +47,7 @@ public class CustomObjectMapper extends ObjectMapper {
 
     public CustomObjectMapper() {
         super();
-        super.registerModule(new JaxbAnnotationModule());
+        // super.registerModule(new JaxbAnnotationModule());
         configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
         ISO8601DateFormat dateFormat = new ISO8601DateFormat();
         dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
@@ -56,7 +56,7 @@ public class CustomObjectMapper extends ObjectMapper {
                 new SimpleModule("PropertyTypedObjectDeserializerModule",
                         new Version(1, 0, 0, null, "org.apache.unomi.rest", "deserializer"));
 
-        PropertyTypedObjectDeserializer propertyTypedObjectDeserializer = new PropertyTypedObjectDeserializer();
+        PropertyTypedObjectDeserializer propertyTypedObjectDeserializer = new PropertyTypedObjectDeserializer(null, null);
         propertyTypedObjectDeserializer.registerMapping("type=.*Condition", Condition.class);
         deserializerModule.addDeserializer(Object.class, propertyTypedObjectDeserializer);
 
diff --git a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PropertyTypedObjectDeserializer.java b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PropertyTypedObjectDeserializer.java
index 1057654..23a556e 100644
--- a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PropertyTypedObjectDeserializer.java
+++ b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PropertyTypedObjectDeserializer.java
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.core.JsonTokenId;
 import com.fasterxml.jackson.core.ObjectCodec;
 import com.fasterxml.jackson.core.TreeNode;
 import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JavaType;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -37,7 +38,7 @@ import java.util.*;
  *            SimpleModule deserializerModule =
  *                  new SimpleModule("PropertyTypedObjectDeserializerModule",
  *                      new Version(1, 0, 0, null, "org.apache.unomi.rest", "deserializer"));
- *            PropertyTypedObjectDeserializer propertyTypedObjectDeserializer = new PropertyTypedObjectDeserializer();
+ *            PropertyTypedObjectDeserializer propertyTypedObjectDeserializer = new PropertyTypedObjectDeserializer(null, null);
  *            propertyTypedObjectDeserializer.registerMapping("type=.*Condition", Condition.class);
  *            deserializerModule.addDeserializer(Object.class, propertyTypedObjectDeserializer);
  *            objectMapper.registerModule(deserializerModule);
@@ -58,6 +59,10 @@ public class PropertyTypedObjectDeserializer extends UntypedObjectDeserializer {
 
     private Map<String,Set<String>> fieldValuesToMatch = new LinkedHashMap<String,Set<String>>();
 
+    public PropertyTypedObjectDeserializer(JavaType listType, JavaType mapType) {
+        super(listType, mapType);
+    }
+
     public void registerMapping(String matchExpression,
                                 Class<? extends Object> mappedClass) {
         registry.put(matchExpression, mappedClass);
@@ -74,7 +79,7 @@ public class PropertyTypedObjectDeserializer extends UntypedObjectDeserializer {
     public Object deserialize(
             JsonParser jp, DeserializationContext ctxt)
             throws IOException {
-        if (jp.getCurrentTokenId() != JsonTokenId.ID_START_OBJECT) {
+        if (jp.currentTokenId() != JsonTokenId.ID_START_OBJECT) {
             return super.deserialize(jp, ctxt);
         }
         ObjectCodec codec = jp.getCodec();
diff --git a/plugins/kafka-injector/pom.xml b/plugins/kafka-injector/pom.xml
index 772ad0e..a3f6953 100644
--- a/plugins/kafka-injector/pom.xml
+++ b/plugins/kafka-injector/pom.xml
@@ -47,12 +47,12 @@
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-core</artifactId>
-            <version>2.9.8</version>
+            <version>${version.jackson.core}</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
-            <version>2.9.8</version>
+            <version>${version.jackson.databind}</version>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
diff --git a/pom.xml b/pom.xml
index 98c14fa..312f163 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,10 +65,10 @@
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <cxf.version>3.4.4</cxf.version>
-        <version.jackson.core>2.12.4</version.jackson.core>
-        <version.jackson.databind>2.12.4</version.jackson.databind>
-        <version.jackson.jaxb>2.12.4</version.jackson.jaxb>
-        <version.karaf>4.2.8</version.karaf>
+        <version.jackson.core>2.11.1</version.jackson.core>
+        <version.jackson.databind>2.11.1</version.jackson.databind>
+        <version.jackson.jaxb>2.11.1</version.jackson.jaxb>
+        <version.karaf>4.2.11</version.karaf>
         <version.karaf.cellar>4.2.1</version.karaf.cellar>
         <version.pax.exam>4.13.1</version.pax.exam>
         <elasticsearch.version>7.4.2</elasticsearch.version>
diff --git a/rest/pom.xml b/rest/pom.xml
index ad3e9d1..c8804f3 100644
--- a/rest/pom.xml
+++ b/rest/pom.xml
@@ -105,14 +105,78 @@
             <artifactId>commons-lang</artifactId>
             <version>2.6</version>
         </dependency>
+        <!-- CXF OpenAPI dependencies -->
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-rs-service-description-openapi-v3</artifactId>
             <version>${cxf.version}</version>
-            <scope>provided</scope>
+            <!--scope>provided</scope-->
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.validation</groupId>
+                    <artifactId>validation-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-rs-service-description-common-openapi</artifactId>
+            <version>${cxf.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-rs-service-description-swagger-ui</artifactId>
+            <version>${cxf.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger.core.v3</groupId>
+            <artifactId>swagger-jaxrs2</artifactId>
+            <version>2.1.6</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.xml.bind</groupId>
+                    <artifactId>jaxb-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger.core.v3</groupId>
+            <artifactId>swagger-core</artifactId>
+            <version>2.1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger.core.v3</groupId>
+            <artifactId>swagger-models</artifactId>
+            <version>2.1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger.core.v3</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>2.1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger.core.v3</groupId>
+            <artifactId>swagger-integration</artifactId>
+            <version>2.1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>io.github.classgraph</groupId>
+            <artifactId>classgraph</artifactId>
+            <version>4.8.65</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+            <version>${version.jackson.core}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.11</version>
+        </dependency>
+        <!-- End of CXF OpenAPI dependencies -->
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-features-metrics</artifactId>
             <version>${cxf.version}</version>
             <scope>provided</scope>
@@ -157,10 +221,32 @@
         <dependency>
             <groupId>jakarta.validation</groupId>
             <artifactId>jakarta.validation-api</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.hibernate.validator</groupId>
             <artifactId>hibernate-validator</artifactId>
+            <scope>provided</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
+                        <Import-Package>
+                            jdk.internal.misc;resolution:=optional,
+                            *
+                        </Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>