View Javadoc

1   /*
2    * $Id$
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.config.spring.factories;
12  
13  import org.mule.api.component.Component;
14  import org.mule.api.endpoint.EndpointBuilder;
15  import org.mule.api.processor.MessageProcessor;
16  import org.mule.api.transformer.Transformer;
17  import org.mule.config.spring.util.SpringBeanLookup;
18  import org.mule.construct.SimpleService;
19  import org.mule.construct.SimpleService.Type;
20  import org.mule.construct.builder.AbstractFlowConstructBuilder;
21  import org.mule.construct.builder.SimpleServiceBuilder;
22  import org.springframework.beans.BeansException;
23  import org.springframework.context.ApplicationContext;
24  
25  /**
26   * Builds SimpleService instances by using the SimpleServiceBuilder.
27   */
28  public class SimpleServiceFactoryBean extends AbstractFlowConstructFactoryBean
29  {
30      final SimpleServiceBuilder simpleServiceBuilder = new SimpleServiceBuilder();
31  
32      private SpringBeanLookup springBeanLookup;
33  
34      public Class<?> getObjectType()
35      {
36          return SimpleService.class;
37      }
38  
39      @Override
40      protected AbstractFlowConstructBuilder<SimpleServiceBuilder, SimpleService> getFlowConstructBuilder()
41      {
42          return simpleServiceBuilder;
43      }
44  
45      @Override
46      public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
47      {
48          super.setApplicationContext(applicationContext);
49  
50          if (springBeanLookup != null)
51          {
52              springBeanLookup.setApplicationContext(applicationContext);
53          }
54      }
55  
56      public void setEndpointBuilder(EndpointBuilder endpointBuilder)
57      {
58          simpleServiceBuilder.inboundEndpoint(endpointBuilder);
59      }
60  
61      public void setAddress(String address)
62      {
63          simpleServiceBuilder.inboundAddress(address);
64      }
65  
66      public void setTransformers(Transformer... transformers)
67      {
68          simpleServiceBuilder.inboundTransformers(transformers);
69      }
70  
71      public void setResponseTransformers(Transformer... responseTransformers)
72      {
73          simpleServiceBuilder.inboundResponseTransformers(responseTransformers);
74      }
75  
76      public void setComponentClass(Class<?> componentClass)
77      {
78          simpleServiceBuilder.component(componentClass);
79      }
80  
81      public void setComponentBeanName(String componentBeanName)
82      {
83          springBeanLookup = new SpringBeanLookup();
84          springBeanLookup.setBean(componentBeanName);
85          simpleServiceBuilder.component(springBeanLookup);
86      }
87      
88      public void setType(Type type) {
89          simpleServiceBuilder.type(type);
90      }
91  
92      public void setMessageProcessor(MessageProcessor component)
93      {
94          if (component instanceof Component)
95          {
96              simpleServiceBuilder.component((Component) component);
97          }
98          else
99          {
100             throw new IllegalArgumentException("Single Component message processor is required");
101         }
102     }
103 }