1717 * under the License.
1818 */
1919
20- #include " iceberg/catalog/rest/validator .h"
20+ #include " iceberg/catalog/rest/types .h"
2121
2222#include < algorithm>
2323#include < format>
2424
25- #include " iceberg/catalog/rest/types.h"
2625#include " iceberg/result.h"
26+ #include " iceberg/table_identifier.h"
2727#include " iceberg/util/formatter_internal.h"
2828#include " iceberg/util/macros.h"
2929
3030namespace iceberg ::rest {
3131
3232// Configuration and Error types
3333
34- Status Validator ::Validate (const CatalogConfig& config) {
34+ Status CatalogConfig ::Validate () const {
3535 // TODO(Li Feiyang): Add an invalidEndpoint test that validates endpoint format.
3636 // See:
3737 // https://github.com/apache/iceberg/blob/main/core/src/test/java/org/apache/iceberg/rest/responses/TestConfigResponseParser.java#L164
3838 // for reference.
3939 return {};
4040}
4141
42- Status Validator ::Validate (const ErrorModel& error) {
43- if (error. message .empty () || error. type .empty ()) {
42+ Status ErrorModel ::Validate () const {
43+ if (message.empty () || type.empty ()) {
4444 return Invalid (" Invalid error model: missing required fields" );
4545 }
4646
47- if (error. code < 400 || error. code > 600 ) {
48- return Invalid (" Invalid error model: code {} is out of range [400, 600]" , error. code );
47+ if (code < 400 || code > 600 ) {
48+ return Invalid (" Invalid error model: code {} is out of range [400, 600]" , code);
4949 }
5050
5151 // stack is optional, no validation needed
@@ -54,21 +54,21 @@ Status Validator::Validate(const ErrorModel& error) {
5454
5555// We don't validate the error field because ErrorModel::Validate has been called in the
5656// FromJson.
57- Status Validator ::Validate (const ErrorResponse& response) { return {}; }
57+ Status ErrorResponse ::Validate () const { return {}; }
5858
5959// Namespace operations
6060
61- Status Validator ::Validate (const ListNamespacesResponse& response) { return {}; }
61+ Status ListNamespacesResponse ::Validate () const { return {}; }
6262
63- Status Validator ::Validate (const CreateNamespaceRequest& request) { return {}; }
63+ Status CreateNamespaceRequest ::Validate () const { return {}; }
6464
65- Status Validator ::Validate (const CreateNamespaceResponse& response) { return {}; }
65+ Status CreateNamespaceResponse ::Validate () const { return {}; }
6666
67- Status Validator ::Validate (const GetNamespaceResponse& response) { return {}; }
67+ Status GetNamespaceResponse ::Validate () const { return {}; }
6868
69- Status Validator ::Validate (const UpdateNamespacePropertiesRequest& request) {
69+ Status UpdateNamespacePropertiesRequest ::Validate () const {
7070 // keys in updates and removals must not overlap
71- if (request. removals .empty () || request. updates .empty ()) {
71+ if (removals.empty () || updates.empty ()) {
7272 return {};
7373 }
7474
@@ -83,9 +83,9 @@ Status Validator::Validate(const UpdateNamespacePropertiesRequest& request) {
8383 };
8484
8585 auto sorted_removals =
86- extract_and_sort (request. removals , [](const auto & s) -> const auto & { return s; });
86+ extract_and_sort (removals, [](const auto & s) -> const auto & { return s; });
8787 auto sorted_update_keys = extract_and_sort (
88- request. updates , [](const auto & pair) -> const auto & { return pair.first ; });
88+ updates, [](const auto & pair) -> const auto & { return pair.first ; });
8989
9090 std::vector<std::string_view> common;
9191 std::ranges::set_intersection (sorted_removals, sorted_update_keys,
@@ -99,43 +99,34 @@ Status Validator::Validate(const UpdateNamespacePropertiesRequest& request) {
9999 return {};
100100}
101101
102- Status Validator::Validate (const UpdateNamespacePropertiesResponse& response) {
103- return {};
104- }
102+ Status UpdateNamespacePropertiesResponse::Validate () const { return {}; }
105103
106104// Table operations
107105
108- Status Validator ::Validate (const ListTablesResponse& response) { return {}; }
106+ Status ListTablesResponse ::Validate () const { return {}; }
109107
110- Status Validator ::Validate (const LoadTableResult& result) {
111- if (!result. metadata ) {
108+ Status LoadTableResult ::Validate () const {
109+ if (!metadata) {
112110 return Invalid (" Invalid metadata: null" );
113111 }
114112 return {};
115113}
116114
117- Status Validator ::Validate (const RegisterTableRequest& request) {
118- if (request. name .empty ()) {
115+ Status RegisterTableRequest ::Validate () const {
116+ if (name.empty ()) {
119117 return Invalid (" Missing table name" );
120118 }
121119
122- if (request. metadata_location .empty ()) {
120+ if (metadata_location.empty ()) {
123121 return Invalid (" Empty metadata location" );
124122 }
125123
126124 return {};
127125}
128126
129- Status Validator::Validate (const RenameTableRequest& request) {
130- ICEBERG_RETURN_UNEXPECTED (Validate (request.source ));
131- ICEBERG_RETURN_UNEXPECTED (Validate (request.destination ));
132- return {};
133- }
134-
135- Status Validator::Validate (const TableIdentifier& identifier) {
136- if (identifier.name .empty ()) {
137- return Invalid (" Invalid table identifier: missing table name" );
138- }
127+ Status RenameTableRequest::Validate () const {
128+ ICEBERG_RETURN_UNEXPECTED (source.Validate ());
129+ ICEBERG_RETURN_UNEXPECTED (destination.Validate ());
139130 return {};
140131}
141132
0 commit comments