Skip to content

Commit

Permalink
Address review comment
Browse files Browse the repository at this point in the history
  • Loading branch information
sinhaashish committed May 12, 2020
1 parent 7f85037 commit bbf54c3
Show file tree
Hide file tree
Showing 11 changed files with 175 additions and 135 deletions.
40 changes: 28 additions & 12 deletions api/src/main/java/io/minio/BucketArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,30 +16,55 @@

package io.minio;

/** Bucket Arguments to hold base bucket properties */
public abstract class BucketArgs {
private String name;
private String region;
private final String name;
private final String region;

BucketArgs(Builder<?> builder) {

this.name = builder.name;
this.region = builder.region;
}

/** Returns the name of bucket */
public String bucketName() {
return name;
}

/** Returns the region of bucket */
public String region() {
return region;
}

/** Builder class to create base bucket object */
public abstract static class Builder<T extends Builder<T>> {
public String name;
public String region;

public Builder() {}

public Builder(BucketArgs args) {
this.name = args.bucketName();
this.region = args.region();
}

@SuppressWarnings("unchecked")
/** Its safe to type cast to T as T is inherited this class. */
public T bucket(String name) {
validateName(name);
this.name = name;
return (T) this;
}

@SuppressWarnings("unchecked")
/** Its safe to type cast to T as T is inherited this class. */
public T region(String region) {
this.region = region;
return (T) this;
}

/** Validate the name of the bucket */
public void validateName(String name) {
if (name == null) {
throw new IllegalArgumentException("null bucket name");
}
Expand All @@ -63,15 +88,6 @@ public T bucket(String name) {
+ "http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html";
throw new IllegalArgumentException(name + " : " + msg);
}
this.name = name;

return (T) this;
}

@SuppressWarnings("unchecked")
public T region(String region) {
this.region = region;
return (T) this;
}
}
}
16 changes: 7 additions & 9 deletions api/src/main/java/io/minio/MakeBucketArgs.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,23 @@

package io.minio;

