io.nats.client.ObjectStore Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jnats Show documentation
Show all versions of jnats Show documentation
Client library for working with the NATS messaging system.
// Copyright 2022 The NATS Authors
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at:
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package io.nats.client;
import io.nats.client.api.*;
import io.nats.client.impl.NatsObjectStoreWatchSubscription;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.NoSuchAlgorithmException;
import java.util.List;
/**
* Object Store Management context for creation and access to key value buckets.
*/
public interface ObjectStore {
/**
* Get the name of the object store's bucket.
* @return the name
*/
String getBucketName();
/**
* Place the contents of the input stream into a new object.
* @param meta the metadata for the object
* @param inputStream the source input stream
* @return the ObjectInfo for the saved object
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
* @throws NoSuchAlgorithmException if the Digest Algorithm is not known. Currently, the only supported algorithm is SHA-256
*/
ObjectInfo put(ObjectMeta meta, InputStream inputStream) throws IOException, JetStreamApiException, NoSuchAlgorithmException;
/**
* Place the contents of the input stream into a new object.
* @param objectName the name of the object
* @param inputStream the source input stream
* @return the ObjectInfo for the saved object
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
* @throws NoSuchAlgorithmException if the Digest Algorithm is not known. Currently, the only supported algorithm is SHA-256
*/
ObjectInfo put(String objectName, InputStream inputStream) throws IOException, JetStreamApiException, NoSuchAlgorithmException;
/**
* Place the bytes into a new object.
* @param objectName the name of the object
* @param input the bytes to store
* @return the ObjectInfo for the saved object
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
* @throws NoSuchAlgorithmException if the Digest Algorithm is not known. Currently, the only supported algorithm is SHA-256
*/
ObjectInfo put(String objectName, byte[] input) throws IOException, JetStreamApiException, NoSuchAlgorithmException;
/**
* Place the contents of the file into a new object using the file name as the object name.
* @param file the file to read
* @return the ObjectInfo for the saved object
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
* @throws NoSuchAlgorithmException if the Digest Algorithm is not known. Currently, the only supported algorithm is SHA-256
*/
ObjectInfo put(File file) throws IOException, JetStreamApiException, NoSuchAlgorithmException;
/**
* Get an object by name from the store, reading it into the output stream, if the object exists.
* @param objectName The name of the object
* @param outputStream the destination stream.
* @return the ObjectInfo for the object name or throw an exception if it does not exist or is deleted.
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
* @throws InterruptedException if the thread is interrupted
* @throws NoSuchAlgorithmException if the Digest Algorithm is not known. Currently, the only supported algorithm is SHA-256
*/
ObjectInfo get(String objectName, OutputStream outputStream) throws IOException, JetStreamApiException, InterruptedException, NoSuchAlgorithmException;
/**
* Get the info for an object if the object exists / is not deleted.
* @param objectName The name of the object
* @return the ObjectInfo for the object name or throw an exception if it does not exist.
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
*/
ObjectInfo getInfo(String objectName) throws IOException, JetStreamApiException;
/**
* Get the info for an object if the object exists, optionally including deleted.
* @param objectName The name of the object
* @param includingDeleted whether to return info for deleted objects
* @return the ObjectInfo for the object name or throw an exception if it does not exist.
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
*/
ObjectInfo getInfo(String objectName, boolean includingDeleted) throws IOException, JetStreamApiException;
/**
* Update the metadata of name, description or headers. All other changes are ignored.
* @param objectName The name of the object
* @param meta the metadata with the new or unchanged name, description and headers.
* @return the ObjectInfo after update
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
*/
ObjectInfo updateMeta(String objectName, ObjectMeta meta) throws IOException, JetStreamApiException;
/**
* Delete the object by name. A No-op if the object is already deleted.
* @param objectName The name of the object
* @return the ObjectInfo after delete or throw an exception if it does not exist.
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
*/
ObjectInfo delete(String objectName) throws IOException, JetStreamApiException;
/**
* Add a link to another object. A link cannot be for another link.
* @param objectName The name of the object
* @param toInfo the info object of the object to link to
* @return the ObjectInfo for the link as saved or throws an exception
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
*/
ObjectInfo addLink(String objectName, ObjectInfo toInfo) throws IOException, JetStreamApiException;
/**
* Add a link to another object store (bucket).
* @param objectName The name of the object
* @param toStore the store object to link to
* @return the ObjectInfo for the link as saved or throws an exception
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
*/
ObjectInfo addBucketLink(String objectName, ObjectStore toStore) throws IOException, JetStreamApiException;
/**
* Close (seal) the bucket to changes. The store (bucket) will be read only.
* @return the status object
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
*/
ObjectStoreStatus seal() throws IOException, JetStreamApiException;
/**
* Get a list of all object [infos] in the store.
* @return the list of objects
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
* @throws InterruptedException if the thread is interrupted
*/
List getList() throws IOException, JetStreamApiException, InterruptedException;
/**
* Create a watch on the store (bucket).
* @param watcher the implementation to receive changes.
* @param watchOptions the watch options to apply. If multiple conflicting options are supplied, the last options wins.
* @return the NatsObjectStoreWatchSubscription
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data
* @throws InterruptedException if the thread is interrupted
*/
NatsObjectStoreWatchSubscription watch(ObjectStoreWatcher watcher, ObjectStoreWatchOption... watchOptions) throws IOException, JetStreamApiException, InterruptedException;
/**
* Get the ObjectStoreStatus object.
* @return the status object
* @throws IOException covers various communication issues with the NATS server such as timeout or interruption
* @throws JetStreamApiException the request had an error related to the data the request had an error related to the data
*/
ObjectStoreStatus getStatus() throws IOException, JetStreamApiException;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy