Skip to content

Commit

Permalink
add deleteBucketPolicy() API
Browse files Browse the repository at this point in the history
  • Loading branch information
balamurugana committed May 14, 2020
1 parent 09454a8 commit e5b2b63
Show file tree
Hide file tree
Showing 5 changed files with 178 additions and 0 deletions.
31 changes: 31 additions & 0 deletions api/src/main/java/io/minio/DeleteBucketPolicyArgs.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* 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;

/** Argument class of MinioClient.deleteBucketPolicy(). */
public class DeleteBucketPolicyArgs extends BucketArgs {
public static Builder builder() {
return new Builder();
}

/** Argument builder of {@link DeleteBucketPolicyArgs}. */
public static final class Builder extends BucketArgs.Builder<Builder, DeleteBucketPolicyArgs> {
public DeleteBucketPolicyArgs build() throws IllegalArgumentException {
return build(DeleteBucketPolicyArgs.class);
}
}
}
41 changes: 41 additions & 0 deletions api/src/main/java/io/minio/MinioClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -4208,6 +4208,47 @@ public void setBucketPolicy(SetBucketPolicyArgs args)
response.close();
}

/**
* Deletes bucket policy configuration to a bucket.
*
* <pre>Example:{@code
* minioClient.deleteBucketPolicy(DeleteBucketPolicyArgs.builder().bucket("my-bucketname"));
* }</pre>
*
* @param args {@link DeleteBucketPolicyArgs} object.
* @throws ErrorResponseException thrown to indicate S3 service returned an error response.
* @throws IllegalArgumentException throws to indicate invalid argument passed.
* @throws InsufficientDataException thrown to indicate not enough data available in InputStream.
* @throws InternalException thrown to indicate internal library error.
* @throws InvalidBucketNameException thrown to indicate invalid bucket name passed.
* @throws InvalidKeyException thrown to indicate missing of HMAC SHA-256 library.
* @throws InvalidResponseException thrown to indicate S3 service returned invalid or no error
* response.
* @throws IOException thrown to indicate I/O error on S3 operation.
* @throws NoSuchAlgorithmException thrown to indicate missing of MD5 or SHA-256 digest library.
* @throws XmlParserException thrown to indicate XML parsing error.
*/
public void deleteBucketPolicy(DeleteBucketPolicyArgs args)
throws ErrorResponseException, IllegalArgumentException, InsufficientDataException,
InternalException, InvalidBucketNameException, InvalidKeyException,
InvalidResponseException, IOException, NoSuchAlgorithmException, XmlParserException {
if (args == null) {
throw new IllegalArgumentException("null arguments");
}

Map<String, String> queryParamMap = new HashMap<>();
queryParamMap.put("policy", "");

try {
Response response = executeDelete(args.bucketName(), "", queryParamMap);
response.close();
} catch (ErrorResponseException e) {
if (e.errorResponse().errorCode() != ErrorCode.NO_SUCH_BUCKET_POLICY) {
throw e;
}
}
}

/**
* Sets life cycle configuration to a bucket.
*
Expand Down
18 changes: 18 additions & 0 deletions docs/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ MinioClient s3Client = new MinioClient("https://s3.amazonaws.com",
|---------------------------------------------------------------|---------------------------------------------------------|
| [`bucketExists`](#bucketExists) | [`composeObject`](#composeObject) |
| [`deleteBucketLifeCycle`](#deleteBucketLifeCycle) | [`copyObject`](#copyObject) |
| [`deleteBucketPolicy`](#deleteBucketPolicy) | |
| [`disableVersioning`](#disableVersioning) | [`disableObjectLegalHold`](#disableObjectLegalHold) |
| [`enableVersioning`](#enableVersioning) | [`enableObjectLegalHold`](#enableObjectLegalHold) |
| [`getBucketLifeCycle`](#getBucketLifeCycle) | [`getObject`](#getObject) |
Expand Down Expand Up @@ -297,6 +298,22 @@ __Example__
minioClient.deleteBucketLifeCycle("my-bucketname");
```

<a name="deleteBucketPolicy"></a>
### deleteBucketPolicy(DeleteBucketPolicyArgs args)
`private void deleteBucketPolicy(DeleteBucketPolicyArgs args)` _[[Javadoc]](http://minio.github.io/minio-java/io/minio/MinioClient.html#deleteBucketPolicy-io.minio.DeleteBucketPolicyArgs-)_

Deletes bucket policy configuration of a bucket.

__Parameters__
| Parameter | Type | Description |
|:----------|:---------------------------|:------------|
| ``args`` | _[DeleteBucketPolicyArgs]_ | Argumnets. |

__Example__
```java
minioClient.deleteBucketPolicy(DeleteBucketPolicyArgs.builder().bucket("my-bucketname").build());
```

<a name="disableVersioning"></a>
### disableVersioning(String bucketName)
`public void disableVersioning(String bucketName)` _[[Javadoc]](http://minio.github.io/minio-java/io/minio/MinioClient.html#disableVersioning-java.lang.String-)_
Expand Down Expand Up @@ -1603,3 +1620,4 @@ ObjectStat objectStat = minioClient.statObject("my-bucketname", "my-objectname",
[Method]: http://minio.github.io/minio-java/io/minio/http/Method.html
[GetBucketPolicyArgs]: http://minio.github.io/minio-java/io/minio/GetBucketPolicyArgs.html
[SetBucketPolicyArgs]: http://minio.github.io/minio-java/io/minio/SetBucketPolicyArgs.html
[DeleteBucketPolicyArgs]: http://minio.github.io/minio-java/io/minio/DeleteBucketPolicyArgs.html
47 changes: 47 additions & 0 deletions examples/DeleteBucketPolicy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/*
* MinIO Java SDK for Amazon S3 Compatible Cloud Storage, (C) 2015 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
*
* https://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.
*/

