diff --git a/core/src/main/java/org/apache/iceberg/catalog/TableCommit.java b/core/src/main/java/org/apache/iceberg/catalog/TableCommit.java index a90df56c84f4..26f67a012b8a 100644 --- a/core/src/main/java/org/apache/iceberg/catalog/TableCommit.java +++ b/core/src/main/java/org/apache/iceberg/catalog/TableCommit.java @@ -26,6 +26,12 @@ import org.apache.iceberg.relocated.com.google.common.base.Preconditions; import org.immutables.value.Value; +/** + * This represents a commit to be applied for a single table with {@link UpdateRequirement}s to be + * validated and {@link MetadataUpdate}s that have been applied. The {@link UpdateRequirement}s and + * {@link MetadataUpdate}s can be derived from table's base and updated {@link TableMetadata} when + * using {@link TableCommit#create(TableIdentifier, TableMetadata, TableMetadata)}. + */ @Value.Immutable public interface TableCommit { TableIdentifier identifier(); @@ -34,6 +40,17 @@ public interface TableCommit { List updates(); + /** + * This creates a {@link TableCommit} instance to be applied for a single table with {@link + * UpdateRequirement}s to be validated and {@link MetadataUpdate}s that have been applied. + * + * @param identifier The {@link TableIdentifier} to create the {@link TableCommit} for. + * @param base The base {@link TableMetadata} where {@link UpdateRequirement}s are derived from + * and used for validation. + * @param updated The updated {@link TableMetadata} where {@link MetadataUpdate}s that have been + * applied are derived from. + * @return A {@link TableCommit} instance to be applied for a single table + */ static TableCommit create(TableIdentifier identifier, TableMetadata base, TableMetadata updated) { Preconditions.checkArgument(null != identifier, "Invalid table identifier: null"); Preconditions.checkArgument(null != base && null != updated, "Invalid table metadata: null"); 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 9da4e6e0fbaf..884e35dd6251 100644 --- a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java +++ b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java @@ -926,7 +926,7 @@ public void commitTransaction(SessionContext context, List commits) for (TableCommit commit : commits) { tableChanges.add( - new UpdateTableRequest(commit.identifier(), commit.requirements(), commit.updates())); + UpdateTableRequest.create(commit.identifier(), commit.requirements(), commit.updates())); } client.post( diff --git a/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequest.java b/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequest.java index 3249acfc8f51..088875d472f7 100644 --- a/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequest.java +++ b/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequest.java @@ -48,7 +48,7 @@ public UpdateTableRequest( this.updates = updates; } - public UpdateTableRequest( + UpdateTableRequest( TableIdentifier identifier, List requirements, List updates) { @@ -79,6 +79,13 @@ public String toString() { .toString(); } + public static UpdateTableRequest create( + TableIdentifier identifier, + List requirements, + List updates) { + return new UpdateTableRequest(identifier, requirements, updates); + } + /** * @deprecated will be removed in 1.5.0, use {@link * org.apache.iceberg.UpdateRequirements#forCreateTable(List)} instead. diff --git a/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequestParser.java b/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequestParser.java index 043921f2fa93..e2a8f8b307d1 100644 --- a/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequestParser.java +++ b/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequestParser.java @@ -105,6 +105,6 @@ public static UpdateTableRequest fromJson(JsonNode json) { updatesNode.forEach(update -> updates.add(MetadataUpdateParser.fromJson(update))); } - return new UpdateTableRequest(identifier, requirements, updates); + return UpdateTableRequest.create(identifier, requirements, updates); } } diff --git a/core/src/test/java/org/apache/iceberg/rest/requests/TestCommitTransactionRequestParser.java b/core/src/test/java/org/apache/iceberg/rest/requests/TestCommitTransactionRequestParser.java index 6b61efbf176e..c10e25d6e631 100644 --- a/core/src/test/java/org/apache/iceberg/rest/requests/TestCommitTransactionRequestParser.java +++ b/core/src/test/java/org/apache/iceberg/rest/requests/TestCommitTransactionRequestParser.java @@ -81,7 +81,7 @@ public void invalidTableIdentifier() { public void roundTripSerde() { String uuid = "2cc52516-5e73-41f2-b139-545d41a4e151"; UpdateTableRequest commitTableRequestOne = - new UpdateTableRequest( + UpdateTableRequest.create( TableIdentifier.of("ns1", "table1"), ImmutableList.of( new UpdateRequirement.AssertTableUUID(uuid), @@ -90,7 +90,7 @@ public void roundTripSerde() { new MetadataUpdate.AssignUUID(uuid), new MetadataUpdate.SetCurrentSchema(23))); UpdateTableRequest commitTableRequestTwo = - new UpdateTableRequest( + UpdateTableRequest.create( TableIdentifier.of("ns1", "table2"), ImmutableList.of( new UpdateRequirement.AssertDefaultSpecID(4), @@ -160,7 +160,7 @@ public void emptyRequirementsAndUpdates() { CommitTransactionRequest commitTxRequest = new CommitTransactionRequest( ImmutableList.of( - new UpdateTableRequest( + UpdateTableRequest.create( TableIdentifier.of("ns1", "table1"), ImmutableList.of(), ImmutableList.of()))); String json = diff --git a/core/src/test/java/org/apache/iceberg/rest/requests/TestUpdateTableRequestParser.java b/core/src/test/java/org/apache/iceberg/rest/requests/TestUpdateTableRequestParser.java index 94599f9d1d23..9522801cadd2 100644 --- a/core/src/test/java/org/apache/iceberg/rest/requests/TestUpdateTableRequestParser.java +++ b/core/src/test/java/org/apache/iceberg/rest/requests/TestUpdateTableRequestParser.java @@ -120,7 +120,7 @@ public void invalidMetadataUpdates() { public void roundTripSerde() { String uuid = "2cc52516-5e73-41f2-b139-545d41a4e151"; UpdateTableRequest request = - new UpdateTableRequest( + UpdateTableRequest.create( TableIdentifier.of("ns1", "table1"), ImmutableList.of( new org.apache.iceberg.UpdateRequirement.AssertTableUUID(uuid), @@ -198,7 +198,7 @@ public void roundTripSerdeWithoutIdentifier() { @Test public void emptyRequirementsAndUpdates() { UpdateTableRequest request = - new UpdateTableRequest( + UpdateTableRequest.create( TableIdentifier.of("ns1", "table1"), ImmutableList.of(), ImmutableList.of()); String json =