Class DefaultAsyncBucketManager

    • Field Detail

      • INDEX_WATCH_LOG_NAME

        public static final String INDEX_WATCH_LOG_NAME
        the name of the logger dedicated to index watching
        See Also:
        Constant Field Values
    • Method Detail

      • info

        public rx.Observable<BucketInfo> info()
        Description copied from interface: AsyncBucketManager
        Returns information about the connected bucket. The Observable can error under the following conditions: - com.couchbase.client.java.error.TranscodingException: If the server response could not be decoded.
        Specified by:
        info in interface AsyncBucketManager
        Returns:
        bucket information wrapped in a BucketInfo.
      • flush

        public rx.Observable<Boolean> flush()
        Description copied from interface: AsyncBucketManager
        Flushes the bucket (removes all data). Note that flush needs to be enabled on the bucket, otherwise an exception will be raised. The Observable can error under the following conditions: - com.couchbase.client.java.error.FlushDisabledException: If flush is disabled. - com.couchbase.client.core.CouchbaseException: If the server response could not be parsed.
        Specified by:
        flush in interface AsyncBucketManager
        Returns:
        true if the bucket was flushed, an failed Observable otherwise.
      • getDesignDocuments

        public rx.Observable<DesignDocument> getDesignDocuments​(boolean development)
        Description copied from interface: AsyncBucketManager
        Loads all DesignDocuments from development or production. The Observable can error under the following conditions: - com.couchbase.client.java.error.TranscodingException: If the server response could not be parsed.
        Specified by:
        getDesignDocuments in interface AsyncBucketManager
        Parameters:
        development - if the DesignDocuments should be loaded from development or production.
        Returns:
        zero to N invocations containing published DesignDocuments.
      • getDesignDocument

        public rx.Observable<DesignDocument> getDesignDocument​(String name,
                                                               boolean development)
        Description copied from interface: AsyncBucketManager
        Loads a DesignDocument by its name from either development or production. The Observable can error under the following conditions: - com.couchbase.client.java.error.TranscodingException: If the server response could not be parsed. - com.couchbase.client.java.error.DesignDocumentDoesNotExistException: If DesignDocument is not found.
        Specified by:
        getDesignDocument in interface AsyncBucketManager
        Parameters:
        name - the name of the DesignDocument.
        development - if it should be loaded from development or production.
        Returns:
        an observable that resolves into a DesignDocument.
      • insertDesignDocument

        public rx.Observable<DesignDocument> insertDesignDocument​(DesignDocument designDocument,
                                                                  boolean development)
        Description copied from interface: AsyncBucketManager
        Inserts a DesignDocument into development or production if it does not exist. Note that inserting a DesignDocument is not an atomic operation, but instead internally performs a AsyncBucketManager.getDesignDocument(String) operation first. While expected to be very uncommon, a race condition may happen if two users at the same time perform this operation with the same DesignDocument. The Observable can error under the following conditions: - com.couchbase.client.java.error.TranscodingException: If the server response could not be parsed. - com.couchbase.client.java.error.DesignDocumentAlreadyExistsException: If the DesignDocument exists.
        Specified by:
        insertDesignDocument in interface AsyncBucketManager
        Parameters:
        designDocument - the DesignDocument to insert.
        development - if it should be inserted into development or production (published).
        Returns:
        the inserted DesignDocument on success.
      • upsertDesignDocument

        public rx.Observable<DesignDocument> upsertDesignDocument​(DesignDocument designDocument)
        Description copied from interface: AsyncBucketManager
        Upserts (inserts or replaces) a DesignDocument into production. If you want to add or update view definitions to an existing design document, you need to make sure you have all the views (including old ones) in the DesignDocument. Use AsyncBucketManager.getDesignDocument(String) to get the old list and add your new view to it before calling this method. The Observable can error under the following conditions: - com.couchbase.client.java.error.TranscodingException: If the server response could not be parsed.
        Specified by:
        upsertDesignDocument in interface AsyncBucketManager
        Parameters:
        designDocument - the DesignDocument to upsert.
        Returns:
        the upserted DesignDocument on success.
      • upsertDesignDocument

        public rx.Observable<DesignDocument> upsertDesignDocument​(DesignDocument designDocument,
                                                                  boolean development)
        Description copied from interface: AsyncBucketManager
        Upserts (inserts or replaces) a DesignDocument into production or development. If you want to add or update view definitions to an existing design document, you need to make sure you have all the views (including old ones) in the DesignDocument. Use AsyncBucketManager.getDesignDocument(String) to get the old list and add your new view to it before calling this method. The Observable can error under the following conditions: - com.couchbase.client.java.error.TranscodingException: If the server response could not be parsed.
        Specified by:
        upsertDesignDocument in interface AsyncBucketManager
        Parameters:
        designDocument - the DesignDocument to upsert.
        development - if the DesignDocument should be upserted into development or production.
        Returns:
        the upserted DesignDocument on success.
      • removeDesignDocument

        public rx.Observable<Boolean> removeDesignDocument​(String name,
                                                           boolean development)
        Description copied from interface: AsyncBucketManager
        Removes a DesignDocument from production or development by its name. The Observable can error under the following conditions: - com.couchbase.client.java.error.DesignDocumentDoesNotExistException: If DesignDocument is not found.
        Specified by:
        removeDesignDocument in interface AsyncBucketManager
        Parameters:
        name - the name of the DesignDocument.
        development - if the DesignDocument should be removed from development or production.
        Returns:
        true if succeeded, false otherwise.
      • publishDesignDocument

        public rx.Observable<DesignDocument> publishDesignDocument​(String name,
                                                                   boolean overwrite)
        Description copied from interface: AsyncBucketManager
        Publishes a DesignDocument from development into production. The Observable can error under the following conditions: - com.couchbase.client.java.error.DesignDocumentAlreadyExistsException: If the DesignDocument already exists and override is set to false. - com.couchbase.client.java.error.TranscodingException: If the server response could not be parsed. - com.couchbase.client.java.error.DesignDocumentDoesNotExistException: If DesignDocument is not found in development.
        Specified by:
        publishDesignDocument in interface AsyncBucketManager
        Parameters:
        name - the name of the DesignDocument to publish.
        overwrite - if an existing DesignDocument should be overridden.
        Returns:
        the published DesignDocument on success.
      • listN1qlIndexes

        public rx.Observable<IndexInfo> listN1qlIndexes()
        Description copied from interface: AsyncBucketManager
        List all N1QL GSI indexes that are registered for the current bucket. The index management API only deals with GSI type of indexes, which allows it to uniquely identify indexes by name. The Observable can error under the following conditions: - TranscodingException if the server response couldn't be parsed.
        Specified by:
        listN1qlIndexes in interface AsyncBucketManager
        Returns:
        an Observable that will get notified of each relevant IndexInfo (can be empty if no relevant index is defined for this bucket).
      • createN1qlPrimaryIndex

        public rx.Observable<Boolean> createN1qlPrimaryIndex​(boolean ignoreIfExist,
                                                             boolean defer)
        Description copied from interface: AsyncBucketManager
        Create a primary index for the current bucket. The index management API only deals with GSI type of indexes, which allows it to uniquely identify indexes by name. The Observable can error under the following conditions: - IndexAlreadyExistsException if the index already exists and ignoreIfExist is set to false. - CouchbaseException if another error occurs during index creation.
        Specified by:
        createN1qlPrimaryIndex in interface AsyncBucketManager
        Parameters:
        ignoreIfExist - if a primary index already exists, an exception will be thrown unless this is set to true.
        defer - true to defer building of the index until AsyncBucketManager.buildN1qlDeferredIndexes() is called (or a direct call to the corresponding query service API).
        Returns:
        an Observable that will get notified with a single Boolean.TRUE if the index was effectively created (even in deferred mode), Boolean.FALSE if the index existed and ignoreIfExist is true.
      • createN1qlPrimaryIndex

        public rx.Observable<Boolean> createN1qlPrimaryIndex​(String customName,
                                                             boolean ignoreIfExist,
                                                             boolean defer)
        Description copied from interface: AsyncBucketManager
        Create a custom-named primary index for the current bucket. The index management API only deals with GSI type of indexes, which allows it to uniquely identify indexes by name. The Observable can error under the following conditions: - IndexAlreadyExistsException if the index already exists and ignoreIfExist is set to false. - CouchbaseException if another error occurs during index creation.
        Specified by:
        createN1qlPrimaryIndex in interface AsyncBucketManager
        Parameters:
        customName - the custom name for the primary index.
        ignoreIfExist - if a primary index already exists, an exception will be thrown unless this is set to true.
        defer - true to defer building of the index until AsyncBucketManager.buildN1qlDeferredIndexes() is called (or a direct call to the corresponding query service API).
        Returns:
        an Observable that will get notified with a single Boolean.TRUE if the index was effectively created (even in deferred mode), Boolean.FALSE if the index existed and ignoreIfExist is true.
      • createN1qlIndex

        public rx.Observable<Boolean> createN1qlIndex​(String indexName,
                                                      List<Object> fields,
                                                      Expression whereClause,
                                                      boolean ignoreIfExist,
                                                      boolean defer)
        Description copied from interface: AsyncBucketManager
        Create a secondary index for the current bucket, with a WHERE clause. The index management API only deals with GSI type of indexes, which allows it to uniquely identify indexes by name. The Observable can error under the following conditions: - IndexAlreadyExistsException if the index already exists and ignoreIfExist is set to false. - CouchbaseException if another error occurs during index creation.
        Specified by:
        createN1qlIndex in interface AsyncBucketManager
        Parameters:
        indexName - the name of the index.
        fields - the JSON fields to index, in the form of a List containing a mix of Expression or String.
        whereClause - the Expression to use in the WHERE clause of the index.
        ignoreIfExist - if a secondary index already exists with that name, an exception will be thrown unless this is set to true.
        defer - true to defer building of the index until AsyncBucketManager.buildN1qlDeferredIndexes() is called (or a direct call to the corresponding query service API).
        Returns:
        an Observable that will get notified with a single Boolean.TRUE if the index was effectively created (even in deferred mode), Boolean.FALSE if the index existed and ignoreIfExist is true.
      • dropN1qlPrimaryIndex

        public rx.Observable<Boolean> dropN1qlPrimaryIndex​(boolean ignoreIfNotExist)
        Description copied from interface: AsyncBucketManager
        Drop the default primary index (Index.PRIMARY_NAME) associated with the current bucket. The index management API only deals with GSI type of indexes, which allows it to uniquely identify indexes by name. The Observable can error under the following conditions: - IndexDoesNotExistException if the primary index doesn't exist and ignoreIfNoExist is set to false. - CouchbaseException if another error occurs during index drop.
        Specified by:
        dropN1qlPrimaryIndex in interface AsyncBucketManager
        Parameters:
        ignoreIfNotExist - if true, attempting to drop on a bucket without any primary index won't cause an exception to be propagated.
        Returns:
        an Observable that will get notified with a single Boolean.TRUE if the index was effectively dropped.
      • dropN1qlPrimaryIndex

        public rx.Observable<Boolean> dropN1qlPrimaryIndex​(String customName,
                                                           boolean ignoreIfNotExist)
        Description copied from interface: AsyncBucketManager
        Drop the given custom-named primary index associated with the current bucket. The index management API only deals with GSI type of indexes, which allows it to uniquely identify indexes by name. The Observable can error under the following conditions: - IndexDoesNotExistException if the primary index doesn't exist and ignoreIfNoExist is set to false. - CouchbaseException if another error occurs during index drop.
        Specified by:
        dropN1qlPrimaryIndex in interface AsyncBucketManager
        Parameters:
        customName - the custom name of the primary index.
        ignoreIfNotExist - if true, attempting to drop on a bucket without any primary index won't cause an exception to be propagated.
        Returns:
        an Observable that will get notified with a single Boolean.TRUE if the index was effectively dropped.
      • dropN1qlIndex

        public rx.Observable<Boolean> dropN1qlIndex​(String name,
                                                    boolean ignoreIfNotExist)
        Description copied from interface: AsyncBucketManager
        Drop the given secondary index associated with the current bucket. The index management API only deals with GSI type of indexes, which allows it to uniquely identify indexes by name. The Observable can error under the following conditions: - IndexDoesNotExistException if the secondary index doesn't exist and ignoreIfNoExist is set to false. - CouchbaseException if another error occurs during index drop.
        Specified by:
        dropN1qlIndex in interface AsyncBucketManager
        ignoreIfNotExist - if true, attempting to drop on a bucket without the specified index won't cause an exception to be propagated.
        Returns:
        an Observable that will get notified with a single Boolean.TRUE if the index was effectively dropped.
      • buildN1qlDeferredIndexes

        public rx.Observable<List<String>> buildN1qlDeferredIndexes()
        Description copied from interface: AsyncBucketManager
        Instruct the query engine to trigger the build of indexes that have been deferred. This only considers GSI indexes, as the index management API only deals with this type of indexes. This process itself is asynchronous, meaning that the call will immediately return despite indexes still being in a "pending" or "building" state. This method will return a List of the names of indexes whose build has been triggered, in a single emission.
        Specified by:
        buildN1qlDeferredIndexes in interface AsyncBucketManager
        Returns:
        an Observable that will get notified with a single List of index names, the names of the indexes that have been triggered.
        See Also:
        to poll for a list of indexes to become online.
      • watchN1qlIndexes

        public rx.Observable<IndexInfo> watchN1qlIndexes​(List<String> watchList,
                                                         long watchTimeout,
                                                         TimeUnit watchTimeUnit)
        Description copied from interface: AsyncBucketManager
        Watches all given indexes (possibly including the primary one), polling the query service until they become "online" or the watchTimeout has expired.. This only considers GSI indexes, as the index management API only deals with this type of indexes. Note: You can activate DEBUG level logs on the "INDEX_WATCH_LOG_NAME" logger to see various stages of the polling. You can also watch a primary index by using the Index.PRIMARY_NAME constant.
        Specified by:
        watchN1qlIndexes in interface AsyncBucketManager
        Parameters:
        watchList - the names of the SECONDARY indexes to watch (can be empty).
        watchTimeout - the maximum duration for which to poll for the index to become online.
        watchTimeUnit - the time unit for the watchTimeout.
        Returns:
        a stream of the IndexInfo for the indexes that went online during the watch period. Can be empty if all indexes where online, no index to watch or no index became online within the watchTimeout timeframe.