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