Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README-Android.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
Version 3.25.10
New features:
1. Support for Posix snapshot features
2. Support for bucket QoS features
3. Support Lifecycle 2.0
-----------------------------------------------------------------------------------
Version 3.25.7
New features:
1. Added symlink feature
Expand Down
6 changes: 6 additions & 0 deletions README-Java.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
Version 3.25.10
New features:
1. Support for Posix snapshot features
2. Support for bucket QoS features
3. Support Lifecycle 2.0
-----------------------------------------------------------------------------------
Version 3.25.7
New features:
1. Added symlink feature
Expand Down
6 changes: 6 additions & 0 deletions README_CN.MD
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
Version 3.25.10
New features:
1. 支持并行文件系统快照特性
2. 支持桶qos特性
3. 支持生命周期2.0
-----------------------------------------------------------------------------------
Version 3.25.7
New features:
1. 支持软链接特性
Expand Down
2 changes: 1 addition & 1 deletion app/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>com.huaweicloud</groupId>
<artifactId>esdk-obs-java-android</artifactId>
<version>3.25.7</version>
<version>3.25.10</version>

<name>OBS SDK for Java/Android</name>
<description>The OBS SDK for Android used for accessing Object Storage Service</description>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
import com.obs.services.exception.ObsException;
import com.obs.services.internal.ServiceException;
import com.obs.services.internal.utils.ServiceUtils;
import com.obs.services.model.DeleteBucketLifecycleRequest;
import com.obs.services.model.GetBucketLifecycleRequest;
import com.obs.services.model.bpa.DeleteBucketPublicAccessBlockRequest;
import com.obs.services.model.bpa.GetBucketPolicyPublicStatusRequest;
import com.obs.services.model.bpa.GetBucketPolicyPublicStatusResult;
Expand Down Expand Up @@ -85,6 +87,20 @@ public LifecycleConfiguration action() throws ServiceException {
});
}

@Override
public LifecycleConfiguration getBucketLifecycle(final GetBucketLifecycleRequest request) throws ObsException {
ServiceUtils.assertParameterNotNull(request, "GetBucketLifecycleRequest is null");
ServiceUtils.assertParameterNotNull2(request.getBucketName(), "bucketName is null");
return this.doActionWithResult("getBucketLifecycleConfiguration", request.getBucketName(),
new ActionCallbackWithResult<LifecycleConfiguration>() {

@Override
public LifecycleConfiguration action() throws ServiceException {
return AbstractBucketAdvanceClient.this.getBucketLifecycleConfigurationImpl(request);
}
});
}

