| Package | Description |
|---|---|
| org.mule |
The Mule implementation of the Universal Message Objects(tm) API specification.
|
| org.mule.api |
The Universal Message Object(tm) API provides a way for components to interact without needing to know about the protocol or delivery mechanisms of information passed between them
|
| org.mule.api.component | |
| org.mule.api.construct | |
| org.mule.api.endpoint |
Endpoint interfaces.
|
| org.mule.api.registry | |
| org.mule.api.service | |
| org.mule.api.transport |
Contains the interfaces that comprise a provider implementation.
|
| org.mule.client | |
| org.mule.component | |
| org.mule.construct | |
| org.mule.construct.processor | |
| org.mule.context.notification |
Internal server notification types fired via the MuleManager.
|
| org.mule.el.mvel | |
| org.mule.endpoint |
Implemtation of Mule endpoint uris.
|
| org.mule.exception | |
| org.mule.execution | |
| org.mule.interceptor | |
| org.mule.model.seda | |
| org.mule.object | |
| org.mule.processor | |
| org.mule.processor.chain | |
| org.mule.processor.strategy | |
| org.mule.registry | |
| org.mule.routing |
Defines the core routing patterns supported by mule.
|
| org.mule.routing.correlation | |
| org.mule.routing.outbound |
Outbound router implementation as described in the Enterprise Integration Patterns book.
|
| org.mule.routing.requestreply | |
| org.mule.service | |
| org.mule.session | |
| org.mule.source | |
| org.mule.transport |
Contains Abstract classes providing common functionality for all Mule providers.
|
| org.mule.transport.polling | |
| org.mule.transport.service |
Provides SPI support for building mule connectors and providers using service descriptors.
|
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
VoidMuleEvent.getFlowConstruct() |
FlowConstruct |
DefaultMuleEvent.getFlowConstruct()
Gets the recipient service of this event
|
FlowConstruct |
DefaultMuleEventContext.getFlowConstruct() |
| Constructor and Description |
|---|
DefaultMuleEvent(MuleEvent rewriteEvent,
FlowConstruct flowConstruct) |
DefaultMuleEvent(MuleEvent rewriteEvent,
FlowConstruct flowConstruct,
ReplyToHandler replyToHandler,
Object replyToDestination) |
DefaultMuleEvent(MuleEvent rewriteEvent,
FlowConstruct flowConstruct,
ReplyToHandler replyToHandler,
Object replyToDestination,
boolean synchronous) |
DefaultMuleEvent(MuleMessage message,
InboundEndpoint endpoint,
FlowConstruct flowConstruct) |
DefaultMuleEvent(MuleMessage message,
InboundEndpoint endpoint,
FlowConstruct flowConstruct,
MuleSession session) |
DefaultMuleEvent(MuleMessage message,
InboundEndpoint endpoint,
FlowConstruct flowConstruct,
MuleSession session,
ReplyToHandler replyToHandler,
Object replyToDestination,
OutputStream outputStream) |
DefaultMuleEvent(MuleMessage message,
MessageExchangePattern exchangePattern,
FlowConstruct flowConstruct)
Constructor used to create an event with no message source with minimal arguments
|
DefaultMuleEvent(MuleMessage message,
MessageExchangePattern exchangePattern,
FlowConstruct flowConstruct,
MuleSession session)
Constructor used to create an event with no message source with minimal arguments and a
MuleSession |
DefaultMuleEvent(MuleMessage message,
MessageExchangePattern exchangePattern,
FlowConstruct flowConstruct,
MuleSession session,
int timeout,
Credentials credentials,
OutputStream outputStream)
Constructor used to create an event with no message source with all additional arguments
|
DefaultMuleEvent(MuleMessage message,
MessageExchangePattern exchangePattern,
FlowConstruct flowConstruct,
MuleSession session,
OutputStream outputStream)
Constructor used to create an event with no message source with minimal arguments and
OutputStream
|
DefaultMuleEvent(MuleMessage message,
MessageExchangePattern exchangePattern,
ReplyToHandler replyToHandler,
FlowConstruct flowConstruct)
Constructor used to create an event with no message source with minimal arguments and a
ReplyToHandler |
DefaultMuleEvent(MuleMessage message,
MuleEvent rewriteEvent,
FlowConstruct flowConstruct,
MuleSession session,
boolean synchronous) |
DefaultMuleEvent(MuleMessage message,
MuleEvent rewriteEvent,
FlowConstruct flowConstruct,
MuleSession session,
boolean synchronous,
boolean shareFlowVars,
MessageExchangePattern messageExchangePattern) |
DefaultMuleEvent(MuleMessage message,
MuleEvent rewriteEvent,
FlowConstruct flowConstruct,
MuleSession session,
boolean synchronous,
ReplyToHandler replyToHandler,
Object replyToDestination,
boolean shareFlowVars,
MessageExchangePattern messageExchangePattern) |
DefaultMuleEvent(MuleMessage message,
URI messageSourceURI,
MessageExchangePattern exchangePattern,
FlowConstruct flowConstruct,
MuleSession session)
Constructor used to create an event with a uri that idendifies the message source with minimal
arguments
|
DefaultMuleEvent(MuleMessage message,
URI messageSourceURI,
MessageExchangePattern exchangePattern,
FlowConstruct flowConstruct,
MuleSession session,
int timeout,
Credentials credentials,
OutputStream outputStream)
Constructor used to create an event with a identifiable message source with all additional arguments except
a
ReplyToHandler |
DefaultMuleEvent(MuleMessage message,
URI messageSourceURI,
MessageExchangePattern exchangePattern,
FlowConstruct flowConstruct,
MuleSession session,
int timeout,
Credentials credentials,
OutputStream outputStream,
ReplyToHandler replyToHandler)
Constructor used to create an event with a identifiable message source with all additional arguments
|
DefaultMuleEvent(MuleMessage message,
URI messageSourceURI,
MessageExchangePattern exchangePattern,
FlowConstruct flowConstruct,
MuleSession session,
OutputStream outputStream)
Constructor used to create an event with a uri that idendifies the message source with minimal
arguments and OutputStream
|
DefaultMuleEvent(MuleMessage message,
URI messageSourceURI,
String messageSourceName,
MessageExchangePattern exchangePattern,
FlowConstruct flowConstruct,
MuleSession session,
int timeout,
Credentials credentials,
OutputStream outputStream,
String encoding,
boolean transacted,
boolean synchronous,
Object replyToDestination,
ReplyToHandler replyToHandler) |
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
MuleSession.getFlowConstruct()
Deprecated.
|
FlowConstruct |
MuleEvent.getFlowConstruct()
Retrieves the service for the current event
|
FlowConstruct |
MuleEventContext.getFlowConstruct() |
| Modifier and Type | Method and Description |
|---|---|
void |
MuleSession.setFlowConstruct(FlowConstruct flowConstruct)
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
LifecycleAdapter |
LifecycleAdapterFactory.create(Object pojoService,
JavaComponent component,
FlowConstruct flowConstruct,
EntryPointResolverSet resolver,
MuleContext muleContext) |
| Modifier and Type | Interface and Description |
|---|---|
interface |
Pipeline
A pipeline has an ordered list of
MessageProcessor's that are invoked in order to processor new
messages received from it's MessageSource |
| Modifier and Type | Method and Description |
|---|---|
void |
FlowConstructAware.setFlowConstruct(FlowConstruct flowConstruct) |
| Constructor and Description |
|---|
FlowConstructInvalidException(Message message,
FlowConstruct flowConstruct) |
| Modifier and Type | Method and Description |
|---|---|
MessageProcessor |
EndpointMessageProcessorChainFactory.createInboundMessageProcessorChain(InboundEndpoint endpoint,
FlowConstruct flowConstruct,
MessageProcessor target) |
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
MuleRegistry.lookupFlowConstruct(String name) |
| Modifier and Type | Method and Description |
|---|---|
Collection<FlowConstruct> |
MuleRegistry.lookupFlowConstructs() |
| Modifier and Type | Method and Description |
|---|---|
void |
MuleRegistry.registerFlowConstruct(FlowConstruct flowConstruct) |
| Modifier and Type | Interface and Description |
|---|---|
interface |
Service
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
MessageReceiver.getFlowConstruct() |
| Modifier and Type | Method and Description |
|---|---|
void |
Connector.registerListener(InboundEndpoint endpoint,
MessageProcessor listener,
FlowConstruct flowConstruct)
Registers a MessageProcessor listener which will listen to new message
received from a specific transport channel and then processed by the endpoint.
|
void |
Connector.unregisterListener(InboundEndpoint endpoint,
FlowConstruct flowConstruct)
Unregisters the listener for the given endpoints.
|
| Modifier and Type | Class and Description |
|---|---|
static class |
DefaultLocalMuleClient.MuleClientFlowConstruct
Placeholder class which makes the default exception handler available.
|
| Modifier and Type | Field and Description |
|---|---|
protected FlowConstruct |
DefaultComponentLifecycleAdapter.flowConstruct |
protected FlowConstruct |
AbstractComponent.flowConstruct |
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
AbstractComponent.getFlowConstruct() |
| Modifier and Type | Method and Description |
|---|---|
LifecycleAdapter |
DefaultComponentLifecycleAdapterFactory.create(Object pojoService,
JavaComponent component,
FlowConstruct flowConstruct,
EntryPointResolverSet resolver,
MuleContext muleContext) |
void |
AbstractJavaComponent.setFlowConstruct(FlowConstruct flowConstruct) |
void |
AbstractComponent.setFlowConstruct(FlowConstruct flowConstruct) |
| Constructor and Description |
|---|
DefaultComponentLifecycleAdapter(Object componentObject,
JavaComponent component,
FlowConstruct flowConstruct,
EntryPointResolverSet entryPointResolver,
MuleContext muleContext) |
DefaultComponentLifecycleAdapter(Object componentObject,
JavaComponent component,
FlowConstruct flowConstruct,
MuleContext muleContext) |
NullLifecycleAdapter(Object componentObject,
JavaComponent component,
FlowConstruct flowConstruct,
EntryPointResolverSet entryPointResolver,
MuleContext muleContext) |
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractConfigurationPattern
A template class for configuration patterns, which takes care of setting common message processors and
optional transformers defined on the pattern.
|
class |
AbstractFlowConstruct
Abstract implementation of
FlowConstruct that:
Is constructed with unique name and MuleContext. |
class |
AbstractPipeline
Abstract implementation of
AbstractFlowConstruct that allows a list of MessageProcessors
that will be used to process messages to be configured. |
class |
Bridge
A simple bridge between a single inbound endpoint and a single outbound endpoint.
|
class |
Flow
This implementation of
AbstractPipeline adds the following functionality:
Rejects inbound events when Flow is not started
Gathers statistics and processing time data
Implements MessagePorcessor allowing direct invocation of the pipeline
Supports the optional configuration of a ProcessingStrategy that determines how message
processors are processed. |
class |
SimpleService
In-out SOA-style simple service, with no outbound router.
|
class |
Validator |
| Modifier and Type | Method and Description |
|---|---|
void |
FlowConstructLifecycleManager.fireDisposePhase(LifecycleCallback<FlowConstruct> callback) |
void |
FlowConstructLifecycleManager.fireInitialisePhase(LifecycleCallback<FlowConstruct> callback) |
void |
FlowConstructLifecycleManager.firePausePhase(LifecycleCallback<FlowConstruct> callback) |
void |
FlowConstructLifecycleManager.fireResumePhase(LifecycleCallback<FlowConstruct> callback) |
void |
FlowConstructLifecycleManager.fireStartPhase(LifecycleCallback<FlowConstruct> callback) |
void |
FlowConstructLifecycleManager.fireStopPhase(LifecycleCallback<FlowConstruct> callback) |
| Constructor and Description |
|---|
FlowConstructLifecycleManager(FlowConstruct flowConstruct,
MuleContext muleContext) |
| Modifier and Type | Field and Description |
|---|---|
protected FlowConstruct |
FlowConstructStatisticsMessageProcessor.flowConstruct |
| Modifier and Type | Method and Description |
|---|---|
void |
FlowConstructStatisticsMessageProcessor.setFlowConstruct(FlowConstruct flowConstruct) |
| Modifier and Type | Field and Description |
|---|---|
protected FlowConstruct |
ComponentMessageNotification.flowConstruct |
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
ComponentMessageNotification.getFlowConstruct() |
FlowConstruct |
BaseConnectorMessageNotification.getFlowConstruct() |
| Modifier and Type | Method and Description |
|---|---|
void |
NotificationHelper.fireNotification(MuleMessage message,
String uri,
FlowConstruct flowConstruct,
int action) |
| Constructor and Description |
|---|
EventVariableResolverFactory.FlowContext(FlowConstruct flowConstruct) |
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
DefaultInboundEndpoint.getFlowConstruct() |
| Modifier and Type | Method and Description |
|---|---|
MessageProcessor |
DefaultEndpointMessageProcessorChainFactory.createInboundMessageProcessorChain(InboundEndpoint endpoint,
FlowConstruct flowConstruct,
MessageProcessor target) |
protected MessageProcessor |
DefaultOutboundEndpoint.createMessageProcessorChain(FlowConstruct flowContruct) |
MessageProcessor |
DefaultInboundEndpoint.createMessageProcessorChain(FlowConstruct flowContruct) |
protected abstract MessageProcessor |
AbstractEndpoint.createMessageProcessorChain(FlowConstruct flowContruct) |
MessageProcessor |
AbstractEndpoint.getMessageProcessorChain(FlowConstruct flowContruct) |
void |
DynamicURIInboundEndpoint.setFlowConstruct(FlowConstruct flowConstruct) |
void |
DefaultInboundEndpoint.setFlowConstruct(FlowConstruct flowConstruct) |
| Constructor and Description |
|---|
EndpointMessageProcessorChainBuilder(ImmutableEndpoint endpoint,
FlowConstruct flowConstruct) |
| Modifier and Type | Method and Description |
|---|---|
protected FlowConstructStatistics |
DefaultServiceExceptionStrategy.getFlowConstructStatistics(FlowConstruct flowConstruct)
Deprecated.
|
protected ServiceStatistics |
DefaultServiceExceptionStrategy.getServiceStatistics(FlowConstruct flowConstruct)
Deprecated.
|
void |
RedeliveryExceeded.setFlowConstruct(FlowConstruct flowConstruct) |
protected void |
AbstractMessagingExceptionStrategy.stopFlow(FlowConstruct flow) |
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
MessageProcessContext.getFlowConstruct() |
| Modifier and Type | Field and Description |
|---|---|
protected FlowConstruct |
AbstractEnvelopeInterceptor.flowConstruct |
| Modifier and Type | Method and Description |
|---|---|
void |
AbstractEnvelopeInterceptor.setFlowConstruct(FlowConstruct flowConstruct) |
| Constructor and Description |
|---|
ProcessingTimeInterceptor(MessageProcessor next,
FlowConstruct fc) |
| Modifier and Type | Class and Description |
|---|---|
class |
SedaService
Deprecated.
|
| Modifier and Type | Field and Description |
|---|---|
protected FlowConstruct |
AbstractObjectFactory.flowConstruct |
| Modifier and Type | Method and Description |
|---|---|
void |
AbstractObjectFactory.setFlowConstruct(FlowConstruct flowConstruct) |
| Modifier and Type | Field and Description |
|---|---|
protected FlowConstruct |
AbstractMuleObjectOwner.flowConstruct |
protected FlowConstruct |
ResponseMessageProcessorAdapter.flowConstruct |
protected FlowConstruct |
AbstractRedeliveryPolicy.flowConstruct |
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
AbstractMuleObjectOwner.getFlowConstruct() |
| Modifier and Type | Method and Description |
|---|---|
void |
AbstractMuleObjectOwner.setFlowConstruct(FlowConstruct flowConstruct) |
void |
ResponseMessageProcessorAdapter.setFlowConstruct(FlowConstruct flowConstruct) |
void |
AbstractRedeliveryPolicy.setFlowConstruct(FlowConstruct flowConstruct) |
| Modifier and Type | Field and Description |
|---|---|
protected FlowConstruct |
AbstractMessageProcessorChainBuilder.flowConstruct |
protected FlowConstruct |
AbstractMessageProcessorChain.flowConstruct |
| Modifier and Type | Method and Description |
|---|---|
void |
AbstractMessageProcessorChain.setFlowConstruct(FlowConstruct flowConstruct) |
| Constructor and Description |
|---|
AbstractMessageProcessorChainBuilder(FlowConstruct flowConstruct) |
DefaultMessageProcessorChainBuilder(FlowConstruct flowConstruct) |
SimpleMessageProcessorChainBuilder(FlowConstruct flowConstruct) |
| Modifier and Type | Method and Description |
|---|---|
WorkManager |
NonBlockingProcessingStrategy.createWorkManager(FlowConstruct flowConstruct) |
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
MuleRegistryHelper.lookupFlowConstruct(String name) |
| Modifier and Type | Method and Description |
|---|---|
Collection<FlowConstruct> |
MuleRegistryHelper.lookupFlowConstructs() |
| Modifier and Type | Method and Description |
|---|---|
void |
MuleRegistryHelper.registerFlowConstruct(FlowConstruct flowConstruct) |
| Modifier and Type | Field and Description |
|---|---|
protected FlowConstruct |
AbstractAggregator.flowConstruct |
protected FlowConstruct |
IdempotentMessageFilter.flowConstruct |
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
UntilSuccessfulConfiguration.getFlowConstruct() |
| Modifier and Type | Method and Description |
|---|---|
void |
MessageFilter.setFlowConstruct(FlowConstruct flowConstruct) |
void |
AbstractSelectiveRouter.setFlowConstruct(FlowConstruct flowConstruct) |
void |
MessageProcessorFilterPair.setFlowConstruct(FlowConstruct flowConstruct) |
void |
AbstractAggregator.setFlowConstruct(FlowConstruct flowConstruct) |
void |
IdempotentMessageFilter.setFlowConstruct(FlowConstruct flowConstruct) |
| Constructor and Description |
|---|
EventCorrelator(EventCorrelatorCallback callback,
MessageProcessor timeoutMessageProcessor,
MessageInfoMapping messageInfoMapping,
MuleContext muleContext,
FlowConstruct flowConstruct,
boolean persistentStores,
String storePrefix) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
AbstractOutboundRouter.setMessageProperties(FlowConstruct service,
MuleMessage message,
MessageProcessor route) |
| Modifier and Type | Field and Description |
|---|---|
protected FlowConstruct |
AbstractAsyncRequestReplyRequester.flowConstruct |
| Modifier and Type | Method and Description |
|---|---|
void |
AbstractAsyncRequestReplyRequester.setFlowConstruct(FlowConstruct flowConstruct) |
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractService
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
void |
ServiceLifecycleManager.fireDisposePhase(LifecycleCallback<FlowConstruct> callback)
Deprecated.
|
void |
ServiceLifecycleManager.fireInitialisePhase(LifecycleCallback<FlowConstruct> callback)
Deprecated.
|
void |
ServiceLifecycleManager.firePausePhase(LifecycleCallback<FlowConstruct> callback)
Deprecated.
|
void |
ServiceLifecycleManager.fireResumePhase(LifecycleCallback<FlowConstruct> callback)
Deprecated.
|
void |
ServiceLifecycleManager.fireStartPhase(LifecycleCallback<FlowConstruct> callback)
Deprecated.
|
void |
ServiceLifecycleManager.fireStopPhase(LifecycleCallback<FlowConstruct> callback)
Deprecated.
|
| Constructor and Description |
|---|
ServiceLifecycleManager(FlowConstruct service,
MuleContext muleContext)
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
DefaultMuleSession.getFlowConstruct() |
| Modifier and Type | Method and Description |
|---|---|
void |
DefaultMuleSession.setFlowConstruct(FlowConstruct flowConstruct) |
| Constructor and Description |
|---|
DefaultMuleSession(FlowConstruct flowConstruct,
MuleContext muleContext)
Deprecated.
|
DefaultMuleSession(MuleSession source,
FlowConstruct flowConstruct)
Deprecated.
|
| Modifier and Type | Field and Description |
|---|---|
protected FlowConstruct |
StartableCompositeMessageSource.flowConstruct |
| Modifier and Type | Method and Description |
|---|---|
void |
StartableCompositeMessageSource.setFlowConstruct(FlowConstruct pattern) |
void |
ClusterizableMessageSourceWrapper.setFlowConstruct(FlowConstruct flowConstruct) |
| Constructor and Description |
|---|
ClusterizableMessageSourceWrapper(MuleContext muleContext,
ClusterizableMessageSource messageSource,
FlowConstruct flowConstruct) |
| Modifier and Type | Field and Description |
|---|---|
protected FlowConstruct |
AbstractMessageReceiver.flowConstruct
The Service with which this receiver is associated with
|
| Modifier and Type | Method and Description |
|---|---|
FlowConstruct |
TransportMessageProcessContext.getFlowConstruct() |
FlowConstruct |
AbstractTransportMessageProcessTemplate.getFlowConstruct() |
FlowConstruct |
AbstractMessageReceiver.getFlowConstruct() |
| Modifier and Type | Method and Description |
|---|---|
protected MessageReceiver |
AbstractConnector.createReceiver(FlowConstruct flowConstruct,
InboundEndpoint endpoint)
Create a Message receiver for this connector
|
protected void |
AbstractConnector.doUnregisterListener(FlowConstruct flowConstruct,
InboundEndpoint endpoint,
MessageReceiver receiver) |
MessageReceiver |
AbstractConnector.getReceiver(FlowConstruct flowConstruct,
InboundEndpoint endpoint) |
protected Object |
AbstractConnector.getReceiverKey(FlowConstruct flowConstruct,
InboundEndpoint endpoint)
The method determines the key used to store the receiver against.
|
void |
AbstractConnector.registerListener(InboundEndpoint endpoint,
MessageProcessor messageProcessorChain,
FlowConstruct flowConstruct) |
void |
AbstractConnector.unregisterListener(InboundEndpoint endpoint,
FlowConstruct flowConstruct) |
| Constructor and Description |
|---|
AbstractMessageReceiver(Connector connector,
FlowConstruct flowConstruct,
InboundEndpoint endpoint)
Creates the Message Receiver
|
AbstractPollingMessageReceiver(Connector connector,
FlowConstruct flowConstruct,
InboundEndpoint endpoint) |
TransactedPollingMessageReceiver(Connector connector,
FlowConstruct flowConstruct,
InboundEndpoint endpoint) |
TransactedPollingMessageReceiver(Connector connector,
FlowConstruct flowConstruct,
InboundEndpoint endpoint,
long frequency)
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
protected Object |
MessageProcessorPollingConnector.getReceiverKey(FlowConstruct flowConstruct,
InboundEndpoint endpoint) |
| Constructor and Description |
|---|
MessageProcessorPollingMessageReceiver(Connector connector,
FlowConstruct flowConstruct,
InboundEndpoint endpoint) |
| Modifier and Type | Method and Description |
|---|---|
MessageReceiver |
DefaultTransportServiceDescriptor.createMessageReceiver(Connector connector,
FlowConstruct flowConstruct,
InboundEndpoint endpoint) |
MessageReceiver |
TransportServiceDescriptor.createMessageReceiver(Connector connector,
FlowConstruct flowConstruct,
InboundEndpoint endpoint) |
MessageReceiver |
DefaultTransportServiceDescriptor.createMessageReceiver(Connector connector,
FlowConstruct flowConstruct,
InboundEndpoint endpoint,
Object... args) |
MessageReceiver |
TransportServiceDescriptor.createMessageReceiver(Connector connector,
FlowConstruct flowConstruct,
InboundEndpoint endpoint,
Object... args) |
Copyright © 2003–2015 MuleSoft, Inc.. All rights reserved.