1
2
3
4
5
6
7
8
9
10 package org.mule.config.dsl;
11
12 import org.mule.api.MuleContext;
13 import org.mule.api.routing.OutboundRouterCollection;
14 import org.mule.api.service.Service;
15 import org.mule.model.seda.SedaService;
16
17
18
19
20 public class ServiceBuilder
21 {
22 private Service service;
23 private MuleContext muleContext;
24
25
26 public ServiceBuilder(String name, MuleContext muleContext)
27 {
28 this.muleContext = muleContext;
29 service = new SedaService(muleContext);
30 service.setName(name);
31 }
32
33 public ComponentBuilder toComponent(Class clazz)
34 {
35 ComponentBuilder builder = new ComponentBuilder(ComponentBuilder.Scope.Prototype, clazz, muleContext);
36 service.setComponent(builder.create());
37 return builder;
38 }
39
40 public ComponentBuilder toPooledComponent(Class clazz)
41 {
42 ComponentBuilder builder = new ComponentBuilder(ComponentBuilder.Scope.Pooled, clazz, muleContext);
43 service.setComponent(builder.create());
44 return builder;
45 }
46
47 public ComponentBuilder toComponent(Object instance)
48 {
49 ComponentBuilder builder = new ComponentBuilder(instance, muleContext);
50 service.setComponent(builder.create());
51 return builder;
52 }
53
54 public OutRouteBuilder to(String uri)
55 {
56 OutRouteBuilder rb = new OutRouteBuilder(
57 (OutboundRouterCollection) service.getOutboundMessageProcessor(), muleContext);
58 rb.to(uri);
59 return rb;
60 }
61
62 Service create()
63 {
64 return service;
65 }
66 }