/*
* (non-Javadoc)
*
Expand Down Expand Up @@ -147,6 +163,20 @@ public HeaderResponse action() throws ServiceException {

}

@Override
public HeaderResponse deleteBucketLifecycle(final DeleteBucketLifecycleRequest request) throws ObsException {
ServiceUtils.assertParameterNotNull(request, "DeleteBucketLifecycleRequest is null");
ServiceUtils.assertParameterNotNull2(request.getBucketName(), "bucketName is null");
return this.doActionWithResult("deleteBucketLifecycleConfiguration", request.getBucketName(),
new ActionCallbackWithResult<HeaderResponse>() {
@Override
public HeaderResponse action() throws ServiceException {
return AbstractBucketAdvanceClient.this.deleteBucketLifecycleConfigurationImpl(request);
}
});

}

/*
* (non-Javadoc)
*
Expand Down
182 changes: 182 additions & 0 deletions app/src/main/java/com/obs/services/AbstractBucketClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,11 @@
package com.obs.services;

import java.util.List;
import java.util.function.Function;
import java.util.function.Supplier;

import com.obs.services.exception.ObsException;
import com.obs.services.internal.ObsConstraint;
import com.obs.services.internal.ServiceException;
import com.obs.services.internal.utils.ServiceUtils;
import com.obs.services.model.AccessControlList;
Expand All @@ -34,16 +37,31 @@
import com.obs.services.model.BucketStoragePolicyConfiguration;
import com.obs.services.model.BucketVersioningConfiguration;
import com.obs.services.model.CreateBucketRequest;
import com.obs.services.model.CreateSnapshotRequest;
import com.obs.services.model.CreateSnapshotResponse;
import com.obs.services.model.CreateVirtualBucketRequest;
import com.obs.services.model.CreateVirtualBucketResult;
import com.obs.services.model.CustomDomainCertificateConfig;
import com.obs.services.model.DeleteBucketCustomDomainRequest;
import com.obs.services.model.DeleteBucketLifecycleRequest;
import com.obs.services.model.DeleteSnapshotRequest;
import com.obs.services.model.GetBucketCustomDomainRequest;
import com.obs.services.model.GetSnapshottableDirListRequest;
import com.obs.services.model.GetSnapshottableDirListResult;
import com.obs.services.model.GetSnapshotListRequest;
import com.obs.services.model.GetSnapshotListResponse;
import com.obs.services.model.HeaderResponse;
import com.obs.services.model.ListBucketAliasResult;
import com.obs.services.model.ListBucketsRequest;
import com.obs.services.model.ListBucketsResult;
import com.obs.services.model.ObsBucket;
import com.obs.services.model.Qos.DeleteBucketQosRequest;
import com.obs.services.model.Qos.GetBucketQoSRequest;
import com.obs.services.model.Qos.GetBucketQoSResult;
import com.obs.services.model.Qos.SetBucketQosRequest;
import com.obs.services.model.Qos.QosRule;
import com.obs.services.model.RenameSnapshotRequest;
import com.obs.services.model.RenameSnapshotResponse;
import com.obs.services.model.RequestPaymentConfiguration;
import com.obs.services.model.RequestPaymentEnum;
import com.obs.services.model.SetBucketAclRequest;
Expand All @@ -54,15 +72,43 @@
import com.obs.services.model.SetBucketRequestPaymentRequest;
import com.obs.services.model.SetBucketStoragePolicyRequest;
import com.obs.services.model.SetBucketVersioningRequest;
import com.obs.services.model.SetDisallowSnapshotRequest;
import com.obs.services.model.SetSnapshotAllowRequest;
import com.obs.services.model.inventory.SetInventoryConfigurationRequest;
import com.obs.services.model.inventory.GetInventoryConfigurationRequest;
import com.obs.services.model.inventory.DeleteInventoryConfigurationRequest;
import com.obs.services.model.inventory.ListInventoryConfigurationRequest;
import com.obs.services.model.inventory.GetInventoryConfigurationResult;
import com.obs.services.model.inventory.ListInventoryConfigurationResult;

import static com.obs.services.internal.ObsConstraint.SNAPSHOT;
import static com.obs.services.internal.ObsConstraint.SNAPSHOT_FULL_PATH;


public abstract class AbstractBucketClient extends AbstractDeprecatedBucketClient {

private <T, R> T executeAction(String actionName,
R request,
Function<R, String> nameExtractor,
Runnable additionalValidation,
Supplier<T> implementation) throws ObsException {
ServiceUtils.assertParameterNotNull(request, "request is null");

String bucketName = nameExtractor.apply(request);
ServiceUtils.assertParameterNotNull2(bucketName, "bucketName is null");

if (additionalValidation != null) {
additionalValidation.run();
}
return this.doActionWithResult(actionName, bucketName,
new ActionCallbackWithResult<T>() {
@Override
public T action() throws ServiceException {
return implementation.get();
}
});
}

/*
* (non-Javadoc)
*
Expand Down Expand Up @@ -987,4 +1033,140 @@ public HeaderResponse action() throws ServiceException {
});

}

@Override
public HeaderResponse setBucketQos(SetBucketQosRequest request) throws ObsException {
ServiceUtils.assertParameterNotNull(request,"setBucketQosRequest is null");
ServiceUtils.assertParameterNotNull(request.getBucketName(),"bucketName is null");
ServiceUtils.assertParameterNotNull(request.getQosConfig(),"QosConfig is null");
ServiceUtils.assertParameterNotNull(request.getQosConfig().getRules(),"rules is null");

List<QosRule> rules = request.getQosConfig().getRules();

if (rules.isEmpty()) {
throw new IllegalArgumentException("rules is empty");
}

for (QosRule rule : rules) {
ServiceUtils.assertParameterNotNull(rule.getNetworkType(), "networkType is null");
ServiceUtils.assertParameterNotNull(rule.getQpsLimit(), "qpsLimit is null");
ServiceUtils.assertParameterNotNull(rule.getBpsLimit(), "bpsLimit is null");
}
return this.doActionWithResult("setBucketQoS", request.getBucketName(),
new ActionCallbackWithResult<HeaderResponse>() {
@Override
public HeaderResponse action() throws ServiceException {
return AbstractBucketClient.this.setBucketQosImpl(request);
}
});
}

@Override
public GetBucketQoSResult getBucketQoS(GetBucketQoSRequest request) {
ServiceUtils.assertParameterNotNull(request.getBucketName(), "bucketName is null");
return this.doActionWithResult("getBucketQos", request.getBucketName(), new ActionCallbackWithResult<GetBucketQoSResult>() {
@Override
public GetBucketQoSResult action() throws ServiceException {
return AbstractBucketClient.this.getBucketQosImpl(request);
}
});
}
@Override
public HeaderResponse deleteBucketQoS(DeleteBucketQosRequest request) throws ObsException{
ServiceUtils.assertParameterNotNull(request.getBucketName(),"bucketName is null");
return this.doActionWithResult("deleteBucketQos", request.getBucketName(), new ActionCallbackWithResult<HeaderResponse>() {
@Override
public HeaderResponse action() throws ServiceException {
return AbstractBucketClient.this.deleteBucketQosImpl(request);
}
});
}

public HeaderResponse deleteSnapshot(DeleteSnapshotRequest request) throws ObsException {
return executeAction("deleteSnapshot", request, DeleteSnapshotRequest::getBucketName,
() -> {
ServiceUtils.assertParameterNotNull2(request.getObjectKey(), "objectKey is null");
ServiceUtils.assertParameterNotNull2(request.getSnapshotName(), "snapshotName is null");
},
() -> AbstractBucketClient.this.deleteSnapshotImpl(request)
);
}

@Override
public HeaderResponse setSnapshotAllow(SetSnapshotAllowRequest request) throws ObsException {
return executeAction("setSnapshotAllow", request, SetSnapshotAllowRequest::getBucketName,
() -> {
ServiceUtils.assertParameterNotNull2(request.getObjectKey(), "objectKey is null");
},
() -> AbstractBucketClient.this.setSnapshotAllowImpl(request)
);
}

@Override
public HeaderResponse setDisallowSnapshot(SetDisallowSnapshotRequest request) throws ObsException {
return executeAction("setDisallowSnapshot", request, SetDisallowSnapshotRequest::getBucketName,
() -> {
ServiceUtils.assertParameterNotNull2(request.getObjectKey(), "objectKey is null");
},
() -> AbstractBucketClient.this.setDisallowSnapshotImpl(request)
);
}

@Override
public GetSnapshottableDirListResult getSnapshottableDirList(GetSnapshottableDirListRequest request) throws ObsException {
return executeAction("getSnapshottableDirList", request, GetSnapshottableDirListRequest::getBucketName,
() -> {
ServiceUtils.assertParameterNotNegative(request.getMaxKeys(), "maxKeys is negative");
},
() -> AbstractBucketClient.this.getSnapshottableDirListImpl(request)
);
}

/**
* Get snapshot list for a bucket or object
*/
@Override
public GetSnapshotListResponse getSnapshotList(GetSnapshotListRequest request) throws ObsException {
return executeAction("getSnapshotList", request, GetSnapshotListRequest::getBucketName,
() -> {
ServiceUtils.assertParameterNotNegative(request.getMaxKeys(), "maxKeys is negative");
},
() -> AbstractBucketClient.this.getSnapshotListImpl(request)
);
}

