Coverage Report - org.mule.endpoint.DefaultEndpointMessageProcessorChainFactory
 
Classes in this File Line Coverage Branch Coverage Complexity
DefaultEndpointMessageProcessorChainFactory
0%
0/57
0%
0/4
0
 
 1  
 /*
 2  
  * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
 3  
  * The software in this package is published under the terms of the CPAL v1.0
 4  
  * license, a copy of which has been included with this distribution in the
 5  
  * LICENSE.txt file.
 6  
  */
 7  
 package org.mule.endpoint;
 8  
 
 9  
 import org.mule.api.MuleException;
 10  
 import org.mule.api.config.ConfigurationException;
 11  
 import org.mule.api.construct.FlowConstruct;
 12  
 import org.mule.api.endpoint.EndpointMessageProcessorChainFactory;
 13  
 import org.mule.api.endpoint.InboundEndpoint;
 14  
 import org.mule.api.endpoint.OutboundEndpoint;
 15  
 import org.mule.api.processor.MessageProcessor;
 16  
 import org.mule.api.transport.Connector;
 17  
 import org.mule.config.i18n.MessageFactory;
 18  
 import org.mule.endpoint.inbound.InboundEndpointMimeTypeCheckingMessageProcessor;
 19  
 import org.mule.endpoint.inbound.InboundEndpointPropertyMessageProcessor;
 20  
 import org.mule.endpoint.inbound.InboundExceptionDetailsMessageProcessor;
 21  
 import org.mule.endpoint.inbound.InboundLoggingMessageProcessor;
 22  
 import org.mule.endpoint.inbound.InboundNotificationMessageProcessor;
 23  
 import org.mule.endpoint.outbound.OutboundEndpointMimeTypeCheckingMessageProcessor;
 24  
 import org.mule.endpoint.outbound.OutboundEndpointPropertyMessageProcessor;
 25  
 import org.mule.endpoint.outbound.OutboundEventTimeoutMessageProcessor;
 26  
 import org.mule.endpoint.outbound.OutboundLoggingMessageProcessor;
 27  
 import org.mule.endpoint.outbound.OutboundResponsePropertiesMessageProcessor;
 28  
 import org.mule.endpoint.outbound.OutboundRewriteResponseEventMessageProcessor;
 29  
 import org.mule.endpoint.outbound.OutboundSessionHandlerMessageProcessor;
 30  
 import org.mule.lifecycle.processor.ProcessIfStartedMessageProcessor;
 31  
 import org.mule.processor.ExceptionHandlingMessageProcessor;
 32  
 import org.mule.processor.TransactionalInterceptingMessageProcessor;
 33  
 import org.mule.processor.chain.DefaultMessageProcessorChainBuilder;
 34  
 import org.mule.routing.requestreply.ReplyToMessageProcessor;
 35  
 
 36  
 import java.util.ArrayList;
 37  
 import java.util.List;
 38  
 
 39  0
 public class DefaultEndpointMessageProcessorChainFactory implements EndpointMessageProcessorChainFactory
 40  
 {
 41  
     /** Override this method to change the default MessageProcessors. */
 42  
     protected List<MessageProcessor> createInboundMessageProcessors(InboundEndpoint endpoint)
 43  
     {
 44  0
         List<MessageProcessor> list = new ArrayList<MessageProcessor>();
 45  
 
 46  0
         list.add(new ExceptionHandlingMessageProcessor());
 47  0
         list.add(new InboundEndpointMimeTypeCheckingMessageProcessor(endpoint));
 48  0
         list.add(new InboundEndpointPropertyMessageProcessor(endpoint));
 49  0
         list.add(new InboundNotificationMessageProcessor(endpoint));
 50  0
         list.add(new InboundLoggingMessageProcessor(endpoint));
 51  
 
 52  0
         return list;
 53  
     }
 54  
     
 55  
     /** Override this method to change the default MessageProcessors. */
 56  
     protected List<MessageProcessor> createInboundResponseMessageProcessors(InboundEndpoint endpoint)
 57  
     {
 58  0
         List<MessageProcessor> list = new ArrayList<MessageProcessor>();
 59  0
         list.add(new ExceptionHandlingMessageProcessor());
 60  0
         list.add(new ReplyToMessageProcessor());
 61  0
         list.add(new InboundExceptionDetailsMessageProcessor(endpoint.getConnector()));
 62  
 
 63  0
         return list;
 64  
     }
 65  
     
 66  
     /** Override this method to change the default MessageProcessors. */
 67  
     protected List<MessageProcessor> createOutboundMessageProcessors(OutboundEndpoint endpoint) throws MuleException
 68  
     {
 69  0
         Connector connector = endpoint.getConnector();
 70  
 
 71  0
         List<MessageProcessor> list = new ArrayList<MessageProcessor>();
 72  
 
 73  
         // Log but don't proceed if connector is not started
 74  0
         list.add(new OutboundLoggingMessageProcessor());
 75  0
         list.add(new ProcessIfStartedMessageProcessor(connector, connector.getLifecycleState()));
 76  
 
 77  
         // Everything is processed within TransactionTemplate
 78  0
         list.add(new TransactionalInterceptingMessageProcessor(endpoint.getTransactionConfig()));
 79  
 
 80  0
         list.add(new OutboundEventTimeoutMessageProcessor());
 81  
 
 82  0
         list.add(new OutboundSessionHandlerMessageProcessor(connector.getSessionHandler()));
 83  0
         list.add(new OutboundEndpointPropertyMessageProcessor());
 84  0
         list.add(new OutboundResponsePropertiesMessageProcessor(endpoint));
 85  0
         list.add(new OutboundEndpointMimeTypeCheckingMessageProcessor(endpoint));
 86  
 
 87  0
         return list;
 88  
     }
 89  
     
 90  
     /** Override this method to change the default MessageProcessors. */
 91  
     protected List<MessageProcessor> createOutboundResponseMessageProcessors(OutboundEndpoint endpoint) throws MuleException
 92  
     {
 93  0
         List<MessageProcessor> list = new ArrayList<MessageProcessor>();
 94  
 
 95  0
         list.add(new OutboundRewriteResponseEventMessageProcessor());
 96  
 
 97  0
         return list;
 98  
     }
 99  
     
 100  
     public MessageProcessor createInboundMessageProcessorChain(InboundEndpoint endpoint, FlowConstruct flowConstruct, MessageProcessor target) throws MuleException
 101  
     {
 102  
         // -- REQUEST CHAIN --
 103  0
         DefaultMessageProcessorChainBuilder requestChainBuilder = new EndpointMessageProcessorChainBuilder(endpoint, flowConstruct);
 104  0
         requestChainBuilder.setName("InboundEndpoint '" + endpoint.getEndpointURI().getUri() + "' request chain");
 105  
         // Default MPs
 106  0
         requestChainBuilder.chain(createInboundMessageProcessors(endpoint));
 107  
         // Configured MPs (if any)
 108  0
         requestChainBuilder.chain(endpoint.getMessageProcessors());
 109  
         
 110  
         // -- INVOKE SERVICE --
 111  0
         if (target == null)
 112  
         {
 113  0
             throw new ConfigurationException(MessageFactory.createStaticMessage("No listener (target) has been set for this endpoint"));
 114  
         }
 115  0
         requestChainBuilder.chain(target);
 116  
 
 117  
         // -- RESPONSE CHAIN --
 118  0
         DefaultMessageProcessorChainBuilder responseChainBuilder = new EndpointMessageProcessorChainBuilder(endpoint, flowConstruct);
 119  0
         responseChainBuilder.setName("InboundEndpoint '" + endpoint.getEndpointURI().getUri() + "' response chain");
 120  
         // Default MPs
 121  0
         responseChainBuilder.chain(createInboundResponseMessageProcessors(endpoint));
 122  
         // Configured MPs (if any)
 123  0
         responseChainBuilder.chain(endpoint.getResponseMessageProcessors());
 124  
 
 125  
         // Compose request and response chains. We do this so that if the request
 126  
         // chain returns early the response chain is still invoked.
 127  0
         DefaultMessageProcessorChainBuilder compositeChainBuilder = new EndpointMessageProcessorChainBuilder(endpoint, flowConstruct);
 128  0
         compositeChainBuilder.setName("InboundEndpoint '"+ endpoint.getEndpointURI().getUri() +"' composite request/response chain");
 129  0
         compositeChainBuilder.chain(requestChainBuilder.build(), responseChainBuilder.build());
 130  0
         return compositeChainBuilder.build();
 131  
     }
 132  
 
 133  
     public MessageProcessor createOutboundMessageProcessorChain(OutboundEndpoint endpoint, FlowConstruct flowConstruct, MessageProcessor target) throws MuleException
 134  
     {
 135  
         // -- REQUEST CHAIN --
 136  0
         DefaultMessageProcessorChainBuilder outboundChainBuilder = new EndpointMessageProcessorChainBuilder(endpoint, flowConstruct);
 137  0
         outboundChainBuilder.setName("OutboundEndpoint '" + endpoint.getEndpointURI().getUri() + "' request chain");
 138  
         // Default MPs
 139  0
         outboundChainBuilder.chain(createOutboundMessageProcessors(endpoint));
 140  
         // Configured MPs (if any)
 141  0
         outboundChainBuilder.chain(endpoint.getMessageProcessors());
 142  
         
 143  
         // -- OUTBOUND ROUTER --
 144  0
         if (target == null)
 145  
         {
 146  0
             throw new ConfigurationException(MessageFactory.createStaticMessage("No listener (target) has been set for this endpoint"));
 147  
         }
 148  0
         outboundChainBuilder.chain(target);
 149  
         
 150  
         // -- RESPONSE CHAIN --
 151  0
         DefaultMessageProcessorChainBuilder responseChainBuilder = new EndpointMessageProcessorChainBuilder(endpoint, flowConstruct);
 152  0
         responseChainBuilder.setName("OutboundEndpoint '" + endpoint.getEndpointURI().getUri() + "' response chain");
 153  
         // Default MPs
 154  0
         responseChainBuilder.chain(createOutboundResponseMessageProcessors(endpoint));
 155  
         // Configured MPs (if any)
 156  0
         responseChainBuilder.chain(endpoint.getResponseMessageProcessors());
 157  
 
 158  
         // Compose request and response chains. We do this so that if the request
 159  
         // chain returns early the response chain is still invoked.
 160  0
         DefaultMessageProcessorChainBuilder compositeChainBuilder = new EndpointMessageProcessorChainBuilder(endpoint, flowConstruct);
 161  0
         compositeChainBuilder.setName("OutboundEndpoint '" + endpoint.getEndpointURI().getUri() + "' composite request/response chain");
 162  0
         compositeChainBuilder.chain(outboundChainBuilder.build(), responseChainBuilder.build());
 163  0
         return compositeChainBuilder.build();
 164  
     }
 165  
     
 166  
 }
 167  
 
 168