1
2
3
4
5
6
7
8
9
10
11 package org.mule.module.scripting.builders;
12
13 import org.mule.api.MuleContext;
14 import org.mule.api.MuleException;
15 import org.mule.config.ConfigResource;
16 import org.mule.config.builders.AbstractResourceConfigurationBuilder;
17 import org.mule.config.builders.i18n.BuildersMessages;
18 import org.mule.module.scripting.component.Scriptable;
19
20 import javax.script.Bindings;
21
22
23 public class ScriptConfigurationBuilder extends AbstractResourceConfigurationBuilder
24 {
25 public static final String SCRIPT_ENGINE_NAME_PROPERTY = "org.mule.script.engine";
26
27 private Scriptable scriptComponent = new Scriptable();
28
29 public ScriptConfigurationBuilder(String configResource) throws MuleException
30 {
31 this(System.getProperty(SCRIPT_ENGINE_NAME_PROPERTY), configResource);
32 }
33
34 public ScriptConfigurationBuilder(String[] configResources) throws MuleException
35 {
36 this(System.getProperty(SCRIPT_ENGINE_NAME_PROPERTY), configResources);
37 }
38
39 public ScriptConfigurationBuilder(String scriptEngineName, String configResource) throws MuleException
40 {
41 super(configResource);
42 if (scriptEngineName == null)
43 {
44
45 logger.warn(BuildersMessages.systemPropertyNotSet(SCRIPT_ENGINE_NAME_PROPERTY).getMessage());
46 }
47 scriptComponent.setScriptEngineName(scriptEngineName);
48 }
49
50 public ScriptConfigurationBuilder(String scriptEngineName, String[] configResources) throws MuleException
51 {
52 super(configResources);
53 if (scriptEngineName == null)
54 {
55
56 logger.warn(BuildersMessages.systemPropertyNotSet(SCRIPT_ENGINE_NAME_PROPERTY).getMessage());
57 }
58 scriptComponent.setScriptEngineName(scriptEngineName);
59 }
60
61 protected void doConfigure(MuleContext muleContext) throws Exception
62 {
63 for (int i = 0; i < configResources.length; i++)
64 {
65 ConfigResource configResource = configResources[i];
66 scriptComponent.setScriptFile(configResource.getResourceName());
67 scriptComponent.initialise();
68
69 Bindings bindings = scriptComponent.getScriptEngine().createBindings();
70 scriptComponent.populateDefaultBindings(bindings);
71 scriptComponent.runScript(bindings);
72 }
73 }
74 }