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());
