All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.datastax.astra.client.model.CommandRunner Maven / Gradle / Ivy

package com.datastax.astra.client.model;

/*-
 * #%L
 * Data API Java Client
 * --
 * Copyright (C) 2024 DataStax
 * --
 * Licensed under the Apache License, Version 2.0
 * 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.
 * #L%
 */

import com.datastax.astra.client.exception.DataApiResponseException;
import com.datastax.astra.internal.api.ApiResponse;

/**
 * Use to initialize the HTTPClient.
 */
public interface CommandRunner {

    // ------------------------------------------
    // ----           Command                ----
    // ------------------------------------------

    /**
     * Command to return the payload as a Map.
     *
     * @param command
     *     command to execute
     * @throws DataApiResponseException
     *     if the returned object contains error response is encapsulated in a DataApiResponseException.
     * @return
     *     result as a document map
     */
    default ApiResponse runCommand(Command command) {
        return runCommand(command, new CommandOptions<>());
    }

    /**
     * Command to return the payload as a Map.
     *
     * @param command
     *     command to execute
     * @param options
     *      options when running the command
     * @throws DataApiResponseException
     *     if the returned object contains error response is encapsulated in a DataApiResponseException.
     * @return
     *     result as a document map
     */
    ApiResponse runCommand(Command command, CommandOptions options)
    throws DataApiResponseException;

    /**
     * Extension point to run any command with typing constraints.
     * @param command
     *      command as a json Payload
     * @param documentClass
     *      document class to use for marshalling
     * @throws DataApiResponseException
     *     if the returned object contains error response is encapsulated in a DataApiResponseException.
     * @return
     *      instance of expecting type.
     * @param 
     *      document type to use
     */
    default  T runCommand(Command command, Class documentClass) {
        return runCommand(command, new CommandOptions<>(), documentClass);
    }

    /**
     * Extension point to run any command with typing constraints.
     * @param command
     *      command as a json Payload
     * @param documentClass
     *      document class to use for marshalling
     * @param options
     *      options when running the command
     * @throws DataApiResponseException
     *     if the returned object contains error response is encapsulated in a DataApiResponseException.
     * @return
     *      instance of expecting type.
     * @param 
     *      document type to use
     */
     T runCommand(Command command, CommandOptions options, Class documentClass)
    throws DataApiResponseException;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy