/*
* Copyright (c) 2005-2009, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.registry.admin.api.handler;
/**
* Provides functionality to list (view, edit, delete), and simulate handlers configured on the
* Registry.
* <br />
* <b>Statistics:</b>
* <ul>
* <li>createHandler</li>
* <li>deleteHandler</li>
* <li>updateHandler</li>
* </ul>
*
* @param <SimulationResponse> This object contains the execution status of a set of handlers used
* in a simulation operation. The returned simulation response object
* contains an array of HandlerSimulationStatus objects, which contains
* the name of the handler the execution status.
*
* @param <SimulationRequest> This object contains the parameters required for performing a
* simulation of handlers on the registry. This object can capture
* information such as operation, mediaType, path and other optional
* parameters.
*/
@SuppressWarnings("unused")
public interface IHandlerManagementService<SimulationResponse, SimulationRequest> {
/**
* Method to obtain the location at which the handler collection is stored on the registry.
*
* @return the resource path of the handler collection.
* @throws Exception if the operation failed.
*/
String getHandlerCollectionLocation() throws Exception;
/**
* Method to set the location at which the handler collection is stored on the registry.
*
* @param location the resource path of the handler collection.
*
* @throws Exception if the operation failed.
*/
void setHandlerCollectionLocation(String location) throws Exception;
/**
* Method to obtain the list of handlers that have been configured through the Handler
* Administration API.
*
* @return the list of handlers.
* @throws Exception if the operation failed.
*/
String[] getHandlerList() throws Exception;
/**
* Method to obtain the configuration of a named handler.
*
* @param name the name of the handler.
*
* @return the handler configuration.
* @throws Exception if the operation failed.
*/
String getHandlerConfiguration(String name) throws Exception;
/**
* Method to delete the configuration of a named handler.
*
* @param name the name of the handler.
*
* @return whether the operation was successful.
* @throws Exception if an error occurred.
*/
boolean deleteHandler(String name) throws Exception;
/**
* Method to create a handler using the provided configuration.
*
* @param payload the handler configuration.
*
* @return whether the operation was successful.
* @throws Exception if an error occurred.
*/
boolean createHandler(String payload) throws Exception;
/**
* Method to update the configuration of a named handler, using the provided configuration
*
* @param name the name of the handler.
* @param payload the handler configuration.
*
* @return whether the operation was successful.
* @throws Exception if an error occurred.
*/
boolean updateHandler(String name, String payload) throws Exception;
/**
* Method to simulate handlers on a registry.
*
* @param request the simulation request object.
*
* @return the response containing the status of the handler execution.
*
* @throws Exception if the operation failed.
*/
SimulationResponse simulate(SimulationRequest request) throws Exception;
}