//2012-05-31 johnpfeiffer requires jets3t-0.9.0 , Apache: log4j-1.2.16 , commons-codec-1.4 , commons-logging-1.1.1, httpclient, httpcore
// delimiters and keys http://docs.amazonwebservices.com/AmazonS3/latest/dev/ListingKeysHierarchy.html
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.jets3t.service.Jets3tProperties;
import org.jets3t.service.S3ServiceException;
import org.jets3t.service.ServiceException;
import org.jets3t.service.StorageObjectsChunk;
import org.jets3t.service.impl.rest.httpclient.RestS3Service;
import org.jets3t.service.model.S3Bucket;
import org.jets3t.service.model.StorageObject;
import org.jets3t.service.security.AWSCredentials;
import org.jets3t.service.security.ProviderCredentials;
public class Main
{
static Logger rootLogger = Logger.getRootLogger();
public static void main(String[] args)
{
if( !rootLogger.getAllAppenders().hasMoreElements() )
{ rootLogger.setLevel( Level.INFO );
rootLogger.addAppender( new ConsoleAppender( new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN ) ) );
}
Jets3tProperties jets3tProperties = new Jets3tProperties ();
String awsAccessKey = "accesskey";
String awsSecretKey = "sharedsecret";
jets3tProperties.setProperty( "s3service.s3-endpoint" , "devncss.nifty.com" ); //s3 compatible
jets3tProperties.setProperty( "s3service.s3-endpoint-http-port" , "80" );
jets3tProperties.setProperty( "s3service.s3-endpoint-https-port" , "443" );
jets3tProperties.setProperty( "s3service.https-only" , "false" );
ProviderCredentials providerCredentials = new AWSCredentials( awsAccessKey , awsSecretKey );
S3Bucket[] myBuckets = null;
S3Bucket currentBucket = null;
RestS3Service s3Service = null;
try{
s3Service = new RestS3Service( providerCredentials , null , null , jets3tProperties );
System.out.println( "endpoint = " + s3Service.getEndpoint() );
myBuckets = s3Service.listAllBuckets();
}catch( S3ServiceException e )
{ e.printStackTrace();
}
if( myBuckets != null )
{ System.out.println( "How many buckets? " + myBuckets.length );
for( int i=0; i<myBuckets.length; i++ )
{ System.out.println( myBuckets[i].getName() );
}
}else
{ System.out.println( "ERROR: unable to list all buckets" );
}
String bucketName = "test-bucket";
try{
currentBucket = s3Service.getBucket( bucketName );
if( currentBucket == null )
{ System.out.println( "Could not get bucket: " + bucketName );
}else
{
String prefix = "";
String delimiter = null; // way to filter out , i.e. /USA/CA/Carmel using filter '/' would return the object with key Carmel
long maxListingLength = 2;
String priorLastKey = null;
boolean completeListing = false; //if set to true it will ignore listing length
StorageObjectsChunk buffer = null;
buffer = s3Service.listObjectsChunked( bucketName , prefix , delimiter, maxListingLength, priorLastKey , completeListing );
StorageObject[] results = buffer.getObjects();
if( results == null || results.length == 0 )
{ System.out.println( "No results found with prefix: " + prefix + " from " + bucketName );
}else
for( int i=0; i<results.length; i++ )
{ System.out.println( results[i].getKey() );
}
}
}catch( S3ServiceException s3e )
{ s3e.printStackTrace();
}catch( ServiceException se )
{ se.printStackTrace();
}catch( Exception e )
{ e.printStackTrace();
}
}
} //end class