View Javadoc

1   /*
2    * $Id: ComponentBuilder.java 19191 2010-08-25 21:05:23Z tcarlson $
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  package org.mule.config.dsl;
11  
12  import org.mule.api.MuleContext;
13  import org.mule.api.component.Component;
14  import org.mule.api.object.ObjectFactory;
15  import org.mule.component.DefaultJavaComponent;
16  import org.mule.component.PooledJavaComponent;
17  import org.mule.object.AbstractObjectFactory;
18  import org.mule.object.PrototypeObjectFactory;
19  import org.mule.object.SingletonObjectFactory;
20  
21  /**
22   * TODO
23   */
24  public class ComponentBuilder
25  {
26      public enum Scope
27      {
28          Prototype,
29          Pooled,
30          Singleton;
31      }
32  
33      private Component component;
34      private MuleContext muleContext;
35  
36      ComponentBuilder(Scope scope, Class clazz, MuleContext muleContext)
37      {
38          this.muleContext = muleContext;
39          AbstractObjectFactory factory;
40          if (scope == Scope.Singleton)
41          {
42              factory = new SingletonObjectFactory(clazz);
43          }
44          else
45          {
46              factory = new PrototypeObjectFactory(clazz);
47          }
48  
49          if (scope == Scope.Pooled)
50          {
51              component = new PooledJavaComponent(factory);
52          }
53          else
54          {
55              component = new DefaultJavaComponent(factory);
56          }
57      }
58  
59      ComponentBuilder(Object instance, MuleContext muleContext)
60      {
61          this.muleContext = muleContext;
62          ObjectFactory  factory = new SingletonObjectFactory(instance);
63          component = new DefaultJavaComponent(factory);
64      }
65  
66      Component create()
67      {
68          return component;
69      }
70  
71      public OutRouteBuilder to(String uri)
72      {
73          return null;
74      }
75  }