View Javadoc

1   /*
2    * $Id: TransportServiceDescriptor.java 23011 2011-09-22 16:22:04Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.transport.service;
12  
13  import org.mule.MessageExchangePattern;
14  import org.mule.api.MuleException;
15  import org.mule.api.construct.FlowConstruct;
16  import org.mule.api.context.MuleContextAware;
17  import org.mule.api.endpoint.EndpointBuilder;
18  import org.mule.api.endpoint.EndpointURIBuilder;
19  import org.mule.api.endpoint.ImmutableEndpoint;
20  import org.mule.api.endpoint.InboundEndpoint;
21  import org.mule.api.registry.ServiceDescriptor;
22  import org.mule.api.transaction.TransactionFactory;
23  import org.mule.api.transformer.Transformer;
24  import org.mule.api.transport.Connector;
25  import org.mule.api.transport.MessageDispatcherFactory;
26  import org.mule.api.transport.MessageReceiver;
27  import org.mule.api.transport.MessageRequesterFactory;
28  import org.mule.api.transport.MuleMessageFactory;
29  import org.mule.api.transport.SessionHandler;
30  import org.mule.endpoint.EndpointURIEndpointBuilder;
31  
32  import java.util.List;
33  import java.util.Properties;
34  
35  /**
36   * <code>TransportServiceDescriptor</code> describes the necessary information for
37   * creating a connector from a service descriptor. A service descriptor should be
38   * located at META-INF/services/org/mule/providers/<protocol> where protocol is the
39   * protocol of the connector to be created The service descriptor is in the form of
40   * string key value pairs and supports a number of properties, descriptions of which
41   * can be found here: http://www.mulesoft.org/documentation/display/MULE3USER/Transport+Service+Descriptors
42   */
43  public interface TransportServiceDescriptor extends ServiceDescriptor, MuleContextAware
44  {
45      public static final String OSGI_HEADER_TRANSPORT = "Mule-Transport";
46  
47      MuleMessageFactory createMuleMessageFactory() throws TransportServiceException;
48  
49      SessionHandler createSessionHandler() throws TransportServiceException;
50  
51      MessageReceiver createMessageReceiver(Connector connector,
52                                                   FlowConstruct flowConstruct,
53                                                   InboundEndpoint endpoint) throws MuleException;
54  
55      MessageReceiver createMessageReceiver(Connector connector,
56                                                   FlowConstruct flowConstruct,
57                                                   InboundEndpoint endpoint,
58                                                   Object... args) throws MuleException;
59  
60      MessageDispatcherFactory createDispatcherFactory() throws TransportServiceException;
61  
62      MessageRequesterFactory createRequesterFactory() throws TransportServiceException;
63  
64      TransactionFactory createTransactionFactory() throws TransportServiceException;
65  
66      Connector createConnector() throws TransportServiceException;
67  
68      List<Transformer> createInboundTransformers(ImmutableEndpoint endpoint) throws TransportFactoryException;
69  
70      List<Transformer> createOutboundTransformers(ImmutableEndpoint endpoint) throws TransportFactoryException;
71  
72      List<Transformer> createResponseTransformers(ImmutableEndpoint endpoint) throws TransportFactoryException;
73  
74      EndpointURIBuilder createEndpointURIBuilder() throws TransportFactoryException;
75  
76      EndpointBuilder createEndpointBuilder(String uri) throws TransportFactoryException;
77  
78      EndpointBuilder createEndpointBuilder(EndpointURIEndpointBuilder builder) throws TransportFactoryException;
79  
80      void setExceptionMappings(Properties props);
81  
82      Properties getExceptionMappings();
83  
84      List<MessageExchangePattern> getInboundExchangePatterns() throws TransportServiceException;
85  
86      List<MessageExchangePattern> getOutboundExchangePatterns() throws TransportServiceException;
87  
88      MessageExchangePattern getDefaultExchangePattern() throws TransportServiceException;
89  }