diff --git a/integration-tests/src/main/java/org/apache/polaris/service/it/env/GenericTableApi.java b/integration-tests/src/main/java/org/apache/polaris/service/it/env/GenericTableApi.java index 52935a8dcd..a31fd0cd2b 100644 --- a/integration-tests/src/main/java/org/apache/polaris/service/it/env/GenericTableApi.java +++ b/integration-tests/src/main/java/org/apache/polaris/service/it/env/GenericTableApi.java @@ -89,7 +89,12 @@ public GenericTable createGenericTable( "polaris/v1/{cat}/namespaces/{ns}/generic-tables/", Map.of("cat", catalog, "ns", ns)) .post( - Entity.json(new CreateGenericTableRequest(id.name(), format, "doc", properties)))) { + Entity.json( + CreateGenericTableRequest.builder() + .setName(id.name()) + .setFormat(format) + .setDoc("doc") + .setProperties(properties)))) { return res.readEntity(LoadGenericTableResponse.class).getTable(); } } diff --git a/plugins/spark/v3.5/spark/src/main/java/org/apache/polaris/spark/PolarisRESTCatalog.java b/plugins/spark/v3.5/spark/src/main/java/org/apache/polaris/spark/PolarisRESTCatalog.java index 72d258511b..05a95d8573 100644 --- a/plugins/spark/v3.5/spark/src/main/java/org/apache/polaris/spark/PolarisRESTCatalog.java +++ b/plugins/spark/v3.5/spark/src/main/java/org/apache/polaris/spark/PolarisRESTCatalog.java @@ -47,6 +47,7 @@ import org.apache.iceberg.util.PropertyUtil; import org.apache.polaris.core.rest.PolarisEndpoints; import org.apache.polaris.core.rest.PolarisResourcePaths; +import org.apache.polaris.service.types.CreateGenericTableRequest; import org.apache.polaris.service.types.GenericTable; import org.apache.polaris.spark.rest.CreateGenericTableRESTRequest; import org.apache.polaris.spark.rest.LoadGenericTableRESTResponse; @@ -202,7 +203,13 @@ public GenericTable createGenericTable( TableIdentifier identifier, String format, String doc, Map props) { Endpoint.check(endpoints, PolarisEndpoints.V1_CREATE_GENERIC_TABLE); CreateGenericTableRESTRequest request = - new CreateGenericTableRESTRequest(identifier.name(), format, doc, props); + new CreateGenericTableRESTRequest( + CreateGenericTableRequest.builder() + .setName(identifier.name()) + .setFormat(format) + .setDoc(doc) + .setProperties(props) + .build()); LoadGenericTableRESTResponse response = restClient diff --git a/plugins/spark/v3.5/spark/src/main/java/org/apache/polaris/spark/rest/CreateGenericTableRESTRequest.java b/plugins/spark/v3.5/spark/src/main/java/org/apache/polaris/spark/rest/CreateGenericTableRESTRequest.java index 4ec348a80a..6a9c89a5ff 100644 --- a/plugins/spark/v3.5/spark/src/main/java/org/apache/polaris/spark/rest/CreateGenericTableRESTRequest.java +++ b/plugins/spark/v3.5/spark/src/main/java/org/apache/polaris/spark/rest/CreateGenericTableRESTRequest.java @@ -41,6 +41,10 @@ public CreateGenericTableRESTRequest( super(name, format, doc, properties); } + public CreateGenericTableRESTRequest(CreateGenericTableRequest request) { + this(request.getName(), request.getFormat(), request.getDoc(), request.getProperties()); + } + @Override public void validate() {} } diff --git a/plugins/spark/v3.5/spark/src/test/java/org/apache/polaris/spark/rest/DeserializationTest.java b/plugins/spark/v3.5/spark/src/test/java/org/apache/polaris/spark/rest/DeserializationTest.java index e6747e6531..3ec9ddbdf3 100644 --- a/plugins/spark/v3.5/spark/src/test/java/org/apache/polaris/spark/rest/DeserializationTest.java +++ b/plugins/spark/v3.5/spark/src/test/java/org/apache/polaris/spark/rest/DeserializationTest.java @@ -36,6 +36,7 @@ import org.apache.iceberg.catalog.Namespace; import org.apache.iceberg.catalog.TableIdentifier; import org.apache.iceberg.rest.RESTSerializers; +import org.apache.polaris.service.types.CreateGenericTableRequest; import org.apache.polaris.service.types.GenericTable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -90,7 +91,13 @@ public void testLoadGenericTableRESTResponse(String doc, Map pro public void testCreateGenericTableRESTRequest(String doc, Map properties) throws JsonProcessingException { CreateGenericTableRESTRequest request = - new CreateGenericTableRESTRequest("test-table", "delta", doc, properties); + new CreateGenericTableRESTRequest( + CreateGenericTableRequest.builder() + .setName("test-table") + .setFormat("delta") + .setDoc(doc) + .setProperties(properties) + .build()); String json = mapper.writeValueAsString(request); CreateGenericTableRESTRequest deserializedRequest = mapper.readValue(json, CreateGenericTableRESTRequest.class); diff --git a/service/common/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogHandler.java b/service/common/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogHandler.java index 7f6d48cc69..126023c2b2 100644 --- a/service/common/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogHandler.java +++ b/service/common/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogHandler.java @@ -75,11 +75,12 @@ public LoadGenericTableResponse createGenericTable( GenericTableEntity createdEntity = this.genericTableCatalog.createGenericTable(identifier, format, doc, properties); GenericTable createdTable = - new GenericTable( - createdEntity.getName(), - createdEntity.getFormat(), - createdEntity.getDoc(), - createdEntity.getPropertiesAsMap()); + GenericTable.builder() + .setName(createdEntity.getName()) + .setFormat(createdEntity.getFormat()) + .setDoc(createdEntity.getDoc()) + .setProperties(createdEntity.getPropertiesAsMap()) + .build(); return LoadGenericTableResponse.builder().setTable(createdTable).build(); } @@ -97,11 +98,12 @@ public LoadGenericTableResponse loadGenericTable(TableIdentifier identifier) { GenericTableEntity loadedEntity = this.genericTableCatalog.loadGenericTable(identifier); GenericTable loadedTable = - new GenericTable( - loadedEntity.getName(), - loadedEntity.getFormat(), - loadedEntity.getDoc(), - loadedEntity.getPropertiesAsMap()); + GenericTable.builder() + .setName(loadedEntity.getName()) + .setFormat(loadedEntity.getFormat()) + .setDoc(loadedEntity.getDoc()) + .setProperties(loadedEntity.getPropertiesAsMap()) + .build(); return LoadGenericTableResponse.builder().setTable(loadedTable).build(); }