Class ObjectController
-
- All Implemented Interfaces:
@CrossOrigin(origins = {"*"}, exposedHeaders = {"*"})@Controller()@RequestMapping(value = {"${com.adobe.testing.s3mock.controller.contextPath:}"}) public final class ObjectController
-
-
Constructor Summary
Constructors Constructor Description ObjectController(BucketService bucketService, ObjectService objectService)
-
Method Summary
Modifier and Type Method Description final ResponseEntity<DeleteResult>deleteObjects(@PathVariable() String bucketName, @RequestBody() Delete body)API Reference. final ResponseEntity<Void>postObject(@PathVariable() String bucketName, @RequestParam(value = "key") ObjectKey key, @RequestParam(value = "tagging", required = false) List<Tag> tags, @RequestParam(value = "Content-Type", required = false) String contentType, @RequestParam(value = "Content-MD5", required = false) String contentMd5, @RequestParam(value = "x-amz-storage-class", required = false, defaultValue = "STANDARD") StorageClass storageClass, @RequestPart(value = "file") MultipartFile file)API Reference. final ResponseEntity<Void>headObject(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "If-Match", required = false) List<String> match, @RequestHeader(value = "If-None-Match", required = false) List<String> noneMatch, @RequestHeader(value = "If-Modified-Since", required = false) List<Instant> ifModifiedSince, @RequestHeader(value = "If-Unmodified-Since", required = false) List<Instant> ifUnmodifiedSince, @RequestHeader(value = "Range", required = false) HttpRange range, @RequestParam(value = "partNumber", required = false) String partNumber, @RequestParam(value = "versionId", required = false) String versionId, @RequestParam() Map<String, String> queryParams)API Reference. final ResponseEntity<Void>deleteObject(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "If-Match", required = false) List<String> match, @RequestHeader(value = "x-amz-if-match-last-modified-time", required = false) List<Instant> matchLastModifiedTime, @RequestHeader(value = "x-amz-if-match-size", required = false) List<Long> matchSize, @RequestParam(value = "versionId", required = false) String versionId)API Reference. final ResponseEntity<StreamingResponseBody>getObject(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "x-amz-checksum-mode", required = false, defaultValue = "DISABLED") ChecksumMode mode, @RequestHeader(value = "If-Match", required = false) List<String> match, @RequestHeader(value = "If-None-Match", required = false) List<String> noneMatch, @RequestHeader(value = "If-Modified-Since", required = false) List<Instant> ifModifiedSince, @RequestHeader(value = "If-Unmodified-Since", required = false) List<Instant> ifUnmodifiedSince, @RequestParam(value = "partNumber", required = false) String partNumber, @RequestHeader(value = "Range", required = false) HttpRange range, @RequestParam(value = "versionId", required = false) String versionId, @RequestParam() Map<String, String> queryParams)API Reference. final ResponseEntity<Void>putObjectAcl(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "x-amz-acl", required = false) ObjectCannedACL cannedAcl, @RequestParam(value = "versionId", required = false) String versionId, @RequestBody(required = false) AccessControlPolicy body)Adds an ACL to an object. final ResponseEntity<AccessControlPolicy>getObjectAcl(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId)Gets ACL of an object. final ResponseEntity<Tagging>getObjectTagging(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId)API Reference. final ResponseEntity<Void>putObjectTagging(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId, @RequestBody() Tagging body)API Reference. final ResponseEntity<Void>deleteObjectTagging(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId)API Reference. final ResponseEntity<LegalHold>getLegalHold(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId)API Reference. final ResponseEntity<Void>putLegalHold(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId, @RequestBody() LegalHold body)API Reference. final ResponseEntity<Retention>getObjectRetention(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId)API Reference. final ResponseEntity<Void>putObjectRetention(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId, @RequestBody() Retention body)API Reference. final ResponseEntity<GetObjectAttributesOutput>getObjectAttributes(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "If-Match", required = false) List<String> match, @RequestHeader(value = "If-None-Match", required = false) List<String> noneMatch, @RequestHeader(value = "If-Modified-Since", required = false) List<Instant> ifModifiedSince, @RequestHeader(value = "If-Unmodified-Since", required = false) List<Instant> ifUnmodifiedSince, @RequestHeader(value = "x-amz-object-attributes") List<String> objectAttributes, @RequestParam(value = "versionId", required = false) String versionId)API Reference. final ResponseEntity<Void>putObject(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "x-amz-tagging", required = false) List<Tag> tags, @RequestHeader(value = "Content-Type", required = false) String contentType, @RequestHeader(value = "Content-MD5", required = false) String contentMd5, @RequestHeader(value = "If-Match", required = false) List<String> match, @RequestHeader(value = "If-None-Match", required = false) List<String> noneMatch, @RequestHeader(value = "x-amz-storage-class", required = false, defaultValue = "STANDARD") StorageClass storageClass, @RequestHeader() HttpHeaders httpHeaders, InputStream inputStream)API Reference. final ResponseEntity<CopyObjectResult>copyObject(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "x-amz-copy-source") CopySource copySource, @RequestHeader(value = "x-amz-metadata-directive", defaultValue = "COPY") AwsHttpHeaders.MetadataDirective metadataDirective, @RequestHeader(value = "x-amz-copy-source-if-match", required = false) List<String> match, @RequestHeader(value = "x-amz-copy-source-if-none-match", required = false) List<String> noneMatch, @RequestHeader(value = "x-amz-copy-source-if-modified-since", required = false) List<Instant> ifModifiedSince, @RequestHeader(value = "x-amz-copy-source-if-unmodified-since", required = false) List<Instant> ifUnmodifiedSince, @RequestHeader(value = "x-amz-storage-class", required = false) StorageClass storageClass, @RequestHeader() HttpHeaders httpHeaders)API Reference. -
-
Constructor Detail
-
ObjectController
ObjectController(BucketService bucketService, ObjectService objectService)
-
-
Method Detail
-
deleteObjects
@PostMapping(value = {"/{bucketName:.+}", "/{bucketName:.+}/"}, params = {"delete"}, produces = {"application/xml"}) final ResponseEntity<DeleteResult> deleteObjects(@PathVariable() String bucketName, @RequestBody() Delete body)
-
postObject
@PostMapping(value = {"/{bucketName:.+}", "/{bucketName:.+}/"}, params = {"!delete"}, produces = {"application/xml"}, consumes = {"multipart/form-data"}) final ResponseEntity<Void> postObject(@PathVariable() String bucketName, @RequestParam(value = "key") ObjectKey key, @RequestParam(value = "tagging", required = false) List<Tag> tags, @RequestParam(value = "Content-Type", required = false) String contentType, @RequestParam(value = "Content-MD5", required = false) String contentMd5, @RequestParam(value = "x-amz-storage-class", required = false, defaultValue = "STANDARD") StorageClass storageClass, @RequestPart(value = "file") MultipartFile file)API Reference. Does not support all parameters listed in the API reference.
-
headObject
@RequestMapping(value = {"/{bucketName:.+}/{*key}"}, method = {RequestMethod.HEAD}) final ResponseEntity<Void> headObject(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "If-Match", required = false) List<String> match, @RequestHeader(value = "If-None-Match", required = false) List<String> noneMatch, @RequestHeader(value = "If-Modified-Since", required = false) List<Instant> ifModifiedSince, @RequestHeader(value = "If-Unmodified-Since", required = false) List<Instant> ifUnmodifiedSince, @RequestHeader(value = "Range", required = false) HttpRange range, @RequestParam(value = "partNumber", required = false) String partNumber, @RequestParam(value = "versionId", required = false) String versionId, @RequestParam() Map<String, String> queryParams)
-
deleteObject
@DeleteMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"!lifecycle", "!tagging"}) final ResponseEntity<Void> deleteObject(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "If-Match", required = false) List<String> match, @RequestHeader(value = "x-amz-if-match-last-modified-time", required = false) List<Instant> matchLastModifiedTime, @RequestHeader(value = "x-amz-if-match-size", required = false) List<Long> matchSize, @RequestParam(value = "versionId", required = false) String versionId)
-
getObject
@GetMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"!uploads", "!uploadId", "!tagging", "!legal-hold", "!retention", "!acl", "!attributes"}) final ResponseEntity<StreamingResponseBody> getObject(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "x-amz-checksum-mode", required = false, defaultValue = "DISABLED") ChecksumMode mode, @RequestHeader(value = "If-Match", required = false) List<String> match, @RequestHeader(value = "If-None-Match", required = false) List<String> noneMatch, @RequestHeader(value = "If-Modified-Since", required = false) List<Instant> ifModifiedSince, @RequestHeader(value = "If-Unmodified-Since", required = false) List<Instant> ifUnmodifiedSince, @RequestParam(value = "partNumber", required = false) String partNumber, @RequestHeader(value = "Range", required = false) HttpRange range, @RequestParam(value = "versionId", required = false) String versionId, @RequestParam() Map<String, String> queryParams)
-
putObjectAcl
@PutMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"acl"}) final ResponseEntity<Void> putObjectAcl(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "x-amz-acl", required = false) ObjectCannedACL cannedAcl, @RequestParam(value = "versionId", required = false) String versionId, @RequestBody(required = false) AccessControlPolicy body)Adds an ACL to an object. This method accepts a String instead of the POJO. We need to use JAX-B annotations instead of Jackson annotations because AWS decided to use xsi:type annotations in the XML representation, which are not supported by Jackson. It doesn't seem to be possible to use bot JAX-B and Jackson for (de-)serialization in parallel. :-( API Reference API Reference API Reference
-
getObjectAcl
@GetMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"acl"}, produces = {"application/xml"}) final ResponseEntity<AccessControlPolicy> getObjectAcl(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId)Gets ACL of an object. This method returns a String instead of the POJO. We need to use JAX-B annotations instead of Jackson annotations because AWS decided to use xsi:type annotations in the XML representation, which are not supported by Jackson. It doesn't seem to be possible to use bot JAX-B and Jackson for (de-)serialization in parallel. :-( API Reference
-
getObjectTagging
@GetMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"tagging"}, produces = {"application/xml", "application/xml;charset=UTF-8"}) final ResponseEntity<Tagging> getObjectTagging(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId)
-
putObjectTagging
@PutMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"tagging"}) final ResponseEntity<Void> putObjectTagging(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId, @RequestBody() Tagging body)
-
deleteObjectTagging
@DeleteMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"tagging"}) final ResponseEntity<Void> deleteObjectTagging(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId)
-
getLegalHold
@GetMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"legal-hold"}, produces = {"application/xml"}) final ResponseEntity<LegalHold> getLegalHold(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId)
-
putLegalHold
@PutMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"legal-hold"}) final ResponseEntity<Void> putLegalHold(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId, @RequestBody() LegalHold body)
-
getObjectRetention
@GetMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"retention"}, produces = {"application/xml"}) final ResponseEntity<Retention> getObjectRetention(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId)
-
putObjectRetention
@PutMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"retention"}) final ResponseEntity<Void> putObjectRetention(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestParam(value = "versionId", required = false) String versionId, @RequestBody() Retention body)
-
getObjectAttributes
@GetMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"attributes"}, produces = {"application/xml"}) final ResponseEntity<GetObjectAttributesOutput> getObjectAttributes(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "If-Match", required = false) List<String> match, @RequestHeader(value = "If-None-Match", required = false) List<String> noneMatch, @RequestHeader(value = "If-Modified-Since", required = false) List<Instant> ifModifiedSince, @RequestHeader(value = "If-Unmodified-Since", required = false) List<Instant> ifUnmodifiedSince, @RequestHeader(value = "x-amz-object-attributes") List<String> objectAttributes, @RequestParam(value = "versionId", required = false) String versionId)
-
putObject
@PutMapping(value = {"/{bucketName:.+}/{*key}"}, params = {"!uploadId", "!tagging", "!legal-hold", "!retention", "!acl"}, headers = {"!x-amz-copy-source"}) final ResponseEntity<Void> putObject(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "x-amz-tagging", required = false) List<Tag> tags, @RequestHeader(value = "Content-Type", required = false) String contentType, @RequestHeader(value = "Content-MD5", required = false) String contentMd5, @RequestHeader(value = "If-Match", required = false) List<String> match, @RequestHeader(value = "If-None-Match", required = false) List<String> noneMatch, @RequestHeader(value = "x-amz-storage-class", required = false, defaultValue = "STANDARD") StorageClass storageClass, @RequestHeader() HttpHeaders httpHeaders, InputStream inputStream)
-
copyObject
@PutMapping(value = {"/{bucketName:.+}/{*key}"}, headers = {"x-amz-copy-source"}, params = {"!uploadId", "!tagging", "!legal-hold", "!retention", "!acl"}, produces = {"application/xml"}) final ResponseEntity<CopyObjectResult> copyObject(@PathVariable() String bucketName, @PathVariable() ObjectKey key, @RequestHeader(value = "x-amz-copy-source") CopySource copySource, @RequestHeader(value = "x-amz-metadata-directive", defaultValue = "COPY") AwsHttpHeaders.MetadataDirective metadataDirective, @RequestHeader(value = "x-amz-copy-source-if-match", required = false) List<String> match, @RequestHeader(value = "x-amz-copy-source-if-none-match", required = false) List<String> noneMatch, @RequestHeader(value = "x-amz-copy-source-if-modified-since", required = false) List<Instant> ifModifiedSince, @RequestHeader(value = "x-amz-copy-source-if-unmodified-since", required = false) List<Instant> ifUnmodifiedSince, @RequestHeader(value = "x-amz-storage-class", required = false) StorageClass storageClass, @RequestHeader() HttpHeaders httpHeaders)
-
-
-
-