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