diff --git a/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogAdapter.java b/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogAdapter.java
index 73d23ae5daf0..98277404707d 100644
--- a/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogAdapter.java
+++ b/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogAdapter.java
@@ -20,10 +20,11 @@
package org.apache.iceberg.rest;
import com.google.common.base.Preconditions;
+import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
-import java.util.function.Consumer;
+import javax.servlet.http.HttpServletResponse;
import org.apache.iceberg.BaseTable;
import org.apache.iceberg.BaseTransaction;
import org.apache.iceberg.Table;
@@ -45,7 +46,6 @@
import org.apache.iceberg.exceptions.NoSuchTableException;
import org.apache.iceberg.exceptions.NoSuchViewException;
import org.apache.iceberg.exceptions.NotAuthorizedException;
-import org.apache.iceberg.exceptions.RESTException;
import org.apache.iceberg.exceptions.UnprocessableEntityException;
import org.apache.iceberg.exceptions.ValidationException;
import org.apache.iceberg.relocated.com.google.common.base.Splitter;
@@ -77,7 +77,7 @@
* Original @ RESTCatalogAdapter.java
* Adaptor class to translate REST requests into {@link Catalog} API calls.
*/
-public class HMSCatalogAdapter implements RESTClient {
+public class HMSCatalogAdapter {
private static final Splitter SLASH = Splitter.on('/');
private static final Map, Integer> EXCEPTION_ERROR_CODES =
@@ -493,7 +493,7 @@ T execute(
String path,
Map queryParams,
Object body,
- Consumer errorHandler) {
+ HttpServletResponse response) throws IOException {
ErrorResponse.Builder errorBuilder = ErrorResponse.builder();
Pair> routeAndVars = Route.from(method, path);
if (routeAndVars != null) {
@@ -514,68 +514,9 @@ T execute(
.withMessage(String.format("No route for request: %s %s", method, path));
}
ErrorResponse error = errorBuilder.build();
- errorHandler.accept(error);
- // if the error handler doesn't throw an exception, throw a generic one
- throw new RESTException("Unhandled error: %s", error);
- }
-
- @Override
- public T delete(
- String path,
- Class responseType,
- Map headers,
- Consumer errorHandler) {
- return execute(HTTPMethod.DELETE, path, null, null, errorHandler);
- }
-
- @Override
- public T delete(
- String path,
- Map queryParams,
- Class responseType,
- Map headers,
- Consumer errorHandler) {
- return execute(HTTPMethod.DELETE, path, queryParams, null, errorHandler);
- }
-
- @Override
- public T post(
- String path,
- RESTRequest body,
- Class responseType,
- Map headers,
- Consumer errorHandler) {
- return execute(HTTPMethod.POST, path, null, body, errorHandler);
- }
-
- @Override
- public T get(
- String path,
- Map queryParams,
- Class responseType,
- Map headers,
- Consumer errorHandler) {
- return execute(HTTPMethod.GET, path, queryParams, null, errorHandler);
- }
-
- @Override
- public void head(String path, Map headers, Consumer errorHandler) {
- execute(HTTPMethod.HEAD, path, null, headers, errorHandler);
- }
-
- @Override
- public T postForm(
- String path,
- Map formData,
- Class responseType,
- Map headers,
- Consumer errorHandler) {
- return execute(HTTPMethod.POST, path, null, formData, errorHandler);
- }
-
- @Override
- public void close() {
- // The caller is responsible for closing the underlying catalog backing this REST catalog.
+ response.setStatus(error.code());
+ RESTObjectMapper.mapper().writeValue(response.getWriter(), error);
+ return null;
}
private static class BadResponseType extends RuntimeException {
diff --git a/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogServlet.java b/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogServlet.java
index 6140f40b2de5..f4416279b56f 100644
--- a/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogServlet.java
+++ b/standalone-metastore/metastore-rest-catalog/src/main/java/org/apache/iceberg/rest/HMSCatalogServlet.java
@@ -20,10 +20,8 @@
package org.apache.iceberg.rest;
import java.io.IOException;
-import java.io.UncheckedIOException;
import java.util.Map;
import java.util.Optional;
-import java.util.function.Consumer;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
@@ -77,29 +75,17 @@ protected void service(HttpServletRequest request, HttpServletResponse response)
context.path(),
context.queryParams(),
context.body(),
- handle(response));
+ response);
if (responseBody != null) {
RESTObjectMapper.mapper().writeValue(response.getWriter(), responseBody);
}
} catch (RuntimeException | IOException e) {
- // should be a RESTException but not able to see them through dependencies
LOG.error("Error processing REST request", e);
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
}
- private Consumer handle(HttpServletResponse response) {
- return errorResponse -> {
- response.setStatus(errorResponse.code());
- try {
- RESTObjectMapper.mapper().writeValue(response.getWriter(), errorResponse);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- };
- }
-
public static class ServletRequestContext {
private HTTPMethod method;
private String path;