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.builders;
8   
9   import org.mule.api.MuleContext;
10  import org.mule.api.config.MuleProperties;
11  import org.mule.api.config.ThreadingProfile;
12  import org.mule.api.model.Model;
13  import org.mule.api.registry.MuleRegistry;
14  import org.mule.config.ChainedThreadingProfile;
15  import org.mule.config.bootstrap.SimpleRegistryBootstrap;
16  import org.mule.endpoint.DefaultEndpointFactory;
17  import org.mule.management.stats.DefaultProcessingTimeWatcher;
18  import org.mule.model.seda.SedaModel;
19  import org.mule.retry.policies.NoRetryPolicyTemplate;
20  import org.mule.security.MuleSecurityManager;
21  import org.mule.util.DefaultStreamCloserService;
22  import org.mule.util.queue.FilePersistenceStrategy;
23  import org.mule.util.queue.QueueManager;
24  import org.mule.util.queue.TransactionalQueueManager;
25  
26  /**
27   * Configures defaults required by Mule. This configuration builder is used to
28   * configure mule with these defaults when no other ConfigurationBuilder that sets
29   * these is being used. This is used by both AbstractMuleTestCase and MuleClient.
30   * <br>
31   * <br>
32   * Default instances of the following are configured:
33   * <li> {@link SimpleRegistryBootstrap}
34   * <li> {@link QueueManager}
35   * <li> {@link SecurityManager}
36   * <li> {@link DefaultEndpointFactory}
37   * <li> {@link Model} systemModel
38   * <li> {@link ThreadingProfile} defaultThreadingProfile
39   * <li> {@link ThreadingProfile} defaultMessageDispatcherThreadingProfile
40   * <li> {@link ThreadingProfile} defaultMessageRequesterThreadingProfile
41   * <li> {@link ThreadingProfile} defaultMessageReceiverThreadingProfile
42   * <li> {@link ThreadingProfile} defaultComponentThreadingProfile
43   */
44  public class DefaultsConfigurationBuilder extends AbstractConfigurationBuilder
45  {
46      protected void doConfigure(MuleContext muleContext) throws Exception
47      {
48          MuleRegistry registry = muleContext.getRegistry();
49          
50          //registry.registerObject(MuleProperties.OBJECT_MULE_CONFIGURATION, new MuleConfiguration());
51          registry.registerObject(MuleProperties.OBJECT_MULE_SIMPLE_REGISTRY_BOOTSTRAP,
52              new SimpleRegistryBootstrap());
53          
54          FilePersistenceStrategy ps = new FilePersistenceStrategy();
55          ps.setMuleContext(muleContext);
56          QueueManager queueManager = new TransactionalQueueManager();
57          queueManager.setPersistenceStrategy(ps);
58          registry.registerObject(MuleProperties.OBJECT_QUEUE_MANAGER, queueManager);
59          
60          registry.registerObject(MuleProperties.OBJECT_SECURITY_MANAGER, new MuleSecurityManager());
61          
62          registry.registerObject(MuleProperties.OBJECT_MULE_ENDPOINT_FACTORY, new DefaultEndpointFactory());
63          registry.registerObject(MuleProperties.OBJECT_MULE_STREAM_CLOSER_SERVICE, new DefaultStreamCloserService());
64          
65          ThreadingProfile defaultThreadingProfile = new ChainedThreadingProfile();
66          registry.registerObject(MuleProperties.OBJECT_DEFAULT_THREADING_PROFILE, defaultThreadingProfile);
67          registry.registerObject(MuleProperties.OBJECT_DEFAULT_MESSAGE_RECEIVER_THREADING_PROFILE,
68              new ChainedThreadingProfile(defaultThreadingProfile));
69          registry.registerObject(MuleProperties.OBJECT_DEFAULT_MESSAGE_REQUESTER_THREADING_PROFILE,
70              new ChainedThreadingProfile(defaultThreadingProfile));
71          registry.registerObject(MuleProperties.OBJECT_DEFAULT_MESSAGE_DISPATCHER_THREADING_PROFILE,
72              new ChainedThreadingProfile(defaultThreadingProfile));
73          registry.registerObject(MuleProperties.OBJECT_DEFAULT_SERVICE_THREADING_PROFILE,
74              new ChainedThreadingProfile(defaultThreadingProfile));
75          registry.registerObject(MuleProperties.OBJECT_PROCESSING_TIME_WATCHER, new DefaultProcessingTimeWatcher());
76  
77          registry.registerObject(MuleProperties.OBJECT_DEFAULT_RETRY_POLICY_TEMPLATE, new NoRetryPolicyTemplate());
78          
79          Model systemModel = new SedaModel();
80          systemModel.setName(MuleProperties.OBJECT_SYSTEM_MODEL);
81          registry.registerModel(systemModel);
82      }
83  }