Skip to content

Commit 9bb64d5

Browse files
committed
support bucket resource group
1 parent 84bee4d commit 9bb64d5

File tree

15 files changed

+509
-17
lines changed

15 files changed

+509
-17
lines changed

src/main/java/com/aliyun/oss/OSS.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4117,6 +4117,35 @@ public DeleteDirectoryResult deleteDirectory(String bucketName, String dirName,
41174117
*/
41184118
public VoidResult renameObject(RenameObjectRequest renameObjectRequest) throws OSSException, ClientException;
41194119

4120+
/**
4121+
* Sets the resource group id of the {@link Bucket}.
4122+
*
4123+
* @param setBucketResourceGroupRequest
4124+
* A {@link SetBucketResourceGroupRequest} instance that has
4125+
* the resource group id setting.
4126+
*
4127+
* @return A {@link VoidResult} instance wrapped void return and
4128+
* contains some basic response options, such as requestId.
4129+
*
4130+
* @throws OSSException
4131+
* OSS Server side exception.
4132+
* @throws ClientException
4133+
* OSS Client side exception.
4134+
*/
4135+
public VoidResult setBucketResourceGroup(SetBucketResourceGroupRequest setBucketResourceGroupRequest) throws OSSException, ClientException;
4136+
4137+
/**
4138+
* Gets the resource group id of the {@link Bucket}.
4139+
*
4140+
* @param bucketName
4141+
* The bucket name.
4142+
* @throws OSSException
4143+
* OSS Server side exception.
4144+
* @throws ClientException
4145+
* OSS Client side exception.
4146+
*/
4147+
public GetBucketResourceGroupResult getBucketResourceGroup(String bucketName) throws OSSException, ClientException;
4148+
41204149
/**
41214150
* Creates UDF
41224151
*

src/main/java/com/aliyun/oss/OSSClient.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1731,6 +1731,16 @@ public VoidResult renameObject(RenameObjectRequest renameObjectRequest) throws O
17311731
return this.objectOperation.renameObject(renameObjectRequest);
17321732
}
17331733

1734+
@Override
1735+
public VoidResult setBucketResourceGroup(SetBucketResourceGroupRequest setBucketResourceGroupRequest) throws OSSException, ClientException {
1736+
return this.bucketOperation.setBucketResourceGroup(setBucketResourceGroupRequest);
1737+
}
1738+
1739+
@Override
1740+
public GetBucketResourceGroupResult getBucketResourceGroup(String bucketName) throws OSSException, ClientException {
1741+
return this.bucketOperation.getBucketResourceGroup(new GenericRequest(bucketName));
1742+
}
1743+
17341744
@Override
17351745
public VoidResult createUdf(CreateUdfRequest createUdfRequest) throws OSSException, ClientException {
17361746
throw new ClientException("Not supported.");

src/main/java/com/aliyun/oss/common/parser/RequestMarshallers.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ public final class RequestMarshallers {
9494
public static final DeleteVpcipRequestMarshaller deleteVpcipRequestMarshaller = new DeleteVpcipRequestMarshaller();
9595
public static final DeleteBucketVpcipRequestMarshaller deleteBucketVpcipRequestMarshaller = new DeleteBucketVpcipRequestMarshaller();
9696

97+
public static final SetBucketResourceGroupRequestMarshaller setBucketResourceGroupRequestMarshaller = new SetBucketResourceGroupRequestMarshaller();
98+
9799
public interface RequestMarshaller<R> extends Marshaller<FixedLengthInputStream, R> {
98100

99101
}
@@ -1419,6 +1421,26 @@ public byte[] marshall(ExtendBucketWormRequest request) {
14191421
}
14201422
}
14211423

1424+
public static final class SetBucketResourceGroupRequestMarshaller implements RequestMarshaller2<String> {
1425+
1426+
@Override
1427+
public byte[] marshall(String resourceGroupId) {
1428+
StringBuffer xmlBody = new StringBuffer();
1429+
xmlBody.append("<BucketResourceGroupConfiguration>");
1430+
xmlBody.append("<ResourceGroupId>" + resourceGroupId + "</ResourceGroupId>");
1431+
xmlBody.append("</BucketResourceGroupConfiguration>");
1432+
1433+
byte[] rawData = null;
1434+
try {
1435+
rawData = xmlBody.toString().getBytes(DEFAULT_CHARSET_NAME);
1436+
} catch (UnsupportedEncodingException e) {
1437+
throw new ClientException("Unsupported encoding " + e.getMessage(), e);
1438+
}
1439+
return rawData;
1440+
}
1441+
1442+
}
1443+
14221444
public static final class CreateUdfRequestMarshaller implements RequestMarshaller2<CreateUdfRequest> {
14231445

14241446
@Override

src/main/java/com/aliyun/oss/internal/OSSBucketOperation.java

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import static com.aliyun.oss.common.parser.RequestMarshallers.setBucketInventoryRequestMarshaller;
4747
import static com.aliyun.oss.common.parser.RequestMarshallers.extendBucketWormRequestMarshaller;
4848
import static com.aliyun.oss.common.parser.RequestMarshallers.initiateBucketWormRequestMarshaller;
49+
import static com.aliyun.oss.common.parser.RequestMarshallers.setBucketResourceGroupRequestMarshaller;
4950
import static com.aliyun.oss.common.utils.CodingUtils.assertParameterNotNull;
5051
import static com.aliyun.oss.internal.OSSUtils.OSS_RESOURCE_MANAGER;
5152
import static com.aliyun.oss.internal.OSSUtils.ensureBucketNameValid;
@@ -90,6 +91,7 @@
9091
import static com.aliyun.oss.internal.ResponseParsers.listBucketInventoryConfigurationsParser;
9192
import static com.aliyun.oss.internal.ResponseParsers.initiateBucketWormResponseParser;
9293
import static com.aliyun.oss.internal.ResponseParsers.getBucketWormResponseParser;
94+
import static com.aliyun.oss.internal.ResponseParsers.getBucketResourceGroupResponseParser;
9395

9496
import java.io.ByteArrayInputStream;
9597
import java.util.ArrayList;
@@ -194,6 +196,8 @@
194196
import com.aliyun.oss.model.CompleteBucketWormRequest;
195197
import com.aliyun.oss.model.InitiateBucketWormRequest;
196198
import com.aliyun.oss.model.InitiateBucketWormResult;
199+
import com.aliyun.oss.model.SetBucketResourceGroupRequest;
200+
import com.aliyun.oss.model.GetBucketResourceGroupResult;
197201

198202
/**
199203
* Bucket operation.
@@ -218,6 +222,7 @@ public Bucket createBucket(CreateBucketRequest createBucketRequest) throws OSSEx
218222
Map<String, String> headers = new HashMap<String, String>();
219223
addOptionalACLHeader(headers, createBucketRequest.getCannedACL());
220224
addOptionalHnsHeader(headers, createBucketRequest.getHnsStatus());
225+
addOptionalResourceGroupIdHeader(headers, createBucketRequest.getResourceGroupId());
221226

222227
RequestMessage request = new OSSRequestMessageBuilder(getInnerClient()).setEndpoint(getEndpoint())
223228
.setMethod(HttpMethod.PUT).setBucket(bucketName).setHeaders(headers)
@@ -284,8 +289,11 @@ public BucketList listBuckets(ListBucketsRequest listBucketRequest) throws OSSEx
284289
params.put(TAG_VALUE, listBucketRequest.getTagValue());
285290
}
286291

292+
Map<String, String> headers = new HashMap<String, String>();
293+
addOptionalResourceGroupIdHeader(headers, listBucketRequest.getResourceGroupId());
294+
287295
RequestMessage request = new OSSRequestMessageBuilder(getInnerClient()).setEndpoint(getEndpoint())
288-
.setMethod(HttpMethod.GET).setParameters(params).setOriginalRequest(listBucketRequest).build();
296+
.setMethod(HttpMethod.GET).setHeaders(headers).setParameters(params).setOriginalRequest(listBucketRequest).build();
289297

290298
return doOperation(request, listBucketResponseParser, null, null, true);
291299
}
@@ -1889,6 +1897,49 @@ public GetBucketWormResult getBucketWorm(GenericRequest genericRequest) throws O
18891897
return doOperation(request, getBucketWormResponseParser, bucketName, null, true);
18901898
}
18911899

1900+
public VoidResult setBucketResourceGroup(SetBucketResourceGroupRequest setBucketResourceGroupRequest)
1901+
throws OSSException, ClientException {
1902+
1903+
assertParameterNotNull(setBucketResourceGroupRequest, "setBucketResourceGroupRequest");
1904+
assertParameterNotNull(setBucketResourceGroupRequest.getResourceGroupId(), "setBucketResourceGroupRequest.resourceGroupId");
1905+
1906+
String bucketName = setBucketResourceGroupRequest.getBucketName();
1907+
assertParameterNotNull(bucketName, "bucketName");
1908+
ensureBucketNameValid(bucketName);
1909+
1910+
Map<String, String> params = new HashMap<String, String>();
1911+
params.put(RequestParameters.SUBRESOURCE_RESOURCE_GROUP, null);
1912+
1913+
byte[] rawContent = setBucketResourceGroupRequestMarshaller.marshall(setBucketResourceGroupRequest.getResourceGroupId());
1914+
Map<String, String> headers = new HashMap<String, String>();
1915+
addRequestRequiredHeaders(headers, rawContent);
1916+
1917+
RequestMessage request = new OSSRequestMessageBuilder(getInnerClient()).setEndpoint(getEndpoint())
1918+
.setMethod(HttpMethod.PUT).setBucket(bucketName).setParameters(params).setHeaders(headers)
1919+
.setInputSize(rawContent.length).setInputStream(new ByteArrayInputStream(rawContent))
1920+
.setOriginalRequest(setBucketResourceGroupRequest).build();
1921+
1922+
return doOperation(request, requestIdResponseParser, bucketName, null);
1923+
}
1924+
1925+
public GetBucketResourceGroupResult getBucketResourceGroup(GenericRequest genericRequest) throws OSSException, ClientException {
1926+
1927+
assertParameterNotNull(genericRequest, "genericRequest");
1928+
1929+
String bucketName = genericRequest.getBucketName();
1930+
assertParameterNotNull(bucketName, "bucketName");
1931+
ensureBucketNameValid(bucketName);
1932+
1933+
Map<String, String> params = new HashMap<String, String>();
1934+
params.put(RequestParameters.SUBRESOURCE_RESOURCE_GROUP, null);
1935+
1936+
RequestMessage request = new OSSRequestMessageBuilder(getInnerClient()).setEndpoint(getEndpoint())
1937+
.setMethod(HttpMethod.GET).setBucket(bucketName).setParameters(params)
1938+
.setOriginalRequest(genericRequest).build();
1939+
1940+
return doOperation(request, getBucketResourceGroupResponseParser, bucketName, null, true);
1941+
}
1942+
18921943
private static void populateListObjectsRequestParameters(ListObjectsRequest listObjectsRequest,
18931944
Map<String, String> params) {
18941945

@@ -1990,6 +2041,11 @@ private static void addOptionalHnsHeader(Map<String, String> headers, String hns
19902041
headers.put(OSSHeaders.OSS_HNS_STATUS, hnsStatus.toLowerCase());
19912042
}
19922043
}
2044+
private static void addOptionalResourceGroupIdHeader(Map<String, String> headers, String resourceGroupId) {
2045+
if (resourceGroupId != null) {
2046+
headers.put(OSSHeaders.OSS_RESOURCE_GROUP_ID, resourceGroupId);
2047+
}
2048+
}
19932049

19942050
private static void populateRequestPayerHeader (Map<String, String> headers, Payer payer) {
19952051
if (payer != null && payer.equals(Payer.Requester)) {

src/main/java/com/aliyun/oss/internal/OSSHeaders.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,4 +109,7 @@ public interface OSSHeaders extends HttpHeaders {
109109
static final String OSS_DELETE_TOKEN = "x-oss-delete-token";
110110

111111
static final String OSS_RENAME_SOURCE = "x-oss-rename-source";
112+
113+
static final String OSS_RESOURCE_GROUP_ID = "x-oss-resource-group-id";
114+
112115
}

src/main/java/com/aliyun/oss/internal/RequestParameters.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public final class RequestParameters {
7676
public static final String SUBRESOURCE_DIR_DELETE = "x-oss-delete";
7777
public static final String SUBRESOURCE_RENAME = "x-oss-rename";
7878
public static final String SUBRESOURCE_DIR = "x-oss-dir";
79+
public static final String SUBRESOURCE_RESOURCE_GROUP = "resourcegroup";
7980

8081
public static final String SUBRESOURCE_UDF = "udf";
8182
public static final String SUBRESOURCE_UDF_NAME = "udfName";

src/main/java/com/aliyun/oss/internal/ResponseParsers.java

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@
149149
import com.aliyun.oss.model.AsyncFetchTaskState;
150150
import com.aliyun.oss.model.VpcPolicy;
151151
import com.aliyun.oss.model.Vpcip;
152-
152+
import com.aliyun.oss.model.GetBucketResourceGroupResult;
153153
/*
154154
* A collection of parsers that parse HTTP reponses into corresponding human-readable results.
155155
*/
@@ -190,6 +190,7 @@ public final class ResponseParsers {
190190
public static final ListVpcPolicyResultResponseParser listVpcPolicyResultResponseParser = new ListVpcPolicyResultResponseParser();
191191
public static final InitiateBucketWormResponseParser initiateBucketWormResponseParser = new InitiateBucketWormResponseParser();
192192
public static final GetBucketWormResponseParser getBucketWormResponseParser = new GetBucketWormResponseParser();
193+
public static final GetBucketResourceGroupResponseParser getBucketResourceGroupResponseParser = new GetBucketResourceGroupResponseParser();
193194

194195
public static final GetBucketInventoryConfigurationParser getBucketInventoryConfigurationParser = new GetBucketInventoryConfigurationParser();
195196
public static final ListBucketInventoryConfigurationsParser listBucketInventoryConfigurationsParser = new ListBucketInventoryConfigurationsParser();
@@ -1205,6 +1206,20 @@ public GetBucketWormResult parse(ResponseMessage response) throws ResponseParseE
12051206

12061207
}
12071208

1209+
public static final class GetBucketResourceGroupResponseParser implements ResponseParser<GetBucketResourceGroupResult> {
1210+
1211+
@Override
1212+
public GetBucketResourceGroupResult parse(ResponseMessage response) throws ResponseParseException {
1213+
try {
1214+
GetBucketResourceGroupResult result = parseResourceGroupConfiguration(response.getContent());
1215+
result.setRequestId(response.getRequestId());
1216+
return result;
1217+
} finally {
1218+
safeCloseResponse(response);
1219+
}
1220+
}
1221+
1222+
}
12081223

12091224
public static <ResultType extends GenericResult> void setCRC(ResultType result, ResponseMessage response) {
12101225
InputStream inputStream = response.getRequest().getContent();
@@ -1679,8 +1694,11 @@ public static BucketList parseListBucket(InputStream responseBody) throws Respon
16791694
bucket.setRegion(e.getChildText("Region"));
16801695
}
16811696
if (e.getChild("HierarchicalNamespace") != null) {
1682-
bucket.setHnsStatus(e.getChildText("HierarchicalNamespace"));
1697+
bucket.setHnsStatus(e.getChildText("HierarchicalNamespace"));
16831698
}
1699+
if (e.getChild("ResourceGroupId") != null) {
1700+
bucket.setResourceGroupId(e.getChildText("ResourceGroupId"));
1701+
}
16841702
buckets.add(bucket);
16851703
}
16861704
}
@@ -2709,6 +2727,11 @@ public static BucketInfo parseGetBucketInfo(InputStream responseBody) throws Res
27092727
bucket.setHnsStatus(hnsStatus);
27102728
}
27112729

