Class S3RestServiceHandler


  • @NotThreadSafe
    @Path("s3")
    @Produces("application/xml")
    @Consumes({"text/xml","application/xml"})
    public final class S3RestServiceHandler
    extends java.lang.Object
    This class is a REST handler for Amazon S3 API.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String BUCKET_PARAM  
      static java.lang.String BUCKET_SEPARATOR
      Bucket must be a directory directly under a mount point.
      static java.lang.String OBJECT_PARAM  
      static java.lang.String SERVICE_PREFIX  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      javax.ws.rs.core.Response createBucket​(java.lang.String authorization, java.lang.String bucket)  
      javax.ws.rs.core.Response createObjectOrUploadPart​(java.lang.String authorization, java.lang.String contentMD5, java.lang.String copySource, java.lang.String bucket, java.lang.String object, java.lang.Integer partNumber, java.lang.Long uploadId, java.io.InputStream is)  
      javax.ws.rs.core.Response deleteBucket​(java.lang.String authorization, java.lang.String bucket)  
      javax.ws.rs.core.Response deleteObjectOrAbortMultipartUpload​(java.lang.String authorization, java.lang.String bucket, java.lang.String object, java.lang.Long uploadId)  
      javax.ws.rs.core.Response getBucket​(java.lang.String authorization, java.lang.String bucket, java.lang.String markerParam, java.lang.String prefixParam, java.lang.String delimiterParam, java.lang.String encodingTypeParam, int maxKeysParam)  
      javax.ws.rs.core.Response getObjectMetadata​(java.lang.String authorization, java.lang.String bucket, java.lang.String object)  
      javax.ws.rs.core.Response getObjectOrListParts​(java.lang.String authorization, java.lang.String range, java.lang.String bucket, java.lang.String object, java.lang.Long uploadId)  
      static java.lang.String getUserFromAuthorization​(java.lang.String authorization)
      Gets the user from the authorization header string for AWS Signature Version 4.
      javax.ws.rs.core.Response initiateOrCompleteMultipartUpload​(java.lang.String authorization, java.lang.String bucket, java.lang.String object, java.lang.String uploads, java.lang.Long uploadId)  
      javax.ws.rs.core.Response listAllMyBuckets​(java.lang.String authorization)
      Lists all buckets owned by you.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • BUCKET_SEPARATOR

        public static final java.lang.String BUCKET_SEPARATOR
        Bucket must be a directory directly under a mount point. If it is under a non-root mount point, the bucket separator must be used as the separator in the bucket name, for example, mount:point:bucket represents Alluxio directory /mount/point/bucket.
        See Also:
        Constant Field Values
    • Constructor Detail

      • S3RestServiceHandler

        public S3RestServiceHandler​(@Context
                                    javax.servlet.ServletContext context)
        Constructs a new S3RestServiceHandler.
        Parameters:
        context - context for the servlet
    • Method Detail

      • getUserFromAuthorization

        public static java.lang.String getUserFromAuthorization​(java.lang.String authorization)
        Gets the user from the authorization header string for AWS Signature Version 4.
        Parameters:
        authorization - the authorization header string
        Returns:
        the user
      • listAllMyBuckets

        @GET
        public javax.ws.rs.core.Response listAllMyBuckets​(@HeaderParam("Authorization")
                                                          java.lang.String authorization)
        Lists all buckets owned by you.
        Parameters:
        authorization - header parameter authorization
        Returns:
        the response object
      • getBucket

        @GET
        @Path("{bucket}/")
        public javax.ws.rs.core.Response getBucket​(@HeaderParam("Authorization")
                                                   java.lang.String authorization,
                                                   @PathParam("bucket")
                                                   java.lang.String bucket,
                                                   @QueryParam("marker")
                                                   java.lang.String markerParam,
                                                   @QueryParam("prefix")
                                                   java.lang.String prefixParam,
                                                   @QueryParam("delimiter")
                                                   java.lang.String delimiterParam,
                                                   @QueryParam("encoding-type")
                                                   java.lang.String encodingTypeParam,
                                                   @QueryParam("max-keys")
                                                   int maxKeysParam)
      • createBucket

        @PUT
        @Path("{bucket}/")
        public javax.ws.rs.core.Response createBucket​(@HeaderParam("Authorization")
                                                      java.lang.String authorization,
                                                      @PathParam("bucket")
                                                      java.lang.String bucket)
      • deleteBucket

        @DELETE
        @Path("{bucket}/")
        public javax.ws.rs.core.Response deleteBucket​(@HeaderParam("Authorization")
                                                      java.lang.String authorization,
                                                      @PathParam("bucket")
                                                      java.lang.String bucket)
      • createObjectOrUploadPart

        @PUT
        @Path("{bucket}/{object:.+}")
        @Consumes("*/*")
        public javax.ws.rs.core.Response createObjectOrUploadPart​(@HeaderParam("Authorization")
                                                                  java.lang.String authorization,
                                                                  @HeaderParam("Content-MD5")
                                                                  java.lang.String contentMD5,
                                                                  @HeaderParam("x-amz-copy-source")
                                                                  java.lang.String copySource,
                                                                  @PathParam("bucket")
                                                                  java.lang.String bucket,
                                                                  @PathParam("object")
                                                                  java.lang.String object,
                                                                  @QueryParam("partNumber")
                                                                  java.lang.Integer partNumber,
                                                                  @QueryParam("uploadId")
                                                                  java.lang.Long uploadId,
                                                                  java.io.InputStream is)
      • initiateOrCompleteMultipartUpload

        @POST
        @Path("{bucket}/{object:.+}")
        @Consumes({"application/octet-stream","application/xml"})
        public javax.ws.rs.core.Response initiateOrCompleteMultipartUpload​(@HeaderParam("Authorization")
                                                                           java.lang.String authorization,
                                                                           @PathParam("bucket")
                                                                           java.lang.String bucket,
                                                                           @PathParam("object")
                                                                           java.lang.String object,
                                                                           @QueryParam("uploads")
                                                                           java.lang.String uploads,
                                                                           @QueryParam("uploadId")
                                                                           java.lang.Long uploadId)
      • getObjectMetadata

        @HEAD
        @Path("{bucket}/{object:.+}")
        public javax.ws.rs.core.Response getObjectMetadata​(@HeaderParam("Authorization")
                                                           java.lang.String authorization,
                                                           @PathParam("bucket")
                                                           java.lang.String bucket,
                                                           @PathParam("object")
                                                           java.lang.String object)
      • getObjectOrListParts

        @GET
        @Path("{bucket}/{object:.+}")
        @Produces({"application/xml","application/octet-stream"})
        public javax.ws.rs.core.Response getObjectOrListParts​(@HeaderParam("Authorization")
                                                              java.lang.String authorization,
                                                              @HeaderParam("Range")
                                                              java.lang.String range,
                                                              @PathParam("bucket")
                                                              java.lang.String bucket,
                                                              @PathParam("object")
                                                              java.lang.String object,
                                                              @QueryParam("uploadId")
                                                              java.lang.Long uploadId)
      • deleteObjectOrAbortMultipartUpload

        @DELETE
        @Path("{bucket}/{object:.+}")
        public javax.ws.rs.core.Response deleteObjectOrAbortMultipartUpload​(@HeaderParam("Authorization")
                                                                            java.lang.String authorization,
                                                                            @PathParam("bucket")
                                                                            java.lang.String bucket,
                                                                            @PathParam("object")
                                                                            java.lang.String object,
                                                                            @QueryParam("uploadId")
                                                                            java.lang.Long uploadId)