/**
* Create snapshot for an object
*/
@Override
public CreateSnapshotResponse createSnapshot(CreateSnapshotRequest request) throws ObsException {
return executeAction("createSnapshot", request, CreateSnapshotRequest::getBucketName,
() -> {
ServiceUtils.assertParameterNotNull2(request.getObjectKey(), "objectKey is null");
ServiceUtils.assertParameterNotNull2(request.getSnapshotName(), "snapshotName is null");
ServiceUtils.checkParameterLength(SNAPSHOT, request.getSnapshotName(),
1, ObsConstraint.SNAPSHOT_NAME_MAX_LENGTH);
ServiceUtils.checkParameterLength(SNAPSHOT_FULL_PATH, request.getObjectKey(),
1, ObsConstraint.SNAPSHOT_FULL_PATH_MAX_LENGTH);
},
() -> AbstractBucketClient.this.createSnapshotImpl(request)
);
}

/**
* Rename snapshot for an object
*/
@Override
public RenameSnapshotResponse renameSnapshot(RenameSnapshotRequest request) throws ObsException {
return executeAction("renameSnapshot", request, RenameSnapshotRequest::getBucketName,
() -> {
ServiceUtils.assertParameterNotNull2(request.getObjectKey(), "objectKey is null");
ServiceUtils.assertParameterNotNull2(request.getOldSnapshotName(), "oldSnapshotName is null");
ServiceUtils.assertParameterNotNull2(request.getNewSnapshotName(), "newSnapshotName is null");
},
() -> AbstractBucketClient.this.renameSnapshotImpl(request)
);
}

public abstract HeaderResponse deleteBucketLifecycle(DeleteBucketLifecycleRequest request) throws ObsException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -846,6 +846,7 @@ public HeaderResponse putSymlink(PutSymlinkRequest request) throws ObsException
ServiceUtils.assertParameterNotNull(request, "PutSymlinkRequest is null");
ServiceUtils.assertParameterNotNull(request.getBucketName(), "bucketName is null");
ServiceUtils.assertParameterNotNull(request.getObjectKey(), "objectKey is null");
ServiceUtils.assertParameterNotNull(request.getSymlinkTarget(), "symlinkTarget is null");
return this.doActionWithResult("putSymlink", request.getBucketName(),
new ActionCallbackWithResult<HeaderResponse>() {

Expand Down
Loading