2730+
if (bucketElem.getChild("ResourceGroupId") != null) {
2731+
String resourceGroupId = bucketElem.getChildText("ResourceGroupId");
2732+
bucket.setResourceGroupId(resourceGroupId);
2733+
}
2734+
27122735
if (bucketElem.getChild("StorageClass") != null) {
27132736
bucket.setStorageClass(StorageClass.parse(bucketElem.getChildText("StorageClass")));
27142737
}
@@ -3738,4 +3761,22 @@ public static DeleteDirectoryResult parseDeleteDirectoryResult(InputStream respo
37383761

37393762
}
37403763

3764+
/**
3765+
* Unmarshall get bucket resource group.
3766+
*/
3767+
public static GetBucketResourceGroupResult parseResourceGroupConfiguration(InputStream responseBody) throws ResponseParseException {
3768+
3769+
try {
3770+
Element root = getXmlRootElement(responseBody);
3771+
GetBucketResourceGroupResult result = new GetBucketResourceGroupResult();
3772+
result.setResourceGroupId(root.getChildText("ResourceGroupId"));
3773+
return result;
3774+
} catch (JDOMParseException e) {
3775+
throw new ResponseParseException(e.getPartialDocument() + ": " + e.getMessage(), e);
3776+
} catch (Exception e) {
3777+
throw new ResponseParseException(e.getMessage(), e);
3778+
}
3779+
3780+
}
3781+
37413782
}

