1
2
3
4
5
6
7 package org.mule.config.dsl;
8
9 import org.mule.api.MuleContext;
10 import org.mule.api.component.Component;
11 import org.mule.api.object.ObjectFactory;
12 import org.mule.component.DefaultJavaComponent;
13 import org.mule.component.PooledJavaComponent;
14 import org.mule.object.AbstractObjectFactory;
15 import org.mule.object.PrototypeObjectFactory;
16 import org.mule.object.SingletonObjectFactory;
17
18
19
20
21 public class ComponentBuilder
22 {
23 public enum Scope
24 {
25 Prototype,
26 Pooled,
27 Singleton;
28 }
29
30 private Component component;
31 private MuleContext muleContext;
32
33 ComponentBuilder(Scope scope, Class clazz, MuleContext muleContext)
34 {
35 this.muleContext = muleContext;
36 AbstractObjectFactory factory;
37 if (scope == Scope.Singleton)
38 {
39 factory = new SingletonObjectFactory(clazz);
40 }
41 else
42 {
43 factory = new PrototypeObjectFactory(clazz);
44 }
45
46 if (scope == Scope.Pooled)
47 {
48 component = new PooledJavaComponent(factory);
49 }
50 else
51 {
52 component = new DefaultJavaComponent(factory);
53 }
54 }
55
56 ComponentBuilder(Object instance, MuleContext muleContext)
57 {
58 this.muleContext = muleContext;
59 ObjectFactory factory = new SingletonObjectFactory(instance);
60 component = new DefaultJavaComponent(factory);
61 }
62
63 Component create()
64 {
65 return component;
66 }
67
68 public OutRouteBuilder to(String uri)
69 {
70 return null;
71 }
72 }