software.amazon.glue.requests.CreateNamespaceRequest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of glue-catalog-extensions-for-iceberg Show documentation
Show all versions of glue-catalog-extensions-for-iceberg Show documentation
AWS Glue Catalog Extensions for Apache Iceberg
The newest version!
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package software.amazon.glue.requests;
import java.util.Map;
import java.util.Objects;
import org.apache.iceberg.catalog.Namespace;
import org.apache.iceberg.relocated.com.google.common.base.MoreObjects;
import org.apache.iceberg.relocated.com.google.common.base.Preconditions;
import org.apache.iceberg.relocated.com.google.common.collect.ImmutableMap;
import org.apache.iceberg.relocated.com.google.common.collect.Maps;
import software.amazon.glue.GlueRequest;
public class CreateNamespaceRequest implements GlueRequest {
private Namespace namespace;
private Map properties;
public CreateNamespaceRequest() {
// Needed for Jackson Deserialization.
}
private CreateNamespaceRequest(Namespace namespace, Map properties) {
this.namespace = namespace;
this.properties = properties;
validate();
}
@Override
public void validate() {
Preconditions.checkArgument(namespace != null, "Invalid namespace: null");
}
public Namespace namespace() {
return namespace;
}
public Map properties() {
return properties != null ? properties : ImmutableMap.of();
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("namespace", namespace)
.add("properties", properties)
.toString();
}
public static Builder builder() {
return new Builder();
}
public static class Builder {
private Namespace namespace;
private final ImmutableMap.Builder properties = ImmutableMap.builder();
private Builder() {}
public Builder withNamespace(Namespace ns) {
Preconditions.checkNotNull(ns, "Invalid namespace: null");
this.namespace = ns;
return this;
}
public Builder setProperties(Map props) {
Preconditions.checkNotNull(props, "Invalid collection of properties: null");
Preconditions.checkArgument(!props.containsKey(null), "Invalid property: null");
Preconditions.checkArgument(
!props.containsValue(null),
"Invalid value for properties %s: null",
Maps.filterValues(props, Objects::isNull).keySet());
properties.putAll(props);
return this;
}
public CreateNamespaceRequest build() {
return new CreateNamespaceRequest(namespace, properties.build());
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy