View Javadoc
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.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   * TODO
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  }