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

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


The following commit(s) were added to refs/heads/main by this push:
     new 5fc1413a5e Core: Use encoding/decoding methods for namespaces and 
deprecate Splitter/Joiner (#10858)
5fc1413a5e is described below

commit 5fc1413a5efc4419ccc081f3031325f107ccddab
Author: Eduard Tudenhoefner <[email protected]>
AuthorDate: Mon Aug 5 14:35:07 2024 +0200

    Core: Use encoding/decoding methods for namespaces and deprecate 
Splitter/Joiner (#10858)
---
 .../java/org/apache/iceberg/rest/RESTSessionCatalog.java |  2 +-
 core/src/main/java/org/apache/iceberg/rest/RESTUtil.java | 16 +++++++++++++---
 .../java/org/apache/iceberg/rest/RESTCatalogAdapter.java |  6 +-----
 3 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java 
b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java
index a72d3958c1..1c607e3b02 100644
--- a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java
+++ b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java
@@ -547,7 +547,7 @@ public class RESTSessionCatalog extends 
BaseViewSessionCatalog
   public List<Namespace> listNamespaces(SessionContext context, Namespace 
namespace) {
     Map<String, String> queryParams = Maps.newHashMap();
     if (!namespace.isEmpty()) {
-      queryParams.put("parent", 
RESTUtil.NAMESPACE_JOINER.join(namespace.levels()));
+      queryParams.put("parent", RESTUtil.encodeNamespace(namespace));
     }
 
     ImmutableList.Builder<Namespace> namespaces = ImmutableList.builder();
diff --git a/core/src/main/java/org/apache/iceberg/rest/RESTUtil.java 
b/core/src/main/java/org/apache/iceberg/rest/RESTUtil.java
index fab01162ca..45422b8ae8 100644
--- a/core/src/main/java/org/apache/iceberg/rest/RESTUtil.java
+++ b/core/src/main/java/org/apache/iceberg/rest/RESTUtil.java
@@ -33,14 +33,24 @@ import 
org.apache.iceberg.relocated.com.google.common.collect.Iterables;
 import org.apache.iceberg.relocated.com.google.common.collect.Maps;
 
 public class RESTUtil {
-  private static final char NAMESPACE_SEPARATOR = '\u001f';
-  public static final Joiner NAMESPACE_JOINER = Joiner.on(NAMESPACE_SEPARATOR);
-  public static final Splitter NAMESPACE_SPLITTER = 
Splitter.on(NAMESPACE_SEPARATOR);
   private static final String NAMESPACE_ESCAPED_SEPARATOR = "%1F";
   private static final Joiner NAMESPACE_ESCAPED_JOINER = 
Joiner.on(NAMESPACE_ESCAPED_SEPARATOR);
   private static final Splitter NAMESPACE_ESCAPED_SPLITTER =
       Splitter.on(NAMESPACE_ESCAPED_SEPARATOR);
 
+  /**
+   * @deprecated since 1.7.0, will be made private in 1.8.0; use {@link
+   *     RESTUtil#encodeNamespace(Namespace)} instead.
+   */
+  @Deprecated public static final Joiner NAMESPACE_JOINER = 
Joiner.on(NAMESPACE_ESCAPED_SEPARATOR);
+
+  /**
+   * @deprecated since 1.7.0, will be made private in 1.8.0; use {@link
+   *     RESTUtil#decodeNamespace(String)} instead.
+   */
+  @Deprecated
+  public static final Splitter NAMESPACE_SPLITTER = 
Splitter.on(NAMESPACE_ESCAPED_SEPARATOR);
+
   private RESTUtil() {}
 
   public static String stripTrailingSlash(String path) {
diff --git a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java 
b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java
index 53d57bee51..2c928c06e5 100644
--- a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java
+++ b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java
@@ -288,11 +288,7 @@ public class RESTCatalogAdapter implements RESTClient {
         if (asNamespaceCatalog != null) {
           Namespace ns;
           if (vars.containsKey("parent")) {
-            ns =
-                Namespace.of(
-                    RESTUtil.NAMESPACE_SPLITTER
-                        .splitToStream(vars.get("parent"))
-                        .toArray(String[]::new));
+            ns = RESTUtil.decodeNamespace(vars.get("parent"));
           } else {
             ns = Namespace.empty();
           }

Reply via email to