001: package org.mule.config.builders;
002:
003: import org.mule.api.MuleContext;
004: import org.mule.api.MuleException;
005: import org.mule.api.config.MuleProperties;
006: import org.mule.api.config.ThreadingProfile;
007: import org.mule.api.model.Model;
008: import org.mule.api.registry.Registry;
009: import org.mule.config.ChainedThreadingProfile;
010: import org.mule.config.bootstrap.SimpleRegistryBootstrap;
011: import org.mule.endpoint.DefaultEndpointFactory;
012: import org.mule.model.seda.SedaModel;
013: import org.mule.security.MuleSecurityManager;
014: import org.mule.transport.SingleAttemptConnectionStrategy;
015: import org.mule.util.queue.MemoryPersistenceStrategy;
016: import org.mule.util.queue.QueueManager;
017: import org.mule.util.queue.TransactionalQueueManager;
018:
019: /**
020: * Configures defaults required by Mule. This configuration builder is used to
021: * configure mule with these defaults when no other ConfigurationBuilder that sets
022: * these is being used. This is used by both AbstractMuleTestCase and MuleClient.
023: * <br>
024: * <br>
025: * Default instances of the following are configured:
026: * <li> {@link SimpleRegistryBootstrap}
027: * <li> {@link QueueManager}
028: * <li> {@link SecurityManager}
029: * <li> {@link DefaultEndpointFactory}
030: * <li> {@link Model} systemModel
031: * <li> {@link ThreadingProfile} defaultThreadingProfile
032: * <li> {@link ThreadingProfile} defaultMessageDispatcherThreadingProfile
033: * <li> {@link ThreadingProfile} defaultMessageRequesterThreadingProfile
034: * <li> {@link ThreadingProfile} defaultMessageReceiverThreadingProfile
035: * <li> {@link ThreadingProfile} defaultComponentThreadingProfile
036: */
037: public class DefaultsConfigurationBuilder extends
038: AbstractConfigurationBuilder {
039:
040: protected void doConfigure(MuleContext muleContext)
041: throws Exception {
042: configureDefaults(muleContext.getRegistry());
043: }
044:
045: protected void configureDefaults(Registry registry)
046: throws MuleException {
047: registry.registerObject(
048: MuleProperties.OBJECT_MULE_SIMPLE_REGISTRY_BOOTSTRAP,
049: new SimpleRegistryBootstrap());
050:
051: QueueManager queueManager = new TransactionalQueueManager();
052: queueManager
053: .setPersistenceStrategy(new MemoryPersistenceStrategy());
054: registry.registerObject(MuleProperties.OBJECT_QUEUE_MANAGER,
055: queueManager);
056:
057: registry.registerObject(MuleProperties.OBJECT_SECURITY_MANAGER,
058: new MuleSecurityManager());
059:
060: registry.registerObject(
061: MuleProperties.OBJECT_MULE_ENDPOINT_FACTORY,
062: new DefaultEndpointFactory());
063:
064: ThreadingProfile defaultThreadingProfile = new ChainedThreadingProfile();
065: defaultThreadingProfile.setThreadWaitTimeout(30);
066: defaultThreadingProfile.setMaxThreadsActive(10);
067: defaultThreadingProfile.setMaxThreadsIdle(10);
068: defaultThreadingProfile.setMaxBufferSize(0);
069: defaultThreadingProfile.setThreadTTL(60000);
070: defaultThreadingProfile
071: .setPoolExhaustedAction(ThreadingProfile.WHEN_EXHAUSTED_RUN);
072: registry.registerObject(
073: MuleProperties.OBJECT_DEFAULT_THREADING_PROFILE,
074: defaultThreadingProfile);
075: registry
076: .registerObject(
077: MuleProperties.OBJECT_DEFAULT_MESSAGE_RECEIVER_THREADING_PROFILE,
078: new ChainedThreadingProfile(
079: defaultThreadingProfile));
080: registry
081: .registerObject(
082: MuleProperties.OBJECT_DEFAULT_MESSAGE_REQUESTER_THREADING_PROFILE,
083: new ChainedThreadingProfile(
084: defaultThreadingProfile));
085: registry
086: .registerObject(
087: MuleProperties.OBJECT_DEFAULT_MESSAGE_DISPATCHER_THREADING_PROFILE,
088: new ChainedThreadingProfile(
089: defaultThreadingProfile));
090: registry
091: .registerObject(
092: MuleProperties.OBJECT_DEFAULT_COMPONENT_THREADING_PROFILE,
093: new ChainedThreadingProfile(
094: defaultThreadingProfile));
095:
096: registry.registerObject(
097: MuleProperties.OBJECT_DEFAULT_CONNECTION_STRATEGY,
098: new SingleAttemptConnectionStrategy());
099:
100: Model systemModel = new SedaModel();
101: systemModel.setName(MuleProperties.OBJECT_SYSTEM_MODEL);
102: registry.registerModel(systemModel);
103: }
104: }
|