Skip to content

Commit

Permalink
Restructure base args (minio#971)
Browse files Browse the repository at this point in the history
  • Loading branch information
balamurugana authored Jun 8, 2020
1 parent 377213e commit 6ce2f28
Show file tree
Hide file tree
Showing 27 changed files with 115 additions and 111 deletions.
10 changes: 8 additions & 2 deletions api/src/main/java/io/minio/BaseArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,25 @@ protected void validateNotEmptyString(String arg, String argName) {
}
}

protected void validateNullOrNotEmptyString(String arg, String argName) {
if (arg != null && arg.isEmpty()) {
throw new IllegalArgumentException(argName + " must be a non-empty string.");
}
}

public Builder() {
this.operations = new ArrayList<>();
}

private Multimap<String, String> copyMultimap(Multimap<String, String> multimap) {
protected Multimap<String, String> copyMultimap(Multimap<String, String> multimap) {
Multimap<String, String> multimapCopy = HashMultimap.create();
if (multimap != null) {
multimapCopy.putAll(multimap);
}
return Multimaps.unmodifiableMultimap(multimapCopy);
}

private Multimap<String, String> toMultimap(Map<String, String> map) {
protected Multimap<String, String> toMultimap(Map<String, String> map) {
Multimap<String, String> multimap = HashMultimap.create();
if (map != null) {
multimap.putAll(Multimaps.forMap(map));
Expand Down
15 changes: 5 additions & 10 deletions api/src/main/java/io/minio/BucketArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,8 @@ public String region() {
/** Base argument builder class for {@link BucketArgs}. */
public abstract static class Builder<B extends Builder<B, A>, A extends BucketArgs>
extends BaseArgs.Builder<B, A> {
private void validateName(String name) {
if (name == null) {
throw new IllegalArgumentException("null bucket name");
}
protected void validateBucketName(String name) {
validateNotNull(name, "bucket name");

// Bucket names cannot be no less than 3 and no more than 63 characters long.
if (name.length() < 3 || name.length() > 63) {
Expand All @@ -59,20 +57,17 @@ private void validateName(String name) {
}

private void validateRegion(String region) {
if (region != null && region.isEmpty()) {
throw new IllegalArgumentException("region cannot be empty");
}
validateNullOrNotEmptyString(region, "region");
}

@Override
protected void validate(A args) {
validateName(args.bucketName);
validateRegion(args.region);
validateBucketName(args.bucketName);
}

@SuppressWarnings("unchecked") // Its safe to type cast to B as B extends this class.
public B bucket(String name) {
validateName(name);
validateBucketName(name);
operations.add(args -> args.bucketName = name);
return (B) this;
}
Expand Down
5 changes: 3 additions & 2 deletions api/src/main/java/io/minio/DeleteObjectTagsArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@
package io.minio;

/** Argument class of MinioClient.deleteObjectTags(). */
public class DeleteObjectTagsArgs extends ObjectArgs {
public class DeleteObjectTagsArgs extends ObjectVersionArgs {
public static Builder builder() {
return new Builder();
}

/** Argument builder of {@link DeleteObjectTagsArgs}. */
public static final class Builder extends ObjectArgs.Builder<Builder, DeleteObjectTagsArgs> {}
public static final class Builder
extends ObjectVersionArgs.Builder<Builder, DeleteObjectTagsArgs> {}
}
4 changes: 2 additions & 2 deletions api/src/main/java/io/minio/DisableObjectLegalHoldArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
package io.minio;

/** Argument class of MinioClient.disableObjectLegalHold(). */
public class DisableObjectLegalHoldArgs extends ObjectArgs {
public class DisableObjectLegalHoldArgs extends ObjectVersionArgs {
public static Builder builder() {
return new Builder();
}

/** Argument builder of {@link DisableObjectLegalHoldArgs}. */
public static final class Builder
extends ObjectArgs.Builder<Builder, DisableObjectLegalHoldArgs> {}
extends ObjectVersionArgs.Builder<Builder, DisableObjectLegalHoldArgs> {}
}
12 changes: 3 additions & 9 deletions api/src/main/java/io/minio/DownloadObjectArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;

public class DownloadObjectArgs extends SsecObjectArgs {
public class DownloadObjectArgs extends ObjectReadArgs {
private String fileName;

public String fileName() {
Expand All @@ -31,21 +31,15 @@ public static Builder builder() {
return new Builder();
}

public static final class Builder extends SsecObjectArgs.Builder<Builder, DownloadObjectArgs> {
public static final class Builder extends ObjectReadArgs.Builder<Builder, DownloadObjectArgs> {
public Builder fileName(String fileName) {
validateFileName(fileName);
operations.add(args -> args.fileName = fileName);
return this;
}

private void validateFileName(String fileName) {
if (fileName == null) {
return;
}

if (fileName.isEmpty()) {
throw new IllegalArgumentException("filename should be either null or non-empty");
}
validateNotEmptyString(fileName, "filename");

Path filePath = Paths.get(fileName);
boolean fileExists = Files.exists(filePath);
Expand Down
4 changes: 2 additions & 2 deletions api/src/main/java/io/minio/EnableObjectLegalHoldArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
package io.minio;

/** Argument class of MinioClient.enableObjectLegalHold(). */
public class EnableObjectLegalHoldArgs extends ObjectArgs {
public class EnableObjectLegalHoldArgs extends ObjectVersionArgs {
public static Builder builder() {
return new Builder();
}

/** Argument builder of {@link EnableObjectLegalHoldArgs}. */
public static final class Builder
extends ObjectArgs.Builder<Builder, EnableObjectLegalHoldArgs> {}
extends ObjectVersionArgs.Builder<Builder, EnableObjectLegalHoldArgs> {}
}
4 changes: 2 additions & 2 deletions api/src/main/java/io/minio/GetObjectArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package io.minio;

public class GetObjectArgs extends SsecObjectArgs {
public class GetObjectArgs extends ObjectReadArgs {
private Long offset;
private Long length;

Expand All @@ -32,7 +32,7 @@ public static Builder builder() {
return new Builder();
}

public static final class Builder extends SsecObjectArgs.Builder<Builder, GetObjectArgs> {
public static final class Builder extends ObjectReadArgs.Builder<Builder, GetObjectArgs> {
public Builder offset(Long offset) {
validateOffset(offset);
operations.add(args -> args.offset = offset);
Expand Down
5 changes: 3 additions & 2 deletions api/src/main/java/io/minio/GetObjectRetentionArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@
package io.minio;

/** Argument class of MinioClient.getObjectRetention(). */
public class GetObjectRetentionArgs extends ObjectArgs {
public class GetObjectRetentionArgs extends ObjectVersionArgs {
public static Builder builder() {
return new Builder();
}

/** Argument builder of {@link GetObjectRetentionArgs}. */
public static final class Builder extends ObjectArgs.Builder<Builder, GetObjectRetentionArgs> {}
public static final class Builder
extends ObjectVersionArgs.Builder<Builder, GetObjectRetentionArgs> {}
}
4 changes: 2 additions & 2 deletions api/src/main/java/io/minio/GetObjectTagsArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
package io.minio;

/** Argument class of MinioClient.getObjectTags(). */
public class GetObjectTagsArgs extends ObjectArgs {
public class GetObjectTagsArgs extends ObjectVersionArgs {
public static Builder builder() {
return new Builder();
}

/** Argument builder of {@link GetObjectTagsArgs}. */
public static final class Builder extends ObjectArgs.Builder<Builder, GetObjectTagsArgs> {}
public static final class Builder extends ObjectVersionArgs.Builder<Builder, GetObjectTagsArgs> {}
}
5 changes: 3 additions & 2 deletions api/src/main/java/io/minio/GetPresignedObjectUrlArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import java.util.concurrent.TimeUnit;

/** Argument class of MinioClient.getPresignedObjectUrl(). */
public class GetPresignedObjectUrlArgs extends ObjectArgs {
public class GetPresignedObjectUrlArgs extends ObjectVersionArgs {
// default expiration for a presigned URL is 7 days in seconds
public static final int DEFAULT_EXPIRY_TIME = (int) TimeUnit.DAYS.toSeconds(7);

Expand All @@ -40,7 +40,8 @@ public static Builder builder() {
}

/** Argument builder of {@link GetPresignedObjectUrlArgs}. */
public static final class Builder extends ObjectArgs.Builder<Builder, GetPresignedObjectUrlArgs> {
public static final class Builder
extends ObjectVersionArgs.Builder<Builder, GetPresignedObjectUrlArgs> {
private void validateMethod(Method method) {
validateNotNull(method, "method");
}
Expand Down
4 changes: 2 additions & 2 deletions api/src/main/java/io/minio/IsObjectLegalHoldEnabledArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
package io.minio;

/** Argument class of MinioClient.isObjectLegalHoldEnabled(). */
public class IsObjectLegalHoldEnabledArgs extends ObjectArgs {
public class IsObjectLegalHoldEnabledArgs extends ObjectVersionArgs {
public static Builder builder() {
return new Builder();
}

/** Argument builder of {@link IsObjectLegalHoldEnabledArgs}. */
public static final class Builder
extends ObjectArgs.Builder<Builder, IsObjectLegalHoldEnabledArgs> {}
extends ObjectVersionArgs.Builder<Builder, IsObjectLegalHoldEnabledArgs> {}
}
4 changes: 1 addition & 3 deletions api/src/main/java/io/minio/ListenBucketNotificationArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,7 @@ public static Builder builder() {
public static final class Builder
extends BucketArgs.Builder<Builder, ListenBucketNotificationArgs> {
private void validateEvents(String[] events) {
if (events == null) {
throw new IllegalArgumentException("null events");
}
validateNotNull(events, "events");
}

protected void validate(ListenBucketNotificationArgs args) {
Expand Down
30 changes: 15 additions & 15 deletions api/src/main/java/io/minio/ObjectArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,44 +16,44 @@

package io.minio;

import okhttp3.HttpUrl;

/** Base argument class holds object name and version ID along with bucket information. */
public abstract class ObjectArgs extends BucketArgs {
protected String objectName;
protected String versionId;

public String object() {
return objectName;
}

public String versionId() {
return versionId;
protected void checkSse(ServerSideEncryption sse, HttpUrl url) {
if (sse == null) {
return;
}

if (sse.type().requiresTls() && !url.isHttps()) {
throw new IllegalArgumentException(
sse.type().name() + "operations must be performed over a secure connection.");
}
}

/** Base argument builder class for {@link ObjectArgs}. */
public abstract static class Builder<B extends Builder<B, A>, A extends ObjectArgs>
extends BucketArgs.Builder<B, A> {
private void validateName(String name) {
if (name == null || name.isEmpty()) {
throw new IllegalArgumentException("object name must be non-null/non-empty string");
}
protected void validateObjectName(String name) {
validateNotEmptyString(name, "object name");
}

protected void validate(A args) {
super.validate(args);
validateName(args.objectName);
validateObjectName(args.objectName);
}

@SuppressWarnings("unchecked") // Its safe to type cast to B as B is inherited by this class
public B object(String name) {
validateName(name);
validateObjectName(name);
operations.add(args -> args.objectName = name);
return (B) this;
}

@SuppressWarnings("unchecked") // Its safe to type cast to B as B is inherited by this class
public B versionId(String versionId) {
operations.add(args -> args.versionId = versionId);
return (B) this;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,26 +18,19 @@

import okhttp3.HttpUrl;

public abstract class SsecObjectArgs extends ObjectArgs {
public abstract class ObjectReadArgs extends ObjectVersionArgs {
protected ServerSideEncryptionCustomerKey ssec;

public ServerSideEncryptionCustomerKey ssec() {
return ssec;
}

protected void validateSsec(HttpUrl baseUrl) {
if (ssec == null) {
return;
}

if (ssec.type().requiresTls() && !baseUrl.isHttps()) {
throw new IllegalArgumentException(
ssec.type().name() + "operations must be performed over a secure connection.");
}
protected void validateSsec(HttpUrl url) {
checkSse(ssec, url);
}

public abstract static class Builder<B extends Builder<B, A>, A extends SsecObjectArgs>
extends ObjectArgs.Builder<B, A> {
public abstract static class Builder<B extends Builder<B, A>, A extends ObjectReadArgs>
extends ObjectVersionArgs.Builder<B, A> {
@SuppressWarnings("unchecked") // Its safe to type cast to B as B is inherited by this class
public B ssec(ServerSideEncryptionCustomerKey ssec) {
operations.add(args -> args.ssec = ssec);
Expand Down
36 changes: 36 additions & 0 deletions api/src/main/java/io/minio/ObjectVersionArgs.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* MinIO Java SDK for Amazon S3 Compatible Cloud Storage, (C) 2020 MinIO, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License 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 io.minio;

/** Base argument class holds object name and version ID along with bucket information. */
public abstract class ObjectVersionArgs extends ObjectArgs {
protected String versionId;

public String versionId() {
return versionId;
}

/** Base argument builder class for {@link ObjectVersionArgs}. */
public abstract static class Builder<B extends Builder<B, A>, A extends ObjectVersionArgs>
extends ObjectArgs.Builder<B, A> {
@SuppressWarnings("unchecked") // Its safe to type cast to B as B is inherited by this class
public B versionId(String versionId) {
operations.add(args -> args.versionId = versionId);
return (B) this;
}
}
}
4 changes: 2 additions & 2 deletions api/src/main/java/io/minio/RemoveIncompleteUploadArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@

package io.minio;

public class RemoveIncompleteUploadArgs extends ObjectArgs {
public class RemoveIncompleteUploadArgs extends ObjectVersionArgs {

public static Builder builder() {
return new Builder();
}

public static final class Builder
extends ObjectArgs.Builder<Builder, RemoveIncompleteUploadArgs> {}
extends ObjectVersionArgs.Builder<Builder, RemoveIncompleteUploadArgs> {}
}
4 changes: 2 additions & 2 deletions api/src/main/java/io/minio/RemoveObjectArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package io.minio;

/** Argument class of MinioClient.removeObject(). */
public class RemoveObjectArgs extends ObjectArgs {
public class RemoveObjectArgs extends ObjectVersionArgs {
private boolean bypassGovernanceMode;

public boolean bypassGovernanceMode() {
Expand All @@ -29,7 +29,7 @@ public static Builder builder() {
}

/** Argument builder of {@link RemoveObjectArgs}. */
public static final class Builder extends ObjectArgs.Builder<Builder, RemoveObjectArgs> {
public static final class Builder extends ObjectVersionArgs.Builder<Builder, RemoveObjectArgs> {
public Builder bypassGovernanceMode(boolean flag) {
operations.add(args -> args.bypassGovernanceMode = flag);
return this;
Expand Down
Loading

0 comments on commit 6ce2f28

Please sign in to comment.