View Javadoc

1   /*
2    * $Id: ApplicationMuleContextBuilder.java 20958 2011-01-11 17:17:37Z aperepel $
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  
11  package org.mule.module.launcher;
12  
13  import org.mule.api.config.ThreadingProfile;
14  import org.mule.config.DefaultMuleConfiguration;
15  import org.mule.config.PropertiesMuleConfigurationFactory;
16  import org.mule.context.DefaultMuleContextBuilder;
17  import org.mule.module.launcher.descriptor.ApplicationDescriptor;
18  import org.mule.util.StringUtils;
19  import org.mule.work.MuleWorkManager;
20  
21  /**
22   * Takes Mule application descriptor into account when building the context.
23   */
24  public class ApplicationMuleContextBuilder extends DefaultMuleContextBuilder
25  {
26      protected ApplicationDescriptor desc;
27  
28      public ApplicationMuleContextBuilder(ApplicationDescriptor desc)
29      {
30          this.desc = desc;
31      }
32  
33      @Override
34      protected DefaultMuleConfiguration createMuleConfiguration()
35      {
36          final DefaultMuleConfiguration configuration = new DefaultMuleConfiguration(true);
37          PropertiesMuleConfigurationFactory.initializeFromProperties(configuration, desc.getAppProperties());
38          configuration.setId(desc.getAppName());
39          final String encoding = desc.getEncoding();
40          if (StringUtils.isNotBlank(encoding))
41          {
42              configuration.setDefaultEncoding(encoding);
43          }
44          return configuration;
45      }
46  
47      @Override
48      protected MuleWorkManager createWorkManager()
49      {
50          // use app name in the core Mule thread
51          final String threadName = String.format("[%s].Mule", desc.getAppName());
52          return new MuleWorkManager(ThreadingProfile.DEFAULT_THREADING_PROFILE, threadName, getMuleConfiguration().getShutdownTimeout());
53  
54      }
55  }