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

difin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 6730aadd189 HIVE-29750: Iceberg: Move Iceberg REST catalog client code 
to a new m… (#6620)
6730aadd189 is described below

commit 6730aadd1895690b653f3c2260ce5328b61af1ae
Author: Dmitriy Fingerman <[email protected]>
AuthorDate: Fri Jul 24 16:13:15 2026 -0400

    HIVE-29750: Iceberg: Move Iceberg REST catalog client code to a new m… 
(#6620)
    
    * HIVE-29750: Iceberg: Move Iceberg REST catalog client code to a new module
    
    ---------
    
    Co-authored-by: Dmitriy Fingerman <[email protected]>
    Co-authored-by: Dmitriy Fingerman <[email protected]>
---
 .../iceberg/hive/IcebergCatalogProperties.java     | 15 ----
 iceberg/iceberg-handler/pom.xml                    | 13 ++++
 .../mr/hive/IcebergVendedCredentialUtil.java       |  5 +-
 .../positive/iceberg_rest_catalog_gravitino.q      |  2 +-
 .../queries/positive/iceberg_rest_catalog_hms.q    |  2 +-
 iceberg/iceberg-rest-catalog-client/pom.xml        | 87 ++++++++++++++++++++++
 .../rest/catalog}/RestAccessDelegationMode.java    |  7 +-
 .../rest/catalog/RestCatalogAccessDelegation.java  | 50 +++++++++++++
 .../catalog}/client/HiveRESTCatalogClient.java     |  2 +-
 .../catalog}/TestRestAccessDelegationMode.java     |  7 +-
 .../catalog}/client/TestHiveRESTCatalogClient.java |  2 +-
 iceberg/pom.xml                                    |  6 ++
 itests/hive-iceberg/pom.xml                        |  2 +-
 .../hive/TestHiveRESTCatalogClientITBase.java      |  2 +-
 ...bergRESTCatalogGravitinoLlapLocalCliDriver.java |  7 +-
 ...estIcebergRESTCatalogHMSLlapLocalCliDriver.java |  2 +-
 .../src/docker/thirdparties/gravitino/README.md    |  2 +-
 .../thirdparties/gravitino/hive/hive-site.xml      |  2 +-
 .../src/docker/thirdparties/polaris/README.md      |  2 +-
 .../docker/thirdparties/polaris/hive/hive-site.xml |  2 +-
 packaging/src/main/assembly/src.xml                |  1 +
 21 files changed, 181 insertions(+), 39 deletions(-)

diff --git 
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/IcebergCatalogProperties.java
 
b/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/IcebergCatalogProperties.java
index 6d7f047c05d..424f8e10c35 100644
--- 
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/IcebergCatalogProperties.java
+++ 
b/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/IcebergCatalogProperties.java
@@ -27,7 +27,6 @@
 import org.apache.hadoop.hive.metastore.conf.MetastoreConf;
 import org.apache.iceberg.CatalogProperties;
 import org.apache.iceberg.CatalogUtil;
