/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.api.connector;
import org.mule.runtime.core.api.MessageExchangePattern;
import org.mule.runtime.api.exception.MuleException;
import org.mule.runtime.core.api.client.OperationOptions;
import org.mule.runtime.core.api.processor.Processor;
/**
* Provider of operation for a Mule connector.
*
* A Mule connector can provide an implementation of this interface in the registry and mule will use it to create operations
* using an URL and later executed them.
*
* The implementation must be located in the mule registry before the start phase.
*/
public interface ConnectorOperationProvider {
/**
* @param url an URL for creating an operation
* @return true if the provider can handle the URL, false otherwise
*/
boolean supportsUrl(String url);
/**
* A {@link org.mule.runtime.core.api.processor.Processor} that contains the behaviour for the URL
*
* @param url an URL for creating an operation
* @param operationOptions the operation options
* @param exchangePattern exchange pattern to use to execute the request.
* @return a {@link org.mule.runtime.core.api.processor.Processor} that fulfills the operation
* @throws MuleException
*/
Processor getMessageProcessor(String url, OperationOptions operationOptions, MessageExchangePattern exchangePattern)
throws MuleException;
}