import io.minio.DeleteBucketPolicyArgs;
import io.minio.MinioClient;
import io.minio.errors.MinioException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

public class DeleteBucketPolicy {
/** MinioClient.deleteBucketPolicy() example. */
public static void main(String[] args)
throws IOException, NoSuchAlgorithmException, InvalidKeyException {
try {
/* play.min.io for test and development. */
MinioClient minioClient =
new MinioClient(
"https://play.min.io",
"Q3AM3UQ867SPQQA43P2F",
"zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");

/* Amazon S3: */
// MinioClient minioClient = new MinioClient("https://s3.amazonaws.com", "YOUR-ACCESSKEYID",
// "YOUR-SECRETACCESSKEY");

minioClient.deleteBucketPolicy(
DeleteBucketPolicyArgs.builder().bucket("my-bucketname").build());
System.out.println("Bucket policy is deleted successfully");
} catch (MinioException e) {
System.out.println("Error occurred: " + e);
}
}
}
41 changes: 41 additions & 0 deletions functional/FunctionalTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3593,6 +3593,45 @@ public static void setBucketPolicy_test1() throws Exception {
}
}

/** Test: deleteBucketPolicy(deleteBucketPolicyArgs args). */
public static void deleteBucketPolicy_test1() throws Exception {
if (!mintEnv) {
System.out.println("Test: deleteBucketPolicy(DeleteBucketPolicyArgs args)");
}

long startTime = System.currentTimeMillis();
try {
String policy =
"{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":[\"s3:GetObject\"],\"Effect\":\"Allow\","
+ "\"Principal\":{\"AWS\":[\"*\"]},\"Resource\":[\"arn:aws:s3:::"
+ bucketName
+ "/myobject*\"],\"Sid\":\"\"}]}";
client.setBucketPolicy(
SetBucketPolicyArgs.builder().bucket(bucketName).config(policy).build());
client.deleteBucketPolicy(DeleteBucketPolicyArgs.builder().bucket(bucketName).build());
mintSuccessLog("deleteBucketPolicy(DeleteBucketPolicyArgs args)", null, startTime);
} catch (Exception e) {
ErrorResponse errorResponse = null;
if (e instanceof ErrorResponseException) {
ErrorResponseException exp = (ErrorResponseException) e;
errorResponse = exp.errorResponse();
}

// Ignore NotImplemented error
if (errorResponse != null && errorResponse.errorCode() == ErrorCode.NOT_IMPLEMENTED) {
mintIgnoredLog("deleteBucketPolicy(DeleteBucketPolicyArgs args)", null, startTime);
} else {
mintFailedLog(
"deleteBucketPolicy(DeleteBucketPolicyArgs args)",
null,
startTime,
null,
e.toString() + " >>> " + Arrays.toString(e.getStackTrace()));
throw e;
}
}
}

/** Test: setBucketLifeCycle(String bucketName, String lifeCycle). */
public static void setBucketLifeCycle_test1() throws Exception {
if (!mintEnv) {
Expand Down Expand Up @@ -4122,6 +4161,7 @@ public static void runTests() throws Exception {

getBucketPolicy_test1();
setBucketPolicy_test1();
deleteBucketPolicy_test1();

listenBucketNotification_test1();

Expand Down Expand Up @@ -4159,6 +4199,7 @@ public static void runQuickTests() throws Exception {
copyObject_test1();
getBucketPolicy_test1();
setBucketPolicy_test1();
deleteBucketPolicy_test1();
selectObjectContent_test1();
listenBucketNotification_test1();

Expand Down

0 comments on commit e5b2b63

Please sign in to comment.