-import org.apache.iceberg.hive.client.RestAccessDelegationMode;
 import org.apache.iceberg.relocated.com.google.common.collect.Maps;
 
 public class IcebergCatalogProperties {
@@ -39,7 +38,6 @@ public class IcebergCatalogProperties {
   public static final String ICEBERG_HADOOP_TABLE_NAME = 
"location_based_table";
   public static final String ICEBERG_DEFAULT_CATALOG_NAME = "default_iceberg";
   public static final String NO_CATALOG_TYPE = "no catalog";
-  public static final String REST_ACCESS_DELEGATION_HEADER_PROPERTY = 
"header.X-Iceberg-Access-Delegation";
 
   private IcebergCatalogProperties() {
 
@@ -106,19 +104,6 @@ public static String catalogPropertyConfigKey(String 
catalogName, String catalog
     return String.format("%s%s.%s", CATALOG_CONFIG_PREFIX, catalogName, 
catalogProperty);
   }
 
-  /**
-   * Returns true when the catalog is configured to request REST vended 
storage credentials via
-   * {@link #REST_ACCESS_DELEGATION_HEADER_PROPERTY}.
-   */
-  public static boolean requestsVendedCredentials(String catalogName, 
Configuration conf) {
-    if (conf == null || StringUtils.isEmpty(catalogName)) {
-      return false;
-    }
-    String headerValue =
-        conf.get(catalogPropertyConfigKey(catalogName, 
REST_ACCESS_DELEGATION_HEADER_PROPERTY));
-    return 
RestAccessDelegationMode.headerRequestsVendedCredentials(headerValue);
-  }
-
   /**
    * Return the catalog type based on the catalog name.
    * <p>
diff --git a/iceberg/iceberg-handler/pom.xml b/iceberg/iceberg-handler/pom.xml
index f00415ecbe2..bb8ba4cf105 100644
--- a/iceberg/iceberg-handler/pom.xml
+++ b/iceberg/iceberg-handler/pom.xml
@@ -34,6 +34,11 @@
       <artifactId>hive-iceberg-catalog</artifactId>
       <optional>true</optional>
     </dependency>
+    <dependency>
+      <groupId>org.apache.hive</groupId>
+      <artifactId>hive-iceberg-rest-catalog-client</artifactId>
+      <optional>true</optional>
+    </dependency>
     <dependency>
       <!-- compile-time only, for S3FileIOProperties/AwsClientProperties 
string constants
            (inlined by javac); the classes are not referenced at runtime -->
@@ -181,6 +186,14 @@
                   <overWrite>true</overWrite>
                   
<outputDirectory>${project.build.directory}/classes</outputDirectory>
                 </artifactItem>
+                <artifactItem>
+                  <groupId>org.apache.hive</groupId>
+                  <artifactId>hive-iceberg-rest-catalog-client</artifactId>
+                  <version>${project.version}</version>
+                  <type>jar</type>
+                  <overWrite>true</overWrite>
+                  
<outputDirectory>${project.build.directory}/classes</outputDirectory>
+                </artifactItem>
               </artifactItems>
             </configuration>
           </execution>
diff --git 
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergVendedCredentialUtil.java
 
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergVendedCredentialUtil.java
index 8d110f40f70..95bfd2f9623 100644
--- 
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergVendedCredentialUtil.java
+++ 
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergVendedCredentialUtil.java
@@ -42,6 +42,7 @@
 import org.apache.iceberg.aws.s3.S3FileIOProperties;
 import org.apache.iceberg.exceptions.NoSuchTableException;
 import org.apache.iceberg.hive.IcebergCatalogProperties;
+import org.apache.iceberg.hive.rest.catalog.RestCatalogAccessDelegation;
 import org.apache.iceberg.io.FileIO;
 import org.apache.iceberg.io.StorageCredential;
 import org.apache.iceberg.io.SupportsStorageCredentials;
@@ -214,7 +215,7 @@ public static void applyFromJobConf(Table table, String 
catalogName, Configurati
    */
   private static boolean shouldSkipApplyFromJobConf(String tableName, String 
catalogName, Configuration conf) {
     return 
StringUtils.isBlank(conf.get(InputFormatConfig.vendedCredentialsKey(tableName)))
 &&
-        !IcebergCatalogProperties.requestsVendedCredentials(catalogName, conf);
+        !RestCatalogAccessDelegation.requestsVendedCredentials(catalogName, 
conf);
   }
 
   /**
@@ -247,7 +248,7 @@ static boolean requestsVendedCredentials(Properties 
properties, Configuration co
     if (properties == null) {
       return false;
     }
-    return IcebergCatalogProperties.requestsVendedCredentials(
+    return RestCatalogAccessDelegation.requestsVendedCredentials(
         properties.getProperty(InputFormatConfig.CATALOG_NAME), configuration);
   }
 
diff --git 
a/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_gravitino.q
 
b/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_gravitino.q
index 66d11bbd870..0f20a0b5e08 100644
--- 
a/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_gravitino.q
+++ 
b/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_gravitino.q
@@ -25,7 +25,7 @@
 --! 
qt:replace:/(\S\"iceberg-version\\\":\\\")(\w+\s\w+\s\d+\.\d+\.\d+\s\(\w+\s\w+\))(\\\")/$1#Masked#$3/
 
 set hive.stats.autogather=false;
-set metastore.client.impl=org.apache.iceberg.hive.client.HiveRESTCatalogClient;
+set 
metastore.client.impl=org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient;
 set metastore.catalog.default=ice01;
 set iceberg.catalog.ice01.type=rest;
 set 
iceberg.catalog.ice01.header.X-Iceberg-Access-Delegation=vended-credentials;
diff --git 
a/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_hms.q 
b/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_hms.q
index a1d8cb6b905..a09141faf44 100644
--- 
a/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_hms.q
+++ 
b/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_hms.q
@@ -21,7 +21,7 @@
 --! 
qt:replace:/(\S\"iceberg-version\\\":\\\")(\w+\s\w+\s\d+\.\d+\.\d+\s\(\w+\s\w+\))(\\\")/$1#Masked#$3/
 
 set hive.stats.autogather=false;
-set metastore.client.impl=org.apache.iceberg.hive.client.HiveRESTCatalogClient;
+set 
metastore.client.impl=org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient;
 set metastore.catalog.default=ice01;
 set iceberg.catalog.ice01.type=rest;
 
diff --git a/iceberg/iceberg-rest-catalog-client/pom.xml 
b/iceberg/iceberg-rest-catalog-client/pom.xml
new file mode 100644
index 00000000000..a72898f4429
--- /dev/null
+++ b/iceberg/iceberg-rest-catalog-client/pom.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <parent>
+    <groupId>org.apache.hive</groupId>
+    <artifactId>hive-iceberg</artifactId>
+    <version>4.3.0-SNAPSHOT</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>hive-iceberg-rest-catalog-client</artifactId>
+  <packaging>jar</packaging>
+  <name>Hive Iceberg REST Catalog Client</name>
+  <properties>
+    <hive.path.to.root>../..</hive.path.to.root>
+    <path.to.iceberg.root>..</path.to.iceberg.root>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.hive</groupId>
+      <artifactId>hive-iceberg-shading</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hive</groupId>
+      <artifactId>hive-iceberg-catalog</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hive</groupId>
+      <artifactId>hive-standalone-metastore-client</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-client</artifactId>
+    </dependency>
+    <!-- test dependencies -->
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-params</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.vintage</groupId>
+      <artifactId>junit-vintage-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hive</groupId>
+      <artifactId>hive-iceberg-catalog</artifactId>
+      <classifier>tests</classifier>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.iceberg</groupId>
+      <artifactId>iceberg-core</artifactId>
+      <classifier>tests</classifier>
+      <scope>test</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.iceberg</groupId>
+          <artifactId>iceberg-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+  </dependencies>
+</project>
diff --git 
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/RestAccessDelegationMode.java
 
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestAccessDelegationMode.java
similarity index 90%
rename from 
iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/RestAccessDelegationMode.java
rename to 
iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestAccessDelegationMode.java
index dd2d435a9b0..d26608d7396 100644
--- 
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/RestAccessDelegationMode.java
+++ 
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestAccessDelegationMode.java
@@ -17,17 +17,16 @@
  * under the License.
  */
 
-package org.apache.iceberg.hive.client;
+package org.apache.iceberg.hive.rest.catalog;
 
 import java.util.Arrays;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.iceberg.hive.IcebergCatalogProperties;
 
 /**
  * Values for the Iceberg REST catalog {@code X-Iceberg-Access-Delegation} 
request header. The header
  * accepts a comma-separated list of these modes; configure via
- * {@link IcebergCatalogProperties#REST_ACCESS_DELEGATION_HEADER_PROPERTY}.
+ * {@link RestCatalogAccessDelegation#ACCESS_DELEGATION_PROPERTY}.
  *
  * @see <a 
href="https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml";>REST
 catalog spec</a>
  */
@@ -46,7 +45,7 @@ public String modeName() {
     return modeName;
   }
 
-  /** Comma-separated list suitable for {@link 
IcebergCatalogProperties#REST_ACCESS_DELEGATION_HEADER_PROPERTY}. */
+  /** Comma-separated list suitable for {@link 
RestCatalogAccessDelegation#ACCESS_DELEGATION_PROPERTY}. */
   public static String toHeaderValue(RestAccessDelegationMode... modes) {
     return 
Arrays.stream(modes).map(RestAccessDelegationMode::modeName).collect(Collectors.joining(","));
   }
diff --git 
a/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestCatalogAccessDelegation.java
 
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestCatalogAccessDelegation.java
new file mode 100644
index 00000000000..f0916994695
--- /dev/null
+++ 
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestCatalogAccessDelegation.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iceberg.hive.rest.catalog;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.iceberg.hive.IcebergCatalogProperties;
+
+/**
+ * Utilities for Iceberg REST catalog access delegation, including the {@code 
X-Iceberg-Access-Delegation}
+ * catalog property and vended-credential configuration.
+ */
+public final class RestCatalogAccessDelegation {
+
+  /** Iceberg REST catalog property prefix for {@code 
X-Iceberg-Access-Delegation}. */
+  public static final String ACCESS_DELEGATION_PROPERTY = 
"header.X-Iceberg-Access-Delegation";
+
+  private RestCatalogAccessDelegation() {
+  }
+
+  /**
+   * Returns true when the catalog is configured to request REST vended 
storage credentials via
+   * {@link #ACCESS_DELEGATION_PROPERTY}.
+   */
+  public static boolean requestsVendedCredentials(String catalogName, 
Configuration conf) {
+    if (conf == null || StringUtils.isEmpty(catalogName)) {
+      return false;
+    }
+    String headerValue =
+        
conf.get(IcebergCatalogProperties.catalogPropertyConfigKey(catalogName, 
ACCESS_DELEGATION_PROPERTY));
+    return 
RestAccessDelegationMode.headerRequestsVendedCredentials(headerValue);
+  }
+}
diff --git 
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/HiveRESTCatalogClient.java
 
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/client/HiveRESTCatalogClient.java
similarity index 99%
rename from 
iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/HiveRESTCatalogClient.java
rename to 
iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/client/HiveRESTCatalogClient.java
index 30f9e7dcb46..68f84b585c2 100644
--- 
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/HiveRESTCatalogClient.java
+++ 
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/client/HiveRESTCatalogClient.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.iceberg.hive.client;
+package org.apache.iceberg.hive.rest.catalog.client;
 
 import java.io.IOException;
 import java.util.Collections;
diff --git 
a/iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestRestAccessDelegationMode.java
 
b/iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/TestRestAccessDelegationMode.java
similarity index 90%
rename from 
iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestRestAccessDelegationMode.java
rename to 
iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/TestRestAccessDelegationMode.java
index dce5106b5cf..1c3e7c0fb87 100644
--- 
a/iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestRestAccessDelegationMode.java
+++ 
b/iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/TestRestAccessDelegationMode.java
@@ -17,9 +17,8 @@
  * under the License.
  */
 
-package org.apache.iceberg.hive.client;
+package org.apache.iceberg.hive.rest.catalog;
 
-import org.apache.iceberg.hive.IcebergCatalogProperties;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -65,11 +64,11 @@ void headerRequestsVendedCredentials() {
   @Test
   void requestsVendedCredentialsFromConfiguration() {
     org.apache.hadoop.conf.Configuration conf = new 
org.apache.hadoop.conf.Configuration();
-    assertThat(IcebergCatalogProperties.requestsVendedCredentials("ice01", 
conf)).isFalse();
+    assertThat(RestCatalogAccessDelegation.requestsVendedCredentials("ice01", 
conf)).isFalse();
 
     conf.set(
         "iceberg.catalog.ice01.header.X-Iceberg-Access-Delegation",
         RestAccessDelegationMode.VENDED_CREDENTIALS.modeName());
-    assertThat(IcebergCatalogProperties.requestsVendedCredentials("ice01", 
conf)).isTrue();
+    assertThat(RestCatalogAccessDelegation.requestsVendedCredentials("ice01", 
conf)).isTrue();
   }
 }
diff --git 
a/iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestHiveRESTCatalogClient.java
 
b/iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/client/TestHiveRESTCatalogClient.java
similarity index 99%
rename from 
iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestHiveRESTCatalogClient.java
rename to 
iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/client/TestHiveRESTCatalogClient.java
index 4f21f46b2e2..653aed54815 100644
--- 
a/iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestHiveRESTCatalogClient.java
+++ 
b/iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/client/TestHiveRESTCatalogClient.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.iceberg.hive.client;
+package org.apache.iceberg.hive.rest.catalog.client;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iceberg/pom.xml b/iceberg/pom.xml
index 02001e15901..a41eddaf719 100644
--- a/iceberg/pom.xml
+++ b/iceberg/pom.xml
@@ -41,6 +41,7 @@
     <module>patched-iceberg-core</module>
     <module>iceberg-shading</module>
     <module>iceberg-catalog</module>
+    <module>iceberg-rest-catalog-client</module>
     <module>iceberg-handler</module>
   </modules>
   <dependencies>
@@ -98,6 +99,11 @@
         <artifactId>hive-iceberg-catalog</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.hive</groupId>
+        <artifactId>hive-iceberg-rest-catalog-client</artifactId>
+        <version>${project.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.apache.hive</groupId>
         <artifactId>hive-iceberg-shading</artifactId>
diff --git a/itests/hive-iceberg/pom.xml b/itests/hive-iceberg/pom.xml
index fca0b1e4d8f..2766a1cdf5b 100644
--- a/itests/hive-iceberg/pom.xml
+++ b/itests/hive-iceberg/pom.xml
@@ -64,7 +64,7 @@
     </dependency>
     <dependency>
       <groupId>org.apache.hive</groupId>
-      <artifactId>hive-iceberg-catalog</artifactId>
+      <artifactId>hive-iceberg-rest-catalog-client</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
diff --git 
a/itests/hive-iceberg/src/test/java/org/apache/hive/TestHiveRESTCatalogClientITBase.java
 
b/itests/hive-iceberg/src/test/java/org/apache/hive/TestHiveRESTCatalogClientITBase.java
index 03885a54e1c..69e0df80e24 100644
--- 
a/itests/hive-iceberg/src/test/java/org/apache/hive/TestHiveRESTCatalogClientITBase.java
+++ 
b/itests/hive-iceberg/src/test/java/org/apache/hive/TestHiveRESTCatalogClientITBase.java
@@ -92,7 +92,7 @@ public void setupConf() {
     conf = restCatalogExtension.getConf();
 
     MetastoreConf.setVar(conf, MetastoreConf.ConfVars.METASTORE_CLIENT_IMPL,
-        "org.apache.iceberg.hive.client.HiveRESTCatalogClient");
+        "org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient");
     conf.set(MetastoreConf.ConfVars.CATALOG_DEFAULT.getVarname(), 
CATALOG_NAME);
     conf.set(REST_CATALOG_PREFIX + "uri", 
restCatalogExtension.getRestEndpoint());
     conf.set(REST_CATALOG_PREFIX + "type", 
CatalogUtil.ICEBERG_CATALOG_TYPE_REST);
diff --git 
a/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogGravitinoLlapLocalCliDriver.java
 
b/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogGravitinoLlapLocalCliDriver.java
index 4c04578e244..7aaa59475f1 100644
--- 
a/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogGravitinoLlapLocalCliDriver.java
+++ 
b/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogGravitinoLlapLocalCliDriver.java
@@ -28,8 +28,9 @@
 import org.apache.iceberg.aws.AwsClientProperties;
 import org.apache.iceberg.aws.s3.S3FileIOProperties;
 import org.apache.iceberg.hive.IcebergCatalogProperties;
-import org.apache.iceberg.hive.client.RestAccessDelegationMode;
-import org.apache.iceberg.hive.client.HiveRESTCatalogClient;
+import org.apache.iceberg.hive.rest.catalog.RestAccessDelegationMode;
+import org.apache.iceberg.hive.rest.catalog.RestCatalogAccessDelegation;
+import org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient;
 import org.apache.iceberg.rest.extension.OAuth2AuthorizationServer;
 import org.junit.After;
 import org.junit.Before;
@@ -149,7 +150,7 @@ public void setup() throws Exception {
     conf.set(restCatalogPrefix + "oauth2-server-uri", 
oAuth2AuthorizationServer.getTokenEndpoint());
     conf.set(restCatalogPrefix + "credential", 
oAuth2AuthorizationServer.getClientCredential());
     conf.set(
-        restCatalogPrefix + 
IcebergCatalogProperties.REST_ACCESS_DELEGATION_HEADER_PROPERTY,
+        restCatalogPrefix + 
RestCatalogAccessDelegation.ACCESS_DELEGATION_PROPERTY,
         RestAccessDelegationMode.VENDED_CREDENTIALS.modeName());
 
     applyHostS3FilesystemSettings(conf);
diff --git 
a/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogHMSLlapLocalCliDriver.java
 
b/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogHMSLlapLocalCliDriver.java
index 429661e390f..8589624921d 100644
--- 
a/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogHMSLlapLocalCliDriver.java
+++ 
b/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogHMSLlapLocalCliDriver.java
@@ -80,7 +80,7 @@ public void setupHiveConfig() {
 
     Configuration conf = SessionState.get().getConf();
     MetastoreConf.setVar(conf, MetastoreConf.ConfVars.METASTORE_CLIENT_IMPL,
-        "org.apache.iceberg.hive.client.HiveRESTCatalogClient");
+        "org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient");
     MetastoreConf.setVar(conf, MetastoreConf.ConfVars.CATALOG_DEFAULT, 
CATALOG_NAME);
     conf.set(restCatalogPrefix + "uri", 
REST_CATALOG_EXTENSION.getRestEndpoint());
     conf.set(restCatalogPrefix + "type", 
CatalogUtil.ICEBERG_CATALOG_TYPE_REST);
diff --git a/packaging/src/docker/thirdparties/gravitino/README.md 
b/packaging/src/docker/thirdparties/gravitino/README.md
index d97c5725eeb..bf4013a598c 100644
--- a/packaging/src/docker/thirdparties/gravitino/README.md
+++ b/packaging/src/docker/thirdparties/gravitino/README.md
@@ -193,7 +193,7 @@ docker-compose down -v
     
     <property>
       <name>metastore.client.impl</name>
-      <value>org.apache.iceberg.hive.client.HiveRESTCatalogClient</value>
+      
<value>org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient</value>
       <description>Specifies the client implementation to use for accessing 
Iceberg via REST.</description>
     </property>
     
diff --git a/packaging/src/docker/thirdparties/gravitino/hive/hive-site.xml 
b/packaging/src/docker/thirdparties/gravitino/hive/hive-site.xml
index 59e07cbe643..1130fa1fd78 100644
--- a/packaging/src/docker/thirdparties/gravitino/hive/hive-site.xml
+++ b/packaging/src/docker/thirdparties/gravitino/hive/hive-site.xml
@@ -90,7 +90,7 @@
 
   <property>
     <name>metastore.client.impl</name>
-    <value>org.apache.iceberg.hive.client.HiveRESTCatalogClient</value>
+    
<value>org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient</value>
   </property>
 
   <property>
diff --git a/packaging/src/docker/thirdparties/polaris/README.md 
b/packaging/src/docker/thirdparties/polaris/README.md
index f3305ac1990..642b7faa6d8 100644
--- a/packaging/src/docker/thirdparties/polaris/README.md
+++ b/packaging/src/docker/thirdparties/polaris/README.md
@@ -124,7 +124,7 @@ docker-compose down -v
     
     <property>
       <name>metastore.client.impl</name>
-      <value>org.apache.iceberg.hive.client.HiveRESTCatalogClient</value>
+      
<value>org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient</value>
       <description>Specifies the client implementation to use for accessing 
Iceberg via REST.</description>
     </property>
     
diff --git a/packaging/src/docker/thirdparties/polaris/hive/hive-site.xml 
b/packaging/src/docker/thirdparties/polaris/hive/hive-site.xml
index df952937757..8b8e28b603a 100644
--- a/packaging/src/docker/thirdparties/polaris/hive/hive-site.xml
+++ b/packaging/src/docker/thirdparties/polaris/hive/hive-site.xml
@@ -90,7 +90,7 @@
 
   <property>
     <name>metastore.client.impl</name>
-    <value>org.apache.iceberg.hive.client.HiveRESTCatalogClient</value>
+    
<value>org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient</value>
   </property>
 
   <property>
diff --git a/packaging/src/main/assembly/src.xml 
b/packaging/src/main/assembly/src.xml
index 4dc658e1871..06bb00afdf0 100644
--- a/packaging/src/main/assembly/src.xml
+++ b/packaging/src/main/assembly/src.xml
@@ -119,6 +119,7 @@
         <include>parser/**/*</include>
         <include>udf/**/*</include>
         <include>iceberg/iceberg-catalog/**/*</include>
+        <include>iceberg/iceberg-rest-catalog-client/**/*</include>
         <include>iceberg/iceberg-handler/**/*</include>
         <include>iceberg/iceberg-shading/**/*</include>
         <include>iceberg/patched-iceberg-api/**/*</include>

Reply via email to