Interface OdilonClient

All Known Implementing Classes:
ODClient

public interface OdilonClient

OdilonClient contains the API to interact with an Odilon server.

The implementation of this Interface is ODClient

Example

This example connects to a Odilon server and sends a ping request to check the status of the server.

 {
 String endpoint = "http://localhost";
 int port = 9234;
 String accessKey = "odilon";
 String secretKey = "odilon";
                                                
 // OdilonClient is the interface, ODClient is the implementation
 OdilonClient client = new ODClient(endpoint, port, accessKey, secretKey);

 // ping checks the status of server, it returns the String "ok" if the server is normal
 String ping = client.ping();
 if (!ping.equals("ok")) {
        System.out.println("ping error -> " + ping);
        System.exit(1);
 }
 }
Author:
atolomei@novamens.com (Alejandro Tolomei), aferraria@novamens.com (Alejo Ferraria)
  • Method Details

    • close

      void close() throws ODClientException

      Shutdown Isn't Necessary because the threads and connections that are held will be released automatically if they remain idle

      Throws:
      ODClientException
    • isHTTPS

      boolean isHTTPS()
    • createBucket

      void createBucket(String bucketName) throws ODClientException

      Creates a new Bucket.

      Odilon stores objects using a flat structure of containers called Buckets. A bucket is like a folder, it just contains binary objects, potentially a very large number. Every object contained by a bucket has a unique ObjectName in that bucket; therefore, the pair BucketName + ObjectName is a Unique ID for each object in Odilon.

      The bucket must not exist, if it exists the method will throw a ODClientException.
      bucketName length must be lower or equal to SharedConstant.MAX_BUCKET_CHARS and
      match the regular expression SharedConstant.bucket_valid_regex (see isValidBucketName(java.lang.String))

      Example:
      
       	try {
        	 String bucketName = "bucket-demo";
         	//	check if the bucket exists, if not create it
         	if (client.existsBucket(bucketName))
            	 System.out.println("bucket already exists ->" + bucketName );
         	else 
            	 client.createBucket(bucketName);
       		} catch (ODClientException e) {
       			System.out.println( "HTTP status -> " + String.valueOf(e.getHttpStatus())+ " | ErrorMsg -> " + e.getMessage() + " Odilon Error Code -> " + String.valueOf(e.getErrorCode()) );
       		}
       
      Parameters:
      bucketName - Bucket name Throws ODClientException if the bucket already exists (error code ErrorCode.OBJECT_ALREADY_EXIST)
      Throws:
      ODClientException
    • renameBucket

      void renameBucket(String bucketName, String newBucketName) throws ODClientException

      Renames a Bucket.

      The new bucket name must not be used by another bucket

      Example:
      
       	try {
        	 String bucketName = "bucket-demo";
         	
           // check if the bucket exists, if not create it
         	if (client.existsBucket(bucketName))
            	 System.out.println("bucket already exists ->" + bucketName );
         	else 
            	 client.createBucket(bucketName);
            
            // rename bucket to "bucket-demo-renamed"
            
            client.renameBucket(bucketName, "bucket-demo-renamed");
            
       		} catch (ODClientException e) {
       			System.out.println( "HTTP status -> " + String.valueOf(e.getHttpStatus())+ " | ErrorMsg -> " + e.getMessage() + " Odilon Error Code -> " + String.valueOf(e.getErrorCode()) );
       		}
       
      Parameters:
      bucketName - existing Bucket name
      newBucketName - new Bucket name Throws ODClientException if the bucket does not exist (ErrorCode.BUCKET_NOT_EXISTS) if newBucketName is already used by another bucket (ErrorCode.OBJECT_ALREADY_EXIST)
      Throws:
      ODClientException
    • listBuckets

      List<io.odilon.model.Bucket> listBuckets() throws ODClientException

      Returns all buckets, sorted alphabetically

      Example:

      
        
       OdilonClient odilonClient = new ODClient(url, port, accessKey, secretKey);
       List<Bucket> bucketList = odilonClient.listBuckets();
       bucketList.forEach( bucket ->  {
       
       	System.out.println(bucket.creationDate() + ", " + bucket.name());
       
       	if ( odilonClient.isEmpty(bucket.getName()) )
       		System.out.println(bucket.name() + " -> is empty");
       	else
       		System.out.println(bucket.name() + " -> has objects");
       );
       }
       
       
      Returns:
      List of Buckets, sorted alphabetically see also Sample ListObjects program on GitHub
      Throws:
      ODClientException
    • isValidObjectName

      boolean isValidObjectName(String objectName)

      Returns true if the String objectName is a valid name for an Odilon object

      • objectName length less or equal to SharedConstant.MAX_OBJECT_CHARS
      • objectName must match Java Regular expression SharedConstant.object_valid_regex

      Informally speaking: object names can not have slash (/) or backslash (\)

      Examples of invalid object names:

      • 2023/11/349460828-7.2.a.3.implementacion.pdf
      • 2021/9/346049478-roses-2191636

      Examples of valid object names:

      • 1-documento rio-90876
      • 2023-6-346227578-Quinquela-773x458.jpeg
      • 2023-11-349460978-compliance-basic.png.enc
      Parameters:
      objectName - can not be null
      Returns:
      true if the objectName is a valid Odilon Object name
    • isValidBucketName

      boolean isValidBucketName(String bucketName)

      Returns true if the String bucketName is a valid name for an Odilon Bucket

      • bucketName length less or equal to SharedConstant.MAX_BUCKET_CHARS
      • bucketName must match Java Regular expression SharedConstant.bucket_valid_regex

        Informally speaking: letters A to Z and/or a to z, numbers, and/or - or _

      Parameters:
      bucketName - can not be null
      Returns:
      true if the bucketName is a valid Odilon Bucket name
    • existsBucket

      boolean existsBucket(String bucketName) throws ODClientException

      Returns true if a bucket with name bucketName exists

      Parameters:
      bucketName - can not be null
      Returns:
      true if the bucket exists in the Server
      Throws:
      ODClientException
    • isEmpty

      boolean isEmpty(String bucketName) throws ODClientException

      Returns true if the bucket has no Objects, otherwise false

      Parameters:
      bucketName - can not be null
      Returns:
      true if the bucket has no Objects Throws ODClientException if bucketName is not an existing Bucket
      the http error code ODHttpStatus.NOT_FOUND and Odilon's error code ErrorCode.BUCKET_NOT_EXISTS)
      Throws:
      ODClientException
    • getBucket

      io.odilon.model.Bucket getBucket(String bucketName) throws ODClientException

      Returns the Bucket

      It will throw a ODClientException if the bucket does not exist.

      Example:

      
       
       if (odilonClient.existsBucket("test-bucket")( {
       	Bucket bucket = odilonClient.getBucket("test-bucket");
       	System.out.println("bucket name ->" + bucket.getName() );
       	System.out.println("bucket created ->" + bucket.getCreationDate().toString() );
       }
       
       
      Parameters:
      bucketName - Bucket name
      Returns:
      Bucket Throws ODClientException
      BucketName is not an existing Bucket -> ODHttpStatus.NOT_FOUND with error code ErrorCode.BUCKET_NOT_EXISTS
      Throws:
      ODClientException
    • deleteBucket

      void deleteBucket(String bucketName) throws ODClientException

      Deletes a Bucket. The bucket must be empty to be deleted

      Example:

      try {
       // deletes all buckets that have no objects
       		for (Bucket bucket:odilonClient.listBuckets()) {
       			if (odilonClient.isEmpty(bucket.getName())) {
       				odilonClient.deleteBucket(bucket.getName());
       			}
       		}
        } catch (ODClientException e) {
       		System.out.println( "HTTP status -> " + String.valueOf(e.getHttpStatus())+ " | ErrorMsg -> " + e.getMessage() + " Odilon Error Code -> " + String.valueOf(e.getErrorCode()) );
       }
       
       
      Parameters:
      bucketName - Bucket name Throws ODHttpStatus.NOT_FOUND if Bucket does not exist, with error code ErrorCode.BUCKET_NOT_EXISTS
      ODHttpStatus.CONFLICT if Bucket does not exist, with error code ErrorCode.BUCKET_NOT_EMPTY
      Throws:
      ODClientException
    • deleteAllBucketVersions

      void deleteAllBucketVersions(String bucketName) throws ODClientException

      Deletes all the previous versions of all the Objects in the Bucket.
      Note that it does not delete the current version of the objects (called head version).

      This method is sometimes used to free disk in the server

      Async execution

      This method returns immediately after sending the command to the server, which processes the task asynchronously. The async command is atomic on each object but not globally, which means that until it finishes some objects can still have versions.

      Example:

      
       try {
             Bucket bucket = odilonClient.getBucket("test-version-control");
      
             odilonClient.deleteAllBucketVersions(bucket.getName());
             
       } catch (ODClientException e) {
       		System.out.println( "HTTP status -> " + String.valueOf(e.getHttpStatus())+ " | ErrorMsg -> " + e.getMessage() + " Odilon Error Code -> " + String.valueOf(e.getErrorCode()) );
       }
       
       
      Parameters:
      bucketName - Bucket name Throws ODClientException
      Bucket does not exist -> ODHttpStatus.NOT_FOUND with error code ErrorCode.BUCKET_NOT_EXISTS
      Server does not have Version Control enabled -> ODHttpStatus.METHOD_NOT_ALLOWED with error code ErrorCode.API_NOT_ENABLED Version Control not enabled
      Throws:
      ODClientException
    • existsObject

      boolean existsObject(String bucketName, String objectName) throws ODClientException, IOException

      Checks for the existence of an Object.

      Note that if the Bucket does not exist, the method does not throw an Exception, it returns false

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      Returns:
      true if the Object exist Throws ODClientException, IOException
      Throws:
      ODClientException
      IOException
    • getObjectMetadata

      io.odilon.model.ObjectMetadata getObjectMetadata(String bucketName, String objectName) throws ODClientException

      Returns the ObjectMetadata of the Object.
      In addition to the binary file, an Object has metadata (called ObjectMetadata) that is returned by some of the API calls. Odilon allows to retrieve Objects individually by bucketName + objectName and also supports to list the contents of a bucket and other simple queries.

      Every object contained by a bucket has a unique objectName in that bucket; therefore, the pair bucketName + objectName is a Global Unique Identifier for each object in Odilon.

      Example:

      try {
             Bucket bucket = odilonClient.getBucket("test-version-control");
             
             ObjectMetadata meta = odilonClient.getObjectMetadata(bucket.getName(), "test1");
             
             System.out.println(meta.toString());
             
       } catch (ODClientException e) {
       	System.out.println( "HTTP status -> " + String.valueOf(e.getHttpStatus())+ " | ErrorMsg -> " + e.getMessage() + " Odilon Error Code -> " + String.valueOf(e.getErrorCode()) );
       	System.exit(1);
       }
               
       
      Parameters:
      bucketName - can not be null
      objectName - can not be null
      Returns:
      ObjectMetadata from server Throws ODClientException if object does not exist
      Throws:
      ODClientException
    • getObject

      InputStream getObject(String bucketName, String objectName) throws ODClientException

      Returns the binary data (File) of this Object

      
        
       OdilonClient odilonClient = new ODClient(url, port, accessKey, secretKey);
       List<Bucket> bucketList = odilonClient.listBuckets();
       bucketList.forEach( bucket ->  {
       
       	System.out.println(bucket.creationDate() + ", " + bucket.name());
       
       	if ( odilonClient.isEmpty(bucket.getName()) )
       		System.out.println(bucket.name() + " -> is empty");
       	else
       		System.out.println(bucket.name() + " -> has objects");
       );
       }
       
       
      Parameters:
      bucketName - can not be null
      objectName - can not be null
      Throws:
      ODClientException
    • getObject

      void getObject(String bucketName, String objectName, String filePath) throws ODClientException, IOException

      Retrieves the binary data of this Object and saves it to a File with path filePath

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      filePath - path and file name where to save the data downloaded (example: "c:\temp\myfile.pdf") Throws if object does not exist -> ODHttpStatus.NOT_FOUND, ErrorCode.OBJECT_NOT_FOUND Throws IOException
      Throws:
      ODClientException
      IOException
    • getPresignedObjectUrl

      String getPresignedObjectUrl(String bucketName, String objectName, Optional<Integer> expiresInSeconds) throws ODClientException

      Returns a temporary URL to access or download the binary data of an Object without authentication

      A presigned URL is a way to grant temporary access to an Object, for example in an HTML webpage. It remains valid for a limited period of time which is specified when the URL is generated.

      For the following example see also listObjects(java.lang.String, java.util.Optional<java.lang.String>, java.util.Optional<java.lang.Integer>)

      Example:
      
       this.bucket = getClient().listBuckets().get(0);
      		
      		 ResultSet<Item<ObjectMetadata>> rs = getClient().listObjects(this.bucket.getName());
      		 int counter = 0;
      		 while (rs.hasNext() && counter++ < MAX) {
      			 Item<ObjectMetadata> item = rs.next();
      			 if (item.isOk()) {
      				 	ObjectMetadata meta = item.getObject();
       					
       					// by default the link lasts 7 days
      					logger.debug(meta.bucketName + " / " + meta.objectName + " (7 days) -> " + getClient().getPresignedObjectUrl(meta.bucketName, meta.objectName));	 
      					
      					// url valid for 5 minutes 
      					logger.debug(meta.bucketName + " / " + meta.objectName + " (5 min) -> " + getClient().getPresignedObjectUrl(meta.bucketName, meta.objectName, Optional<Integer>(Integer.valueOf(60*5)));	 
      			 }
      		 }
      	
       
      Parameters:
      bucketName - can not be null
      objectName - can not be null
      expiresInSeconds - duration in seconds for the url to be valid
      Returns:
      temporary url to download the file without authentication
      Throws:
      ODClientException
    • getPresignedObjectUrl

      String getPresignedObjectUrl(String bucketName, String objectName) throws ODClientException

      Returns a temporary URL to access or download the binary data of an Object without authentication

      This is method calls getPresignedObjectUrl(java.lang.String, java.lang.String, java.util.Optional<java.lang.Integer>) with the default value for expiresInSeconds (ie. 7 days in seconds)

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      Returns:
      temporary url to download the file without authentication
      Throws:
      ODClientException
    • putObjectStream

      io.odilon.model.ObjectMetadata putObjectStream(String bucketName, String objectName, InputStream stream, String fileName, String contentType) throws ODClientException

      Uploads a File or any other binary stream to the server. It will create a new object or update an existing one.

      Odilon stores objects using a flat structure of containers called Buckets.
      A bucket is like a folder, it just contains binary objects, potentially a very large number.
      Every object contained by a bucket has a unique ObjectName in that bucket; therefore, the pair BucketName + ObjectName is a Unique ID for each object in Odilon.

      Uploading a File requires the Bucket to exist and the ObjectName to be unique for that bucket.

      If the objectName does not exist in the bucket, the server will create a new object, if the objectName exists in the bucket the server will update the object with the new binary data. in this case, if the server has Version Control enabled it will make a new version and the previous version of the object will not be deleted. If the server does not have Version Control enabled, the former version will be discarded.

      Objects can optionally be uploaded with one or more user defined tags (String), for example to store a local id with the file uploaded

      Odilon client closes the InputStream after sending the data to the server. However, if an Exception other than ODClientException is thrown by this method, the InputStream may not have been closed.

      Therefore callers must always attempt to close the InputStream

      Example:
      
       File file = new File("test.pdf");
      	String bucketName = "bucket-demo";
      	String objectName = file.getName();
      
       try (InputStream inputStream = new BufferedInputStream(new FileInputStream(file))){	
      		client.putObjectStream(bucketName,objectName,inputStream,Optional.of(file.getName()),Optional.empty());
      	} catch (ODClientException e) {
       			System.out.println( "HTTP status -> " + String.valueOf(e.getHttpStatus())+ " | ErrorMsg -> " + e.getMessage() + " Odilon Error Code -> " + String.valueOf(e.getErrorCode()) );
      	} catch (FileNotFoundException | IOException e1) {
      		System.out.println(e1.getMessage());
      	}
       
       
      Parameters:
      bucketName - can not be null
      objectName - can not be null
      stream - can not be null
      fileName -
      contentType -
      Returns:
      ObjectMetadata of the Object created or updated
      Throws:
      ODClientException
    • putObject

      io.odilon.model.ObjectMetadata putObject(String bucketName, String objectName, File file) throws ODClientException

      Uploads a File or any other binary stream to the server. It will create a new object or update an existing one.

      This method does the same as putObject(java.lang.String, java.lang.String, java.io.File)
      but with a local File instead of an InputStream

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      file - can not be null, file.exists() must be true, file.isDirectory() must be false, Files.isRegularFile(file.toPath()) must be true Example:
      
       String endpoint = "http://localhost";
       int port = 9234;
       String accessKey = "odilon";
       String secretKey = "odilon";
       						
       // OdilonClient is the interface, ODClient is the implementation
       OdilonClient client = new ODClient(endpoint, port, accessKey, secretKey);
       
        File dir = new File("directoryToUpload");
        
      	String bucketName = "bucket-demo";
      
       // upload all Files from directory
       
       for (File file:dir.listFiles()) {
       	if (!file.isDirectory()) {
        	String objectName = fi.getName()+"-"+String.valueOf(Double.valueOf((Math.abs(Math.random()*100000))).intValue());
       		getClient().putObject(bucketName, objectName, fi);
        }
       }
       
       
      Returns:
      ObjectMetadata of the Object created or updated
      Throws:
      ODClientException
      See Also:
    • putObject

      io.odilon.model.ObjectMetadata putObject(String bucketName, String objectName, Optional<List<String>> customTags, File file) throws ODClientException

      Uploads a File or any other binary stream to the server. It will create a new object or update an existing one.

      This method does the same as putObject(java.lang.String, java.lang.String, java.io.File)
      but with a local File instead of an InputStream

      Parameters:
      bucketName -
      objectName -
      customTags - Optional List of user defined tags
      file -
      Returns:
      Throws:
      ODClientException
    • putObjectStream

      io.odilon.model.ObjectMetadata putObjectStream(String bucketName, String objectName, InputStream stream, String fileName) throws ODClientException

      Uploads a File or any other binary stream to the server. It will create a new object or update an existing one.

      This method calls putObject(java.lang.String, java.lang.String, java.io.File)

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      stream - InputStream with the binary data to upload
      fileName - name of the File uploaded
      Returns:
      the ObjectMetadata of the Object Throws ODClientException See Minio to Odilon migration sample program on GitHub
      Throws:
      ODClientException
    • putObjectStream

      io.odilon.model.ObjectMetadata putObjectStream(String bucketName, String objectName, InputStream stream, Optional<String> fileName, Optional<Long> size, Optional<String> contentType) throws ODClientException

      Uploads a InputStream to the server. It will create a new object or update it if already exists.

      This method calls putObject(java.lang.String, java.lang.String, java.io.File)

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      stream -
      fileName -
      size -
      contentType -
      Returns:
      Throws:
      ODClientException
    • putObjectStream

      io.odilon.model.ObjectMetadata putObjectStream(String bucketName, String objectName, InputStream stream, Optional<String> fileName, Optional<Long> size) throws ODClientException

      Uploads a File or any other binary stream to the server. It will create a new object or update an existing one.

      This method calls putObject(java.lang.String, java.lang.String, java.io.File)

      Parameters:
      bucketName - Bucket name
      objectName - Object name
      stream -
      fileName -
      size -
      Returns:
      Throws:
      ODClientException
    • putObjectStream

      io.odilon.model.ObjectMetadata putObjectStream(String bucketName, String objectName, InputStream stream, Optional<String> fileName, Optional<Long> size, Optional<String> contentType, Optional<List<String>> customTags) throws ODClientException

      Uploads a File or any other binary stream to the server. It will create a new object or update an existing one.

      This method calls putObject(java.lang.String, java.lang.String, java.io.File)

      Parameters:
      bucketName -
      objectName -
      stream -
      fileName -
      size -
      contentType -
      customTags -
      Returns:
      Throws:
      ODClientException
    • deleteObject

      void deleteObject(String bucketName, String objectName) throws ODClientException

      Removes an Object from a Bucket.

      Example:

      odilonClient.deleteObject("my-bucketname", "my-objectname"); 
      Parameters:
      bucketName - can not be null
      objectName - can not be null
      Throws:
      ODClientException
    • hasVersions

      boolean hasVersions(String bucketName, String objectName) throws ODClientException, IOException

      Returns true if the Object has previous versions, ie. at least there is one version older than the head version (in which case the head version must be greater than 0)

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      Returns:
      true if the Object has more versions than the head version (ie. the head version must be greater than 0) Throws ODClientException Throws IOException
      Throws:
      ODClientException
      IOException
    • getObjectMetadataPreviousVersion

      io.odilon.model.ObjectMetadata getObjectMetadataPreviousVersion(String bucketName, String objectName) throws ODClientException

      Returns ObjectMetadata of the version immediately previous to the head version, or null if there is no previous version

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      Returns:
      Throws:
      ODClientException
    • restoreObjectPreviousVersions

      void restoreObjectPreviousVersions(String bucketName, String objectName) throws ODClientException

      Restores the previous version of the Object and deletes current version.

      If the object does not have any previous versions, it throws an ODClientException

      Parameters:
      bucketName - can not be null
      objectName - can not be null Throws ODClientException
      • The server does not have Version Control enabled -> ODHttpStatus#METHOD_NOT_ALLOWED, ErrorCode#API_NOT_ENABLED

      • The Object does not have a previous version (i.e. current version is version 0) -> ODHttpStatus#NOT_FOUND, ErrorCode#OBJECT_NOT_FOUND

      • All the object's previous version has been deleted via deleteAllBucketVersions(java.lang.String) or deleteObjectAllVersions(java.lang.String,java.lang.String) -> ODHttpStatus#NOT_FOUND, ErrorCode#OBJECT_NOT_FOUND

      • Other, unexpected causes -> ODHttpStatus#INTERNAL_SERVER_ERROR, ErrorCode#INTERNAL_ERROR

      Throws:
      ODClientException
    • getObjectMetadataPreviousVersionAll

      List<io.odilon.model.ObjectMetadata> getObjectMetadataPreviousVersionAll(String bucketName, String objectName) throws ODClientException

      Returns all the previous versions of an Object, the current version (head version) is not included in the List returned

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      Returns:
      list of ObjectMetadata sorted by version number, from 0 to (head version - 1) Throws ODClientException
      Throws:
      ODClientException
    • getObjectPreviousVersion

      InputStream getObjectPreviousVersion(String bucketName, String objectName) throws ODClientException

      Returns the binary data of the object's previous version or null if there is no previous version.

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      Returns:
      ObjectMetadata of the object's previous version
      Throws:
      ODClientException
    • getObjectVersion

      InputStream getObjectVersion(String bucketName, String objectName, int version) throws ODClientException

      Returns the binary data of the version #version of the object's or null if the object does not have a version #version.

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      version -
      Returns:
      Throws:
      ODClientException
    • deleteObjectAllVersions

      void deleteObjectAllVersions(String bucketName, String objectName) throws ODClientException

      Deletes all the Object's previous versions, it does not delete the object current version (head version).

      After calling this method the Object will have only the head version.

      Parameters:
      bucketName - can not be null
      objectName - can not be null
      Throws:
      ODClientException
    • listObjects

      io.odilon.model.list.ResultSet<io.odilon.model.list.Item<io.odilon.model.ObjectMetadata>> listObjects(String bucketName, Optional<String> prefix, Optional<Integer> pageSize) throws ODClientException

      Lists the objects in the Bucket.

      ResultSet
      Item <ObjectMetadata> can contain:
      it item.isOk() -> a ObjectMetadata .
      otherwise -> or an String with an error

      If prefix is not Optional.empty() the list will include only objects where the objectName starts with the prefix.
      pageSize is the number of items retrieved by each call to the server, if the value is Optional.empty() the client will use the default pageSize value.

      Parameters:
      bucketName - can not be null
      prefix -
      pageSize -
      Returns:
      ResultSet<Item<ObjectMetadata>> . ResultSet is Iterable Item if ok() contain a instance of ObjectMetadata, otherwise a error() returns a String with the error

      Example list all bucket's objects:

       
       try {
      	ResultSet<Item <ObjectMetadata>> resultSet = client.listObjects(bucket.getName());
      		while (resultSet.hasNext()) {
      			Item item = resultSet.next();
      			if (item.isOk())
      				System.out.println("ObjectName:" +  item.getObject().objectName + " | file: " + item.getObject().fileName);
      			else
      				System.out.println(item.getErrorString());
      		}
      	} catch (ODClientException e) {
       		System.out.println( "HTTP status -> " + String.valueOf(e.getHttpStatus())+ " | ErrorMsg -> " + e.getMessage() + " Odilon Error Code -> " + String.valueOf(e.getErrorCode()) );
      	}
      </p>
      
       
      Throws:
      ODClientException
    • listObjects

      io.odilon.model.list.ResultSet<io.odilon.model.list.Item<io.odilon.model.ObjectMetadata>> listObjects(String bucketName, String prefix) throws ODClientException
      Parameters:
      bucketName - can not be null
      prefix -
      Returns:
      Throws:
      ODClientException
    • listObjects

      io.odilon.model.list.ResultSet<io.odilon.model.list.Item<io.odilon.model.ObjectMetadata>> listObjects(String bucketName) throws ODClientException
      Parameters:
      bucketName - can not be null
      Returns:
      Throws:
      ODClientException
    • listObjects

      io.odilon.model.list.ResultSet<io.odilon.model.list.Item<io.odilon.model.ObjectMetadata>> listObjects(io.odilon.model.Bucket bucket) throws ODClientException
      Parameters:
      bucket - can not be null
      Returns:
      ResulSet of Items
      Throws:
      ODClientException
    • ping

      String ping()

      Returns the String "ok" if the server is normal or a String with the error reported by the Server.
      If the client can not connect to the Server, the method returns a message "can not connect"

      Example:
      
       String endpoint = "http://localhost";
       int port = 9234;
       String accessKey = "odilon";
       String secretKey = "odilon";
       
       OdilonClient client = new ODClient(endpoint, port, accessKey, secretKey);
       
       String pingResult = odilonClient.ping();
       
       if (!pingResult.equals("ok")) {
         System.out.println( "Server error -> " + pingResult));
       }
       
      Returns:
      String "ok" or the error reported by the Server.
    • metrics

      io.odilon.model.MetricsValues metrics() throws ODClientException

      Returns an instance of MetricsValues with info related to the activity of the server

      They are counters of events and meters that measure events per second in a 1m 5m and 15m windows

      • Counter A counter is just a gauge for an AtomicLong instance. You can increment or decrement its value.
      • Meter A meter measures the rate of events over time (e.g., “requests per second”). In addition to the mean rate, meters also track 1-, 5-, and 15-minute moving averages.

      See https://metrics.dropwizard.io/4.2.0
      Example:

      cacheObjectHitCounter -> 1,224
      cacheObjectMissCounter -> 637
      cacheObjectSize -> 475
      decryptFileMeter -> 0.27 0.42 0.24
      encrpytFileMeter -> 0.49 0.67 0.46
      objectCreateCounter -> 475
      objectDeleteCounter -> 0
      objectDeleteVersionCounter -> 0
      objectGetMeter -> 0.55 0.85 0.48
      objectPutMeter -> 0.49 0.67 0.46
      objectUpdateCounter -> 162
      replicaObjectCreate -> 0
      replicaObjectDelete -> 0
      replicaObjectUpdate -> 0
      vaultDecryptMeter -> 0.00 0.00 0.00
      vaultEncryptMeter -> 0.00 0.00 0.00

      Returns:
      MetricsValues
      Throws:
      ODClientException
    • systemInfo

      io.odilon.model.SystemInfo systemInfo() throws ODClientException

      Returns an instance of SystemInfo with the info of the settings of the server

      Returns:
      SystemInfo
      Throws:
      ODClientException
    • isVersionControl

      boolean isVersionControl() throws ODClientException

      Checks if the server has version control enabled

      Returns:
      true if the server has version control enabled
      Throws:
      ODClientException
    • getUrl

      String getUrl()

      Returns the url of the Odilon server

      Returns:
      server url (without the port)
    • setTimeout

      void setTimeout(long connectTimeoutMilliseconds, long writeTimeoutMilliseconds, long readTimeoutMilliseconds)

      Sets HTTP connect, write and read timeouts. A value of 0 means no timeout, otherwise values must be between 1 and Integer.MAX_VALUE when converted to milliseconds.

      Example:
      odilonClient.setTimeout(TimeUnit.SECONDS.toMillis(10), TimeUnit.SECONDS.toMillis(10),
                                  TimeUnit.SECONDS.toMillis(30)); 
      Parameters:
      connectTimeoutMilliseconds - HTTP connect timeout in milliseconds.
      writeTimeoutMilliseconds - HTTP write timeout in milliseconds.
      readTimeoutMilliseconds - HTTP read timeout in milliseconds.
    • setChunkSize

      void setChunkSize(int chunkSize)
    • getChunkSize

      int getChunkSize()
    • traceOn

      void traceOn(OutputStream traceStream)

      enabled printing the request-response raw info to a stream

    • traceOff

      void traceOff() throws IOException

      disable printing the request-response raw info to a stream

      Throws:
      IOException
    • setCharset

      void setCharset(String c)
      Parameters:
      c -
    • getCharset

      String getCharset()
      Returns:
      Charsert "UTF-8" is the default value.
    • isAcceptAllCertificates

      boolean isAcceptAllCertificates()
    • isSSL

      boolean isSSL()