/** Bucket Arguments to be used to create Bukcet. */
public class MakeBucketArgs extends BucketArgs {
private final boolean objectLock;

MakeBucketArgs(Builder builder) {
private MakeBucketArgs(Builder builder) {
super(builder);
this.objectLock = builder.objectLock;
}

/** Return true if object lock functionality is enabled */
public boolean objectLock() {
return objectLock;
}

public MakeBucketArgs() {
this(new Builder());
}

public Builder builder() {
return new Builder(this);
/** Return new Builder */
public static Builder builder() {
return new Builder();
}

public static final class Builder extends BucketArgs.Builder<Builder> {
Expand All @@ -42,8 +41,7 @@ public static final class Builder extends BucketArgs.Builder<Builder> {
public Builder() {}

public Builder(MakeBucketArgs args) {
this.name = args.bucketName();
this.region = args.region();
super(args);
this.objectLock = args.objectLock();
}

Expand Down
54 changes: 34 additions & 20 deletions api/src/main/java/io/minio/MinioClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -1957,27 +1957,27 @@ public void getObject(
* Creates an object by server-side copying data from another object.
*
* <pre>Example:{@code
* Copy data from my-source-bucketname/my-objectname to my-bucketname/my-objectname.
* minioClient.copyObject("my-bucketname", "my-objectname", null, null,
* // Copy data from my-source-bucketname/my-objectname to my-bucketname/my-objectname.
* // minioClient.copyObject("my-bucketname", "my-objectname", null, null,
* "my-source-bucketname", null, null, null);
*
* Copy data from my-source-bucketname/my-source-objectname to
* my-bucketname/my-objectname.
* // Copy data from my-source-bucketname/my-source-objectname to
* // my-bucketname/my-objectname.
* minioClient.copyObject("my-bucketname", "my-objectname", null, null,
* "my-source-bucketname", "my-source-objectname", null, null);
*
* Copy data from my-source-bucketname/my-objectname to my-bucketname/my-objectname
* by server-side encryption.
* // Copy data from my-source-bucketname/my-objectname to my-bucketname/my-objectname
* // by server-side encryption.
* minioClient.copyObject("my-bucketname", "my-objectname", null, sse,
* "my-source-bucketname", null, null, null);
*
* Copy data from SSE-C encrypted my-source-bucketname/my-objectname to
* my-bucketname/my-objectname.
* // Copy data from SSE-C encrypted my-source-bucketname/my-objectname to
* // my-bucketname/my-objectname.
* minioClient.copyObject("my-bucketname", "my-objectname", null, null,
* "my-source-bucketname", null, srcSsec, null);
*
* Copy data from my-source-bucketname/my-objectname to my-bucketname/my-objectname
* with user metadata and copy conditions.
* // Copy data from my-source-bucketname/my-objectname to my-bucketname/my-objectname
* // with user metadata and copy conditions.
* minioClient.copyObject("my-bucketname", "my-objectname", headers, null,
* "my-source-bucketname", null, null, conditions);
* }</pre>
Expand Down Expand Up @@ -3269,7 +3269,7 @@ public void makeBucket(String bucketName)
InternalException, InvalidBucketNameException, InvalidKeyException,
InvalidResponseException, IOException, NoSuchAlgorithmException, RegionConflictException,
XmlParserException {
this.makeBucket(new MakeBucketArgs().builder().bucket(bucketName).build());
this.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}

/**
Expand Down Expand Up @@ -3300,7 +3300,7 @@ public void makeBucket(String bucketName, String region)
InternalException, InvalidBucketNameException, InvalidKeyException,
InvalidResponseException, IOException, NoSuchAlgorithmException, RegionConflictException,
XmlParserException {
this.makeBucket(new MakeBucketArgs().builder().bucket(bucketName).region(region).build());
this.makeBucket(MakeBucketArgs.builder().bucket(bucketName).region(region).build());
}

/**
Expand Down Expand Up @@ -3333,19 +3333,33 @@ public void makeBucket(String bucketName, String region, boolean objectLock)
InvalidResponseException, IOException, NoSuchAlgorithmException, RegionConflictException,
XmlParserException {
this.makeBucket(
new MakeBucketArgs()
.builder()
.bucket(bucketName)
.region(region)
.objectLock(objectLock)
.build());
MakeBucketArgs.builder().bucket(bucketName).region(region).objectLock(objectLock).build());
}

/**
* Creates a bucket with make bucket arguments.
* Creates a bucket with region and object lock.
*
* <pre>Example:{@code
* minioClient.makeBucket(MakeBucketArgs args);
* // Create bucket with default region.
* minioClient.makeBucket(
* MakeBucketArgs.builder()
* .bucket("my-bucketname")
* .build());
*
* // Create bucket with specific region.
* minioClient.makeBucket(
* MakeBucketArgs.builder()
* .bucket("my-bucketname")
* .region("us-west-1")
* .build());
*
* // Create object-lock enabled bucket with specific region.
* minioClient.makeBucket(
* MakeBucketArgs.builder()
* .bucket("my-bucketname")
* .region("us-west-1")
* .objectLock(true)
* .build());
* }</pre>
*
* @param args Object with bucket name, region and lock functionality
Expand Down
2 changes: 1 addition & 1 deletion api/src/test/java/io/minio/MinioClientTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ public void testInvalidResponse4()
public void testMakeBucketRegionConflicts()
throws NoSuchAlgorithmException, IOException, InvalidKeyException, MinioException {
MinioClient client = new MinioClient("http://play.min.io:9000", "foo", "bar", "us-east-1");
client.makeBucket(new MakeBucketArgs.Builder().bucket("mybucket").region("us-west-2").build());
client.makeBucket(MakeBucketArgs.builder().bucket("mybucket").region("us-west-2").build());
Assert.fail("exception should be thrown");
}

Expand Down
22 changes: 16 additions & 6 deletions docs/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -651,20 +651,30 @@ for (Result<Item> result : results) {
Creates a bucket with given region and object lock feature enabled.

__Parameters__
| Parameter | Type | Description |
|:---------------|:-----------------|:---------------------------|
| ``args`` | _[MakeBucketArgs]_ | Arguments to create bucket |

| Parameter | Type | Description |
|:---------------|:-------------------|:---------------------------|
| ``args`` | _[MakeBucketArgs](#https://minio.github.io/minio-java/io/minio/MakeBucketArgs.html)_ | Arguments to create bucket |

__Example__

```java
// Create bucket with default region.
minioClient.makeBucket(new MakeBucketArgs.Builder().bucket("my-bucketname").build());
minioClient.makeBucket(
MakeBucketArgs.builder()
.bucket("my-bucketname")
.build());

// Create bucket with specific region.
minioClient.makeBucket(
new MakeBucketArgs.Builder().bucket("my-bucketname").region("us-west-1").build());
MakeBucketArgs.builder()
.bucket("my-bucketname")
.region("us-west-1")
.build());

// Create object-lock enabled bucket with specific region.
minioClient.makeBucket(
new MakeBucketArgs.Builder()
MakeBucketArgs.builder()
.bucket("my-bucketname")
.region("us-west-1")
.objectLock(true)
Expand Down
2 changes: 1 addition & 1 deletion examples/EnableDisableObjectLegalHold.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public static void main(String[] args)
} else {
// Create bucket 'my-bucketname' with object lock functionality enabled
minioClient.makeBucket(
new MakeBucketArgs.Builder().bucket("my-bucketname").objectLock(true).build());
MakeBucketArgs.builder().bucket("my-bucketname").objectLock(true).build());
System.out.println(
"my-bucketname is created successfully with object lock functionality enabled.");
}
Expand Down
28 changes: 25 additions & 3 deletions examples/MakeBucket.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,36 @@ public static void main(String[] args)
// "YOUR-SECRETACCESSKEY");

// Create bucket if it doesn't exist.
boolean found = minioClient.bucketExists("my-bucketname");
if (found) {
if (minioClient.bucketExists("my-bucketname")) {
System.out.println("my-bucketname already exists");
} else {
// Create bucket 'my-bucketname'.
minioClient.makeBucket(new MakeBucketArgs.Builder().bucket("my-bucketname").build());
minioClient.makeBucket(MakeBucketArgs.builder().bucket("my-bucketname").build());
System.out.println("my-bucketname is created successfully");
}
// Create bucket if it doesn't exist.
if (minioClient.bucketExists("my-bucketname2")) {
System.out.println("my-bucketname2 already exists");
} else {
// Create bucket 'my-bucketname2' and region.
minioClient.makeBucket(
MakeBucketArgs.builder().bucket("my-bucketname2").region("us-west-1").build());
System.out.println("my-bucketname2 is created successfully");
}
// Create bucket if it doesn't exist.
if (minioClient.bucketExists("my-bucketname3")) {
System.out.println("my-bucketname3 already exists");
} else {

// Create bucket 'my-bucketname3' , egion and object lock functionality enabled.
minioClient.makeBucket(
MakeBucketArgs.builder()
.bucket("my-bucketname3")
.region("us-west-1")
.objectLock(true)
.build());
System.out.println("my-bucketname3 is created successfully");
}
} catch (MinioException e) {
System.out.println("Error occurred: " + e);
}
Expand Down
49 changes: 0 additions & 49 deletions examples/MakeBucketWithLock.java

This file was deleted.

2 changes: 1 addition & 1 deletion examples/SetGetBucketObjectLockConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public static void main(String[] args)
} else {
// Create bucket 'my-bucketname' with object lock functionality enabled
s3Client.makeBucket(
new MakeBucketArgs.Builder().bucket("my-bucketname").objectLock(true).build());
MakeBucketArgs.builder().bucket("my-bucketname").objectLock(true).build());
System.out.println(
"my-bucketname is created successfully with object lock functionality enabled.");
}
Expand Down
2 changes: 1 addition & 1 deletion examples/SetGetObjectLockRetentionConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public static void main(String[] args)
} else {
// Create bucket 'my-bucketname' with object lock functionality enabled
minioClient.makeBucket(
new MakeBucketArgs.Builder().bucket("my-bucketname").objectLock(true).build());
MakeBucketArgs.builder().bucket("my-bucketname").objectLock(true).build());
System.out.println(
"my-bucketname is created successfully with object lock functionality enabled.");
}
Expand Down
Loading

0 comments on commit bbf54c3

Please sign in to comment.