|
20 | 20 |
|
21 | 21 | import com.obs.services.exception.ObsException;
|
22 | 22 | import com.obs.services.internal.ServiceException;
|
| 23 | +import com.obs.services.internal.utils.ObjectUtils; |
23 | 24 | import com.obs.services.internal.utils.ServiceUtils;
|
24 | 25 | import com.obs.services.model.AccessControlList;
|
25 | 26 | import com.obs.services.model.AppendObjectRequest;
|
|
43 | 44 | import com.obs.services.model.ObsObject;
|
44 | 45 | import com.obs.services.model.OptionsInfoRequest;
|
45 | 46 | import com.obs.services.model.OptionsInfoResult;
|
| 47 | +import com.obs.services.model.PutObjectInTwoBucketRequest; |
| 48 | +import com.obs.services.model.PutObjectInTwoBucketResult; |
46 | 49 | import com.obs.services.model.PutObjectRequest;
|
47 | 50 | import com.obs.services.model.PutObjectResult;
|
48 | 51 | import com.obs.services.model.RestoreObjectRequest;
|
@@ -317,6 +320,55 @@ public PutObjectResult putObject(String bucketName, String objectKey, File file,
|
317 | 320 | request.setMetadata(metadata);
|
318 | 321 | return this.putObject(request);
|
319 | 322 | }
|
| 323 | + |
| 324 | + @Override |
| 325 | + public PutObjectInTwoBucketResult putObjectInTwoBucket(PutObjectInTwoBucketRequest request) |
| 326 | + throws ObsException { |
| 327 | + ServiceUtils.assertParameterNotNull(request, "PutObjectInTwoBucketRequest is null"); |
| 328 | + ServiceUtils.assertParameterNotNull(request.getMainBucketRequest(), "mainBucketRequest is null"); |
| 329 | + ServiceUtils.assertParameterNotNull(request.getBackupBucketRequest(), "backupBucketRequest is null"); |
| 330 | + ServiceUtils.assertParameterNotNull2(request.getBackupBucketRequest().getBucketName(), "backupBucketName is null"); |
| 331 | + ServiceUtils.assertParameterNotNull2(request.getMainBucketRequest().getBucketName(), "mainBucketName is null"); |
| 332 | + ServiceUtils.assertParameterNotNull2(request.getBackupBucketRequest().getObjectKey(), "backupObjectKey is null"); |
| 333 | + ServiceUtils.assertParameterNotNull2(request.getMainBucketRequest().getObjectKey(), "mainObjectKey is null"); |
| 334 | + String path = request.getFilePath(); |
| 335 | + if (ObjectUtils.isNotBlank(path)) { |
| 336 | + File file = new File(path); |
| 337 | + if (file.exists()) { |
| 338 | + PutObjectRequest mainBucketRequest = request.getMainBucketRequest(); |
| 339 | + mainBucketRequest.setFile(file); |
| 340 | + request.setMainBucketRequest(mainBucketRequest); |
| 341 | + PutObjectRequest backupBucketRequest = request.getBackupBucketRequest(); |
| 342 | + backupBucketRequest.setFile(file); |
| 343 | + request.setBackupBucketRequest(backupBucketRequest); |
| 344 | + } |
| 345 | + } |
| 346 | + return this.doActionWithResult("putObjectInTwoBucket", "All Buckets", |
| 347 | + new ActionCallbackWithResult<PutObjectInTwoBucketResult>() { |
| 348 | + @Override |
| 349 | + public PutObjectInTwoBucketResult action() throws ServiceException { |
| 350 | + if (null != request.getMainBucketRequest().getInput() |
| 351 | + && null != request.getMainBucketRequest().getFile()) { |
| 352 | + throw new ServiceException("Both input and file are set, only one is allowed in main bucket request."); |
| 353 | + } |
| 354 | + if (null != request.getBackupBucketRequest().getInput() |
| 355 | + && null != request.getBackupBucketRequest().getFile()) { |
| 356 | + throw new ServiceException("Both input and file are set, only one is allowed in backup bucket request."); |
| 357 | + } |
| 358 | + return AbstractObjectClient.this.putObjectInTwoBucketImpl(request); |
| 359 | + } |
| 360 | + |
| 361 | + @Override |
| 362 | + void authTypeNegotiate(String bucketName) throws ServiceException { |
| 363 | + AuthTypeEnum authTypeEnum = AbstractObjectClient.this.getProviderCredentials() |
| 364 | + .getLocalAuthType().get(bucketName); |
| 365 | + if (authTypeEnum == null) { |
| 366 | + authTypeEnum = AbstractObjectClient.this.getApiVersion(""); |
| 367 | + AbstractObjectClient.this.getProviderCredentials().setLocalAuthType(bucketName, authTypeEnum); |
| 368 | + } |
| 369 | + } |
| 370 | + }); |
| 371 | + } |
320 | 372 |
|
321 | 373 | /*
|
322 | 374 | * (non-Javadoc)
|
|
0 commit comments