1
2
3
4
5
6
7 package org.mule.module.scripting.config;
8
9 import org.mule.config.spring.parsers.assembly.BeanAssembler;
10 import org.mule.config.spring.parsers.generic.OptionalChildDefinitionParser;
11 import org.mule.config.spring.parsers.processors.CheckRequiredAttributes;
12 import org.mule.module.scripting.component.Scriptable;
13 import org.mule.util.StringUtils;
14
15 import org.springframework.beans.factory.xml.ParserContext;
16 import org.w3c.dom.Element;
17 import org.w3c.dom.Node;
18
19 public class ScriptDefinitionParser extends OptionalChildDefinitionParser
20 {
21 public ScriptDefinitionParser()
22 {
23 super("script", Scriptable.class);
24 addIgnored("name");
25 addAlias("engine", "scriptEngineName");
26 addAlias("file", "scriptFile");
27
28
29
30 String[][] requiredAttributeSets = new String[2][];
31 requiredAttributeSets[0] = new String[]{"engine"};
32 requiredAttributeSets[1] = new String[]{"file"};
33 registerPreProcessor(new CheckRequiredAttributes(requiredAttributeSets));
34 }
35
36 protected void postProcess(ParserContext context, BeanAssembler assembler, Element element)
37 {
38 Node node = element.getFirstChild();
39 if (node != null)
40 {
41 String value = node.getNodeValue();
42
43 if(node.getNextSibling()!=null && node.getNextSibling().getNodeType()== Node.CDATA_SECTION_NODE)
44 {
45 value = node.getNextSibling().getNodeValue();
46 }
47
48 if (!StringUtils.isBlank(value))
49 {
50 assembler.getBean().addPropertyValue("scriptText", value);
51 }
52 }
53 super.postProcess(context, assembler, element);
54 }
55 }
56
57