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

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

commit 072144a4b06c955290659b540ea30eccd9845644
Author: Serge Huber <[email protected]>
AuthorDate: Wed Jan 21 15:10:04 2026 +0100

    UNOMI-139 : feat(persistence): extend CustomObjectMapper with additional 
item type mappings
    
    - Add item type mappings for ApiKey, Tenant, Patch, PropertyType, 
ClusterNode
    - Add item type mappings for ScheduledTask, RuleStatistics, Scope, 
PersonaSession, UserList
    - Update OpenSearch minimal cluster state from GREEN to YELLOW for better 
production compatibility
    - Add json-schema-shell-commands bundle to unomi-shell-dev-commands feature
---
 kar/src/main/feature/feature.xml                     |  1 +
 .../src/main/resources/etc/custom.system.properties  |  2 +-
 .../unomi/persistence/spi/CustomObjectMapper.java    | 20 ++++++++++++++++++++
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/kar/src/main/feature/feature.xml b/kar/src/main/feature/feature.xml
index d7c3aace7..0798bc419 100644
--- a/kar/src/main/feature/feature.xml
+++ b/kar/src/main/feature/feature.xml
@@ -207,6 +207,7 @@
     <feature name="unomi-shell-dev-commands" description="Apache Unomi :: 
Shell Dev Commands" version="${project.version}">
         <feature>unomi-services</feature>
         <bundle 
start="false">mvn:org.apache.unomi/shell-dev-commands/${project.version}</bundle>
+        <bundle 
start="false">mvn:org.apache.unomi/unomi-json-schema-shell-commands/${project.version}</bundle>
     </feature>
 
     <feature name="unomi-wab" description="Apache Unomi :: WAB" 
version="${project.version}">
diff --git a/package/src/main/resources/etc/custom.system.properties 
b/package/src/main/resources/etc/custom.system.properties
index 582686180..f6385658b 100644
--- a/package/src/main/resources/etc/custom.system.properties
+++ b/package/src/main/resources/etc/custom.system.properties
@@ -220,7 +220,7 @@ 
org.apache.unomi.opensearch.username=${env:UNOMI_OPENSEARCH_USERNAME:-admin}
 org.apache.unomi.opensearch.password=${env:UNOMI_OPENSEARCH_PASSWORD:-}
 org.apache.unomi.opensearch.sslEnable=${env:UNOMI_OPENSEARCH_SSL_ENABLE:-true}
 
org.apache.unomi.opensearch.sslTrustAllCertificates=${env:UNOMI_OPENSEARCH_SSL_TRUST_ALL_CERTIFICATES:-true}
-org.apache.unomi.opensearch.minimalClusterState=${env:UNOMI_OPENSEARCH_MINIMAL_CLUSTER_STATE:-GREEN}
+org.apache.unomi.opensearch.minimalClusterState=${env:UNOMI_OPENSEARCH_MINIMAL_CLUSTER_STATE:-YELLOW}
 
 
#######################################################################################################################
 ## Service settings                                                            
                                      ##
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 c5b91a7a6..c7d894e5d 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
@@ -36,6 +36,16 @@ import org.apache.unomi.api.goals.Goal;
 import org.apache.unomi.api.rules.Rule;
 import org.apache.unomi.api.segments.Scoring;
 import org.apache.unomi.api.segments.Segment;
+import org.apache.unomi.api.tenants.ApiKey;
+import org.apache.unomi.api.tenants.Tenant;
+import org.apache.unomi.api.Patch;
+import org.apache.unomi.api.PropertyType;
+import org.apache.unomi.api.ClusterNode;
+import org.apache.unomi.api.tasks.ScheduledTask;
+import org.apache.unomi.api.rules.RuleStatistics;
+import org.apache.unomi.api.Scope;
+import org.apache.unomi.api.PersonaSession;
+import org.apache.unomi.api.lists.UserList;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -95,6 +105,16 @@ public class CustomObjectMapper extends ObjectMapper {
         builtinItemTypeClasses.put(ActionType.ITEM_TYPE, ActionType.class);
         builtinItemTypeClasses.put(Topic.ITEM_TYPE, Topic.class);
         builtinItemTypeClasses.put(ProfileAlias.ITEM_TYPE, ProfileAlias.class);
+        builtinItemTypeClasses.put(ApiKey.ITEM_TYPE, ApiKey.class);
+        builtinItemTypeClasses.put(Tenant.ITEM_TYPE, Tenant.class);
+        builtinItemTypeClasses.put(Patch.ITEM_TYPE, Patch.class);
+        builtinItemTypeClasses.put(PropertyType.ITEM_TYPE, PropertyType.class);
+        builtinItemTypeClasses.put(ClusterNode.ITEM_TYPE, ClusterNode.class);
+        builtinItemTypeClasses.put(ScheduledTask.ITEM_TYPE, 
ScheduledTask.class);
+        builtinItemTypeClasses.put(RuleStatistics.ITEM_TYPE, 
RuleStatistics.class);
+        builtinItemTypeClasses.put(Scope.ITEM_TYPE, Scope.class);
+        builtinItemTypeClasses.put(PersonaSession.ITEM_TYPE, 
PersonaSession.class);
+        builtinItemTypeClasses.put(UserList.ITEM_TYPE, UserList.class);
         for (Map.Entry<String, Class<? extends Item>> entry : 
builtinItemTypeClasses.entrySet()) {
             propertyTypedObjectDeserializer.registerMapping("itemType=" + 
entry.getKey(), entry.getValue());
             itemDeserializer.registerMapping(entry.getKey(), entry.getValue());

Reply via email to