Examples of SBucket


Examples of com.cloud.bridge.model.SBucket

    String bucketName = request.getBucketName();
    String nameKey = request.getKey();

    // -> does the bucket exist and can we write to it?
    SBucketDao bucketDao = new SBucketDao();
    SBucket bucket = bucketDao.getByName(bucketName);
    if (bucket == null) {
      logger.error( "initiateMultipartUpload failed since " + bucketName + " does not exist" );
      response.setResultCode(404);
    }
     
    S3PolicyContext context = new S3PolicyContext( PolicyActions.PutObject, bucketName );
    context.setKeyName( nameKey );
    context.setEvalParam( ConditionKeys.Acl, request.getCannedAccess());
    verifyAccess( context, "SBucket", bucket.getId(), SAcl.PERMISSION_WRITE );

    createUploadFolder( bucketName );

        try {
          MultipartLoadDao uploadDao = new MultipartLoadDao();
View Full Code Here

Examples of com.cloud.bridge.model.SBucket

      S3PutObjectInlineResponse response = new S3PutObjectInlineResponse()
    String bucketName = request.getBucketName();

    // -> we need to look up the final bucket to figure out which mount point to use to save the part in
    SBucketDao bucketDao = new SBucketDao();
    SBucket bucket = bucketDao.getByName(bucketName);
    if (bucket == null) {
      logger.error( "saveUploadedPart failed since " + bucketName + " does not exist" );
      response.setResultCode(404);
    }
    S3PolicyContext context = new S3PolicyContext( PolicyActions.PutObject, bucketName );
    context.setKeyName( request.getKey());
    verifyAccess( context, "SBucket", bucket.getId(), SAcl.PERMISSION_WRITE );
   
    Tuple<SHost, String> tupleBucketHost = getBucketStorageHost(bucket);   
    S3BucketAdapter bucketAdapter = getStorageHostBucketAdapter(tupleBucketHost.getFirst());
    String itemFileName = new String( uploadId + "-" + partNumber );
    InputStream is = null;
View Full Code Here

Examples of com.cloud.bridge.model.SBucket

    String bucketName = request.getBucketName();
    String key = request.getKey();
    S3MetaDataEntry[] meta = request.getMetaEntries();
   
    SBucketDao bucketDao = new SBucketDao();
    SBucket bucket = bucketDao.getByName(bucketName);
    if (bucket == null) {
      logger.error( "completeMultipartUpload( failed since " + bucketName + " does not exist" );
      response.setResultCode(404);
    }   

    // [B] Now we need to create the final re-assembled object
    //  -> the allocObjectItem checks for the bucket policy PutObject permissions
    Tuple<SObject, SObjectItem> tupleObjectItem = allocObjectItem(bucket, key, meta, null, request.getCannedAccess());
    Tuple<SHost, String> tupleBucketHost = getBucketStorageHost(bucket);   
   
    S3BucketAdapter bucketAdapter = getStorageHostBucketAdapter(tupleBucketHost.getFirst());
    String itemFileName = tupleObjectItem.getSecond().getStoredPath();
   
    // -> Amazon defines that we must return a 200 response immediately to the client, but
    // -> we don't know the version header until we hit here
    httpResp.setStatus(200);
      httpResp.setContentType("text/xml; charset=UTF-8");
    String version = tupleObjectItem.getSecond().getVersion();
    if (null != version) httpResp.addHeader( "x-amz-version-id", version )
        httpResp.flushBuffer();
   

        // [C] Re-assemble the object from its uploaded file parts
    try {
      // explicit transaction control to avoid holding transaction during long file concatenation process
      PersistContext.commitTransaction();
     
      Tuple<String, Long> result = bucketAdapter.concatentateObjects( tupleBucketHost.getSecond(), bucket.getName(), itemFileName, ServiceProvider.getInstance().getMultipartDir(), parts, os );
      response.setETag(result.getFirst());
      response.setLastModified(DateHelper.toCalendar( tupleObjectItem.getSecond().getLastModifiedTime()));
   
      SObjectItemDao itemDao = new SObjectItemDao();
      SObjectItem item = itemDao.get( tupleObjectItem.getSecond().getId());
View Full Code Here

Examples of com.cloud.bridge.model.SBucket

    long contentLength = request.getContentLength();
    S3MetaDataEntry[] meta = request.getMetaEntries();
    S3AccessControlList acl = request.getAcl();
   
    SBucketDao bucketDao = new SBucketDao();
    SBucket bucket = bucketDao.getByName(bucketName);
    if (bucket == null) throw new NoSuchObjectException("Bucket " + bucketName + " does not exist");
   

    // -> is the caller allowed to write the object?
    //  -> the allocObjectItem checks for the bucket policy PutObject permissions
    Tuple<SObject, SObjectItem> tupleObjectItem = allocObjectItem(bucket, key, meta, acl, request.getCannedAccess());
    Tuple<SHost, String> tupleBucketHost = getBucketStorageHost(bucket);   
   
    S3BucketAdapter bucketAdapter = getStorageHostBucketAdapter(tupleBucketHost.getFirst());
    String itemFileName = tupleObjectItem.getSecond().getStoredPath();
    InputStream is = null;

    try {
      // explicit transaction control to avoid holding transaction during file-copy process
      PersistContext.commitTransaction();
     
      is = request.getDataInputStream();
      String md5Checksum = bucketAdapter.saveObject(is, tupleBucketHost.getSecond(), bucket.getName(), itemFileName);
      response.setETag(md5Checksum);
      response.setLastModified(DateHelper.toCalendar( tupleObjectItem.getSecond().getLastModifiedTime()));
          response.setVersion( tupleObjectItem.getSecond().getVersion());
   
      SObjectItemDao itemDao = new SObjectItemDao();
View Full Code Here

Examples of com.cloud.bridge.model.SBucket

    long contentLength = request.getContentLength();
    S3MetaDataEntry[] meta = request.getMetaEntries();
    S3AccessControlList acl = request.getAcl();
   
    SBucketDao bucketDao = new SBucketDao();
    SBucket bucket = bucketDao.getByName(bucketName);
    if(bucket == null) throw new NoSuchObjectException("Bucket " + bucketName + " does not exist");
   
    // -> is the caller allowed to write the object? 
    //  -> the allocObjectItem checks for the bucket policy PutObject permissions
    Tuple<SObject, SObjectItem> tupleObjectItem = allocObjectItem(bucket, key, meta, acl, null);
    Tuple<SHost, String> tupleBucketHost = getBucketStorageHost(bucket);
     
    S3BucketAdapter bucketAdapter =  getStorageHostBucketAdapter(tupleBucketHost.getFirst());
    String itemFileName = tupleObjectItem.getSecond().getStoredPath();
    InputStream is = null;
    try {
      // explicit transaction control to avoid holding transaction during file-copy process
      PersistContext.commitTransaction();
     
      is = request.getInputStream();
      String md5Checksum = bucketAdapter.saveObject(is, tupleBucketHost.getSecond(), bucket.getName(), itemFileName);
      response.setETag(md5Checksum);
      response.setLastModified(DateHelper.toCalendar( tupleObjectItem.getSecond().getLastModifiedTime()));
     
      SObjectItemDao itemDao = new SObjectItemDao();
      SObjectItem item = itemDao.get( tupleObjectItem.getSecond().getId());
View Full Code Here

Examples of com.cloud.bridge.model.SBucket

     
      // [A] First find the object in the bucket
      S3Response response  = new S3Response();  
      SBucketDao bucketDao = new SBucketDao();
      String bucketName = request.getBucketName();
      SBucket sbucket = bucketDao.getByName( bucketName );
      if(sbucket == null) {
        response.setResultCode(404);
        response.setResultDescription("Bucket " + bucketName + "does not exist");
        return response;
      }
     
      SObjectDao sobjectDao = new SObjectDao();
      String nameKey = request.getKey();
      SObject sobject = sobjectDao.getByNameKey( sbucket, nameKey );    
      if(sobject == null) {
        response.setResultCode(404);
        response.setResultDescription("Object " + request.getKey() + " in bucket " + bucketName + " does not exist");
        return response;
      }
     
    String deletionMark = sobject.getDeletionMark();
    if (null != deletionMark) {
      response.setResultCode(404);
      response.setResultDescription("Object " + request.getKey() + " has been deleted (1)");
      return response;
    }
   

    // [B] Versioning allow the client to ask for a specific version not just the latest
    SObjectItem item = null;
        int versioningStatus = sbucket.getVersioningStatus();
    String wantVersion = request.getVersion();
    if ( SBucket.VERSIONING_ENABLED == versioningStatus && null != wantVersion)
       item = sobject.getVersion( wantVersion );
    else item = sobject.getLatestVersion(( SBucket.VERSIONING_ENABLED != versioningStatus ));   
     
View Full Code Here

Examples of com.cloud.bridge.model.SBucket

      // [A] Does the object exist that holds the ACL we are looking for?
      S3AccessControlPolicy policy = new S3AccessControlPolicy()
      SBucketDao bucketDao = new SBucketDao();
      String bucketName = request.getBucketName();
      SBucket sbucket = bucketDao.getByName( bucketName );
      if (sbucket == null)
        throw new NoSuchObjectException("Bucket " + bucketName + " does not exist");
     
      SObjectDao sobjectDao = new SObjectDao();
      String nameKey = request.getKey();
      SObject sobject = sobjectDao.getByNameKey( sbucket, nameKey );
      if (sobject == null)
        throw new NoSuchObjectException("Object " + request.getKey() + " does not exist");
       
    String deletionMark = sobject.getDeletionMark();
    if (null != deletionMark) {
      policy.setResultCode(404);
      policy.setResultDescription("Object " + request.getKey() + " has been deleted (1)");
      return policy;
    }
   

    // [B] Versioning allow the client to ask for a specific version not just the latest
    SObjectItem item = null;
        int versioningStatus = sbucket.getVersioningStatus();
    String wantVersion = request.getVersion();
    if ( SBucket.VERSIONING_ENABLED == versioningStatus && null != wantVersion)
       item = sobject.getVersion( wantVersion );
    else item = sobject.getLatestVersion(( SBucket.VERSIONING_ENABLED != versioningStatus ));   
     
View Full Code Here

Examples of com.cloud.bridge.model.SBucket

      int resultCode  = 200;

      // [A] Verify that the bucket and the object exist
    SBucketDao bucketDao = new SBucketDao();
    String bucketName = request.getBucketName();
    SBucket sbucket = bucketDao.getByName(bucketName);
    if (sbucket == null) {
      response.setResultCode(404);
      response.setResultDescription("Bucket " + request.getBucketName() + " does not exist");
      return response;
    }

    SObjectDao objectDao = new SObjectDao();
    String nameKey = request.getKey();
    SObject sobject = objectDao.getByNameKey( sbucket, nameKey );
    if (sobject == null) {
      response.setResultCode(404);
      response.setResultDescription("Object " + request.getKey() + " does not exist in bucket " + request.getBucketName());
      return response;
    }
   
    String deletionMark = sobject.getDeletionMark();
    if (null != deletionMark) {
        response.setDeleteMarker( deletionMark );
      response.setResultCode(404);
      response.setResultDescription("Object " + request.getKey() + " has been deleted (1)");
      return response;
    }
   

    // [B] Versioning allow the client to ask for a specific version not just the latest
    SObjectItem item = null;
        int versioningStatus = sbucket.getVersioningStatus();
    String wantVersion = request.getVersion();
    if ( SBucket.VERSIONING_ENABLED == versioningStatus && null != wantVersion)      
       item = sobject.getVersion( wantVersion );
    else item = sobject.getLatestVersion(( SBucket.VERSIONING_ENABLED != versioningStatus ));   
     
View Full Code Here

Examples of com.cloud.bridge.model.SBucket

  {   
    // -> verify that the bucket and object exist
    S3Response response  = new S3Response();
    SBucketDao bucketDao = new SBucketDao();
    String bucketName = request.getBucketName();
    SBucket sbucket = bucketDao.getByName( bucketName );
    if (sbucket == null) {
      response.setResultCode(404);
      response.setResultDescription("Bucket does not exist");
      return response;
    }
   
    SObjectDao objectDao = new SObjectDao();
    String nameKey = request.getKey();
    SObject sobject = objectDao.getByNameKey( sbucket, nameKey );
    if (sobject == null) {
      response.setResultCode(404);
      response.setResultDescription("Bucket does not exist");
      return response;
    }
   
       
    // -> versioning controls what delete means
    String storedPath = null;
    SObjectItem item = null;
        int versioningStatus = sbucket.getVersioningStatus();
    if ( SBucket.VERSIONING_ENABLED == versioningStatus )
      {
       String wantVersion = request.getVersion();
       S3PolicyContext context = new S3PolicyContext( PolicyActions.DeleteObjectVersion, bucketName );
       context.setKeyName( nameKey );
       context.setEvalParam( ConditionKeys.VersionId, wantVersion );
       verifyAccess( context, "SBucket", sbucket.getId(), SAcl.PERMISSION_WRITE );

       if (null == wantVersion) {
         // -> if versioning is on and no versionId is given then we just write a deletion marker
         sobject.setDeletionMark( UUID.randomUUID().toString());
         objectDao.update( sobject );
       }
       else
          // -> are we removing the delete marker?
          String deletionMarker = sobject.getDeletionMark();
          if (null != deletionMarker && wantVersion.equalsIgnoreCase( deletionMarker )) {
            sobject.setDeletionMark( null )
              objectDao.update( sobject )
              response.setResultCode(204);
            return response;
                }
         
          // -> if versioning is on and the versionId is given then we delete the object matching that version
            if ( null == (item = sobject.getVersion( wantVersion ))) {
               response.setResultCode(404);
               return response;
            }
            else {
               // -> just delete the one item that matches the versionId from the database
               storedPath = item.getStoredPath();
               sobject.deleteItem( item.getId());
               objectDao.update( sobject );          
            }
       }
      }
    else
    {   // -> if versioning is off then we do delete the null object
       S3PolicyContext context = new S3PolicyContext( PolicyActions.DeleteObject, bucketName );
       context.setKeyName( nameKey );
       verifyAccess( context, "SBucket", sbucket.getId(), SAcl.PERMISSION_WRITE );

       if ( null == (item = sobject.getLatestVersion( true ))) {
            response.setResultCode(404);
            return response;
         }
View Full Code Here

Examples of com.cloud.bridge.model.SBucket

      if (null != temp) partMarker = Integer.parseInt( temp );

     
    // -> does the bucket exist, we may need it to verify access permissions
    SBucketDao bucketDao = new SBucketDao();
    SBucket bucket = bucketDao.getByName(bucketName);
    if (bucket == null) {
      logger.error( "listUploadParts failed since " + bucketName + " does not exist" );
        response.setStatus(404);
        return;
    }
 
      try {
          MultipartLoadDao uploadDao = new MultipartLoadDao();
          Tuple<String,String> exists = uploadDao.multipartExits( uploadId );
          if (null == exists) {
           response.setStatus(404);
           return;
          }
          owner = exists.getFirst();
         
          // -> the multipart initiator or bucket owner can do this action
          initiator = uploadDao.getInitiator( uploadId );
          if (null == initiator || !initiator.equals( UserContext.current().getAccessKey()))
          {
            try {
                // -> write permission on a bucket allows a PutObject / DeleteObject action on any object in the bucket
              S3PolicyContext context = new S3PolicyContext( PolicyActions.ListMultipartUploadParts, bucketName );
              context.setKeyName( exists.getSecond());
              S3Engine.verifyAccess( context, "SBucket", bucket.getId(), SAcl.PERMISSION_WRITE );
            }
            catch (PermissionDeniedException e) {
              response.setStatus(403);
              return;
            }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.