src/main/java/com/aliyun/oss/model/Bucket.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ public class Bucket extends GenericResult {
6767
// Hierarchical namespace status, Enabled means support directory tree.
6868
private String hnsStatus;
6969

70+
// The id of resource group.
71+
private String resourceGroupId;
72+
7073
/**
7174
* Default constructor.
7275
*/
@@ -267,4 +270,20 @@ public String getHnsStatus() {
267270
public void setHnsStatus(String hnsStatus) {
268271
this.hnsStatus = hnsStatus;
269272
}
273+
274+
/**
275+
* Gets the id of resource group.
276+
*
277+
* @return the id of resource group
278+
*/
279+
public String getResourceGroupId() {
280+
return resourceGroupId;
281+
}
282+
283+
/**
284+
* set the id of resource group.
285+
*/
286+
public void setResourceGroupId(String resourceGroupId) {
287+
this.resourceGroupId = resourceGroupId;
288+
}
270289
}

src/main/java/com/aliyun/oss/model/CreateBucketRequest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class CreateBucketRequest extends GenericRequest {
2626
private StorageClass storageClass;
2727
private DataRedundancyType dataRedundancyType;
2828
private String hnsStatus;
29+
private String resourceGroupId;
2930

3031
public CreateBucketRequest(String bucketName) {
3132
super(bucketName);
@@ -165,4 +166,30 @@ public CreateBucketRequest withHnsStatus(HnsStatus hnsStatus) {
165166
this.setHnsStatus(hnsStatus);
166167
return this;
167168
}
169+
170+
/**
171+
* Gets the resouce group id.
172+
*/
173+
public String getResourceGroupId() {
174+
return resourceGroupId;
175+
}
176+
177+
/**
178+
* Sets the resouce group id.
179+
* @param resourceGroupId
180+
* The id of resouce group.
181+
*/
182+
public void setResourceGroupId(String resourceGroupId) {
183+
this.resourceGroupId = resourceGroupId;
184+
}
185+
186+
/**
187+
* Creates the instance with resouce group id.
188+
* @param resourceGroupId
189+
* The id of resouce group.
190+
*/
191+
public CreateBucketRequest withResourceGroupId(String resourceGroupId) {
192+
this.setResourceGroupId(resourceGroupId);
193+
return this;
194+
}
168195
}

0 commit comments

Comments
 (0)