View Javadoc

1   /*
2    * $Id: DefaultsConfigurationBuilder.java 12370 2008-07-17 13:11:17Z tcarlson $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.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  
11  package org.mule.config.builders;
12  
13  import org.mule.api.MuleContext;
14  import org.mule.api.MuleException;
15  import org.mule.api.config.MuleProperties;
16  import org.mule.api.config.ThreadingProfile;
17  import org.mule.api.model.Model;
18  import org.mule.api.registry.Registry;
19  import org.mule.config.ChainedThreadingProfile;
20  import org.mule.config.bootstrap.SimpleRegistryBootstrap;
21  import org.mule.endpoint.DefaultEndpointFactory;
22  import org.mule.model.seda.SedaModel;
23  import org.mule.security.MuleSecurityManager;
24  import org.mule.transport.SingleAttemptConnectionStrategy;
25  import org.mule.util.DefaultStreamCloserService;
26  import org.mule.util.queue.FilePersistenceStrategy;
27  import org.mule.util.queue.QueueManager;
28  import org.mule.util.queue.TransactionalQueueManager;
29  
30  /**
31   * Configures defaults required by Mule. This configuration builder is used to
32   * configure mule with these defaults when no other ConfigurationBuilder that sets
33   * these is being used. This is used by both AbstractMuleTestCase and MuleClient.
34   * <br>
35   * <br>
36   * Default instances of the following are configured:
37   * <li> {@link SimpleRegistryBootstrap}
38   * <li> {@link QueueManager}
39   * <li> {@link SecurityManager}
40   * <li> {@link DefaultEndpointFactory}
41   * <li> {@link Model} systemModel
42   * <li> {@link ThreadingProfile} defaultThreadingProfile
43   * <li> {@link ThreadingProfile} defaultMessageDispatcherThreadingProfile
44   * <li> {@link ThreadingProfile} defaultMessageRequesterThreadingProfile
45   * <li> {@link ThreadingProfile} defaultMessageReceiverThreadingProfile
46   * <li> {@link ThreadingProfile} defaultComponentThreadingProfile
47   */
48  public class DefaultsConfigurationBuilder extends AbstractConfigurationBuilder
49  {
50  
51      protected void doConfigure(MuleContext muleContext) throws Exception
52      {
53          configureDefaults(muleContext.getRegistry());
54      }
55  
56      protected void configureDefaults(Registry registry) throws MuleException
57      {
58          registry.registerObject(MuleProperties.OBJECT_MULE_SIMPLE_REGISTRY_BOOTSTRAP,
59              new SimpleRegistryBootstrap());
60          
61          QueueManager queueManager = new TransactionalQueueManager();
62          queueManager.setPersistenceStrategy(new FilePersistenceStrategy());
63          registry.registerObject(MuleProperties.OBJECT_QUEUE_MANAGER, queueManager);
64          
65          registry.registerObject(MuleProperties.OBJECT_SECURITY_MANAGER, new MuleSecurityManager());
66          
67          registry.registerObject(MuleProperties.OBJECT_MULE_ENDPOINT_FACTORY, new DefaultEndpointFactory());
68          registry.registerObject(MuleProperties.OBJECT_MULE_STREAM_CLOSER_SERVICE, new DefaultStreamCloserService());
69          
70          ThreadingProfile defaultThreadingProfile = new ChainedThreadingProfile();
71          defaultThreadingProfile.setThreadWaitTimeout(30);
72          defaultThreadingProfile.setMaxThreadsActive(10);
73          defaultThreadingProfile.setMaxThreadsIdle(10);
74          defaultThreadingProfile.setMaxBufferSize(0);
75          defaultThreadingProfile.setThreadTTL(60000);
76          defaultThreadingProfile.setPoolExhaustedAction(ThreadingProfile.WHEN_EXHAUSTED_RUN);
77          registry.registerObject(MuleProperties.OBJECT_DEFAULT_THREADING_PROFILE, defaultThreadingProfile);
78          registry.registerObject(MuleProperties.OBJECT_DEFAULT_MESSAGE_RECEIVER_THREADING_PROFILE,
79              new ChainedThreadingProfile(defaultThreadingProfile));
80          registry.registerObject(MuleProperties.OBJECT_DEFAULT_MESSAGE_REQUESTER_THREADING_PROFILE,
81              new ChainedThreadingProfile(defaultThreadingProfile));
82          registry.registerObject(MuleProperties.OBJECT_DEFAULT_MESSAGE_DISPATCHER_THREADING_PROFILE,
83              new ChainedThreadingProfile(defaultThreadingProfile));
84          registry.registerObject(MuleProperties.OBJECT_DEFAULT_COMPONENT_THREADING_PROFILE,
85              new ChainedThreadingProfile(defaultThreadingProfile));
86          
87          registry.registerObject(MuleProperties.OBJECT_DEFAULT_CONNECTION_STRATEGY, new SingleAttemptConnectionStrategy());
88          
89          Model systemModel = new SedaModel();
90          systemModel.setName(MuleProperties.OBJECT_SYSTEM_MODEL);
91          registry.registerModel(systemModel);
92      }
93  }