Skip to content

Commit f9a1a5c

Browse files
authored
Spark: Use builder for CreateGenericTableRequest instead of constructor for easier API spec update (#1546)
1 parent 24683d8 commit f9a1a5c

File tree

5 files changed

+38
-13
lines changed

5 files changed

+38
-13
lines changed

integration-tests/src/main/java/org/apache/polaris/service/it/env/GenericTableApi.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,12 @@ public GenericTable createGenericTable(
8989
"polaris/v1/{cat}/namespaces/{ns}/generic-tables/",
9090
Map.of("cat", catalog, "ns", ns))
9191
.post(
92-
Entity.json(new CreateGenericTableRequest(id.name(), format, "doc", properties)))) {
92+
Entity.json(
93+
CreateGenericTableRequest.builder()
94+
.setName(id.name())
95+
.setFormat(format)
96+
.setDoc("doc")
97+
.setProperties(properties)))) {
9398
return res.readEntity(LoadGenericTableResponse.class).getTable();
9499
}
95100
}

plugins/spark/v3.5/spark/src/main/java/org/apache/polaris/spark/PolarisRESTCatalog.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.apache.iceberg.util.PropertyUtil;
4848
import org.apache.polaris.core.rest.PolarisEndpoints;
4949
import org.apache.polaris.core.rest.PolarisResourcePaths;
50+
import org.apache.polaris.service.types.CreateGenericTableRequest;
5051
import org.apache.polaris.service.types.GenericTable;
5152
import org.apache.polaris.spark.rest.CreateGenericTableRESTRequest;
5253
import org.apache.polaris.spark.rest.LoadGenericTableRESTResponse;
@@ -202,7 +203,13 @@ public GenericTable createGenericTable(
202203
TableIdentifier identifier, String format, String doc, Map<String, String> props) {
203204
Endpoint.check(endpoints, PolarisEndpoints.V1_CREATE_GENERIC_TABLE);
204205
CreateGenericTableRESTRequest request =
205-
new CreateGenericTableRESTRequest(identifier.name(), format, doc, props);
206+
new CreateGenericTableRESTRequest(
207+
CreateGenericTableRequest.builder()
208+
.setName(identifier.name())
209+
.setFormat(format)
210+
.setDoc(doc)
211+
.setProperties(props)
212+
.build());
206213

207214
LoadGenericTableRESTResponse response =
208215
restClient

plugins/spark/v3.5/spark/src/main/java/org/apache/polaris/spark/rest/CreateGenericTableRESTRequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ public CreateGenericTableRESTRequest(
4141
super(name, format, doc, properties);
4242
}
4343

44+
public CreateGenericTableRESTRequest(CreateGenericTableRequest request) {
45+
this(request.getName(), request.getFormat(), request.getDoc(), request.getProperties());
46+
}
47+
4448
@Override
4549
public void validate() {}
4650
}

plugins/spark/v3.5/spark/src/test/java/org/apache/polaris/spark/rest/DeserializationTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.apache.iceberg.catalog.Namespace;
3737
import org.apache.iceberg.catalog.TableIdentifier;
3838
import org.apache.iceberg.rest.RESTSerializers;
39+
import org.apache.polaris.service.types.CreateGenericTableRequest;
3940
import org.apache.polaris.service.types.GenericTable;
4041
import org.junit.jupiter.api.BeforeEach;
4142
import org.junit.jupiter.api.Test;
@@ -90,7 +91,13 @@ public void testLoadGenericTableRESTResponse(String doc, Map<String, String> pro
9091
public void testCreateGenericTableRESTRequest(String doc, Map<String, String> properties)
9192
throws JsonProcessingException {
9293
CreateGenericTableRESTRequest request =
93-
new CreateGenericTableRESTRequest("test-table", "delta", doc, properties);
94+
new CreateGenericTableRESTRequest(
95+
CreateGenericTableRequest.builder()
96+
.setName("test-table")
97+
.setFormat("delta")
98+
.setDoc(doc)
99+
.setProperties(properties)
100+
.build());
94101
String json = mapper.writeValueAsString(request);
95102
CreateGenericTableRESTRequest deserializedRequest =
96103
mapper.readValue(json, CreateGenericTableRESTRequest.class);

service/common/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogHandler.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,12 @@ public LoadGenericTableResponse createGenericTable(
7575
GenericTableEntity createdEntity =
7676
this.genericTableCatalog.createGenericTable(identifier, format, doc, properties);
7777
GenericTable createdTable =
78-
new GenericTable(
79-
createdEntity.getName(),
80-
createdEntity.getFormat(),
81-
createdEntity.getDoc(),
82-
createdEntity.getPropertiesAsMap());
78+
GenericTable.builder()
79+
.setName(createdEntity.getName())
80+
.setFormat(createdEntity.getFormat())
81+
.setDoc(createdEntity.getDoc())
82+
.setProperties(createdEntity.getPropertiesAsMap())
83+
.build();
8384

8485
return LoadGenericTableResponse.builder().setTable(createdTable).build();
8586
}
@@ -97,11 +98,12 @@ public LoadGenericTableResponse loadGenericTable(TableIdentifier identifier) {
9798

9899
GenericTableEntity loadedEntity = this.genericTableCatalog.loadGenericTable(identifier);
99100
GenericTable loadedTable =
100-
new GenericTable(
101-
loadedEntity.getName(),
102-
loadedEntity.getFormat(),
103-
loadedEntity.getDoc(),
104-
loadedEntity.getPropertiesAsMap());
101+
GenericTable.builder()
102+
.setName(loadedEntity.getName())
103+
.setFormat(loadedEntity.getFormat())
104+
.setDoc(loadedEntity.getDoc())
105+
.setProperties(loadedEntity.getPropertiesAsMap())
106+
.build();
105107

106108
return LoadGenericTableResponse.builder().setTable(loadedTable).build();
107109
}

0 commit comments

Comments
 (0)