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

dimas pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/main by this push:
     new a07ea0126 Remove BaseMetaStoreManager.serializeProperties (#2374)
a07ea0126 is described below

commit a07ea01260687d70592bfee18bb4500dfe4bcb22
Author: Christopher Lambert <xn...@gmx.de>
AuthorDate: Tue Aug 19 17:43:55 2025 +0200

    Remove BaseMetaStoreManager.serializeProperties (#2374)
    
    similar to 7af85be7f45c933a377314a669e2a16633c93532 we should prefer
    the existing helper methods on the entity instead
---
 .../AtomicOperationMetaStoreManager.java           | 26 ++++------------
 .../core/persistence/BaseMetaStoreManager.java     | 35 ----------------------
 .../TransactionalMetaStoreManagerImpl.java         | 26 ++++------------
 3 files changed, 10 insertions(+), 77 deletions(-)

diff --git 
a/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java
 
b/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java
index c52e9273f..8af4c654d 100644
--- 
a/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java
+++ 
b/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java
@@ -252,7 +252,7 @@ public class AtomicOperationMetaStoreManager extends 
BaseMetaStoreManager {
     // if it is a principal, we also need to drop the secrets
     if (entity.getType() == PolarisEntityType.PRINCIPAL) {
       // get internal properties
-      Map<String, String> properties = 
this.deserializeProperties(entity.getInternalProperties());
+      Map<String, String> properties = entity.getInternalPropertiesAsMap();
 
       // get client_id
       String clientId = 
properties.get(PolarisEntityConstants.getClientIdPropertyName());
@@ -432,7 +432,7 @@ public class AtomicOperationMetaStoreManager extends 
BaseMetaStoreManager {
     // validate input
     callCtx.getDiagServices().checkNotNull(catalog, "unexpected_null_catalog");
 
-    Map<String, String> internalProp = getInternalPropertyMap(catalog);
+    Map<String, String> internalProp = catalog.getInternalPropertiesAsMap();
     String integrationIdentifierOrId =
         
internalProp.get(PolarisEntityConstants.getStorageIntegrationIdentifierPropertyName());
     String storageConfigInfoStr =
@@ -751,8 +751,7 @@ public class AtomicOperationMetaStoreManager extends 
BaseMetaStoreManager {
               principal);
 
       // get internal properties
-      Map<String, String> properties =
-          this.deserializeProperties(refreshPrincipal.getInternalProperties());
+      Map<String, String> properties = 
refreshPrincipal.getInternalPropertiesAsMap();
 
       // get client_id
       String clientId = 
properties.get(PolarisEntityConstants.getClientIdPropertyName());
@@ -798,14 +797,14 @@ public class AtomicOperationMetaStoreManager extends 
BaseMetaStoreManager {
             .generateNewPrincipalSecrets(callCtx, principal.getName(), 
principal.getId());
 
     // generate properties
-    Map<String, String> internalProperties = getInternalPropertyMap(principal);
+    Map<String, String> internalProperties = 
principal.getInternalPropertiesAsMap();
     internalProperties.put(
         PolarisEntityConstants.getClientIdPropertyName(), 
principalSecrets.getPrincipalClientId());
 
     // remember client id
     PolarisBaseEntity updatedPrincipal =
         new PolarisBaseEntity.Builder(principal)
-            .internalProperties(this.serializeProperties(internalProperties))
+            .internalPropertiesAsMap(internalProperties)
             .build();
     // now create and persist new catalog entity
     EntityResult lowLevelResult = this.persistNewEntity(callCtx, ms, 
updatedPrincipal);
@@ -1616,21 +1615,6 @@ public class AtomicOperationMetaStoreManager extends 
BaseMetaStoreManager {
     }
   }
 
-  /**
-   * Get the internal property map for an entity
-   *
-   * @param entity the target entity
-   * @return a map of string representing the internal properties
-   */
-  public Map<String, String> getInternalPropertyMap(@Nonnull PolarisBaseEntity 
entity) {
-    String internalPropStr = entity.getInternalProperties();
-    Map<String, String> res = new HashMap<>();
-    if (internalPropStr == null) {
-      return res;
-    }
-    return deserializeProperties(internalPropStr);
-  }
-
   /** {@inheritDoc} */
   @Override
   public @Nonnull ResolvedEntityResult loadResolvedEntityById(
diff --git 
a/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java
 
b/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java
index a56eeda3d..6fb8448d1 100644
--- 
a/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java
+++ 
b/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java
@@ -18,9 +18,6 @@
  */
 package org.apache.polaris.core.persistence;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import jakarta.annotation.Nonnull;
 import java.util.Map;
 import org.apache.polaris.core.PolarisCallContext;
@@ -34,8 +31,6 @@ import 
org.apache.polaris.core.storage.PolarisStorageConfigurationInfo;
 
 /** Shared basic PolarisMetaStoreManager logic for transactional and 
non-transactional impls. */
 public abstract class BaseMetaStoreManager implements PolarisMetaStoreManager {
-  /** mapper, allows to serialize/deserialize properties to/from JSON */
-  private static final ObjectMapper MAPPER = new ObjectMapper();
 
   public static PolarisStorageConfigurationInfo extractStorageConfiguration(
       @Nonnull PolarisDiagnostics diagnostics, PolarisBaseEntity 
reloadedEntity) {
@@ -52,36 +47,6 @@ public abstract class BaseMetaStoreManager implements 
PolarisMetaStoreManager {
     return PolarisStorageConfigurationInfo.deserialize(storageConfigInfoStr);
   }
 
-  /**
-   * Given the internal property as a map of key/value pairs, serialize it to 
a String
-   *
-   * @param properties a map of key/value pairs
-   * @return a String, the JSON representation of the map
-   */
-  public String serializeProperties(Map<String, String> properties) {
-    try {
-      // Deserialize the JSON string to a Map<String, String>
-      return MAPPER.writeValueAsString(properties);
-    } catch (JsonProcessingException ex) {
-      throw new RuntimeException("serializeProperties failed: " + 
ex.getMessage(), ex);
-    }
-  }
-
-  /**
-   * Given the serialized properties, deserialize those to a {@code 
Map<String, String>}
-   *
-   * @param properties a JSON string representing the set of properties
-   * @return a Map of string
-   */
-  public Map<String, String> deserializeProperties(String properties) {
-    try {
-      // Deserialize the JSON string to a Map<String, String>
-      return MAPPER.readValue(properties, new TypeReference<>() {});
-    } catch (JsonProcessingException ex) {
-      throw new RuntimeException("deserializeProperties failed: " + 
ex.getMessage(), ex);
-    }
-  }
-
   /**
    * Performs basic validation of expected invariants on a new entity, then 
returns the entity with
    * fields filled out for which the persistence layer is responsible.
diff --git 
a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java
 
b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java
index 7e1a4ce45..ee202d3ca 100644
--- 
a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java
+++ 
b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java
@@ -240,7 +240,7 @@ public class TransactionalMetaStoreManagerImpl extends 
BaseMetaStoreManager {
     // if it is a principal, we also need to drop the secrets
     if (entity.getType() == PolarisEntityType.PRINCIPAL) {
       // get internal properties
-      Map<String, String> properties = 
this.deserializeProperties(entity.getInternalProperties());
+      Map<String, String> properties = entity.getInternalPropertiesAsMap();
 
       // get client_id
       String clientId = 
properties.get(PolarisEntityConstants.getClientIdPropertyName());
@@ -743,8 +743,7 @@ public class TransactionalMetaStoreManagerImpl extends 
BaseMetaStoreManager {
           principal);
 
       // get internal properties
-      Map<String, String> properties =
-          this.deserializeProperties(refreshPrincipal.getInternalProperties());
+      Map<String, String> properties = 
refreshPrincipal.getInternalPropertiesAsMap();
 
       // get client_id
       String clientId = 
properties.get(PolarisEntityConstants.getClientIdPropertyName());
@@ -792,14 +791,14 @@ public class TransactionalMetaStoreManagerImpl extends 
BaseMetaStoreManager {
         ms.generateNewPrincipalSecretsInCurrentTxn(callCtx, 
principal.getName(), principal.getId());
 
     // generate properties
-    Map<String, String> internalProperties = getInternalPropertyMap(principal);
+    Map<String, String> internalProperties = 
principal.getInternalPropertiesAsMap();
     internalProperties.put(
         PolarisEntityConstants.getClientIdPropertyName(), 
principalSecrets.getPrincipalClientId());
 
     // remember client id
     PolarisBaseEntity updatedPrincipal =
         new PolarisBaseEntity.Builder(principal)
-            .internalProperties(this.serializeProperties(internalProperties))
+            .internalPropertiesAsMap(internalProperties)
             .build();
 
     // now create and persist new catalog entity
@@ -926,7 +925,7 @@ public class TransactionalMetaStoreManagerImpl extends 
BaseMetaStoreManager {
     // get metastore we should be using
     TransactionalPersistence ms = ((TransactionalPersistence) 
callCtx.getMetaStore());
 
-    Map<String, String> internalProp = getInternalPropertyMap(catalog);
+    Map<String, String> internalProp = catalog.getInternalPropertiesAsMap();
     String integrationIdentifierOrId =
         
internalProp.get(PolarisEntityConstants.getStorageIntegrationIdentifierPropertyName());
     String storageConfigInfoStr =
@@ -2017,21 +2016,6 @@ public class TransactionalMetaStoreManagerImpl extends 
BaseMetaStoreManager {
     }
   }
 
-  /**
-   * Get the internal property map for an entity
-   *
-   * @param entity the target entity
-   * @return a map of string representing the internal properties
-   */
-  public Map<String, String> getInternalPropertyMap(@Nonnull PolarisBaseEntity 
entity) {
-    String internalPropStr = entity.getInternalProperties();
-    Map<String, String> res = new HashMap<>();
-    if (internalPropStr == null) {
-      return res;
-    }
-    return deserializeProperties(internalPropStr);
-  }
-
   /** {@link #loadResolvedEntityById(PolarisCallContext, long, long, 
PolarisEntityType)} */
   private @Nonnull ResolvedEntityResult loadResolvedEntityById(
       @Nonnull PolarisCallContext callCtx,

Reply via email to