1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.support.scripting.groovy;
14
15 import com.eviware.soapui.SoapUI;
16 import com.eviware.soapui.model.ModelItem;
17 import com.eviware.soapui.model.propertyexpansion.PropertyExpansion;
18 import com.eviware.soapui.support.scripting.SoapUIScriptEngine;
19 import com.eviware.soapui.support.scripting.SoapUIScriptEngineFactory;
20 import com.eviware.soapui.support.scripting.SoapUIScriptGenerator;
21 import com.eviware.soapui.support.types.StringToStringMap;
22 import com.eviware.soapui.support.xml.XPathData;
23
24 /***
25 * Factory for creating Groovy ScriptEngines
26 *
27 * @author ole.matzura
28 */
29
30 public class GroovyScriptEngineFactory implements SoapUIScriptEngineFactory, SoapUIScriptGenerator
31 {
32 public static final String ID = "Groovy";
33
34 public SoapUIScriptEngine createScriptEngine( ModelItem modelItem )
35 {
36 return new SoapUIGroovyScriptEngine( SoapUI.class.getClassLoader() );
37 }
38
39 public SoapUIScriptGenerator createCodeGenerator( ModelItem modelItem )
40 {
41 return this;
42 }
43
44 public String createContextExpansion( String name, PropertyExpansion expansion )
45 {
46 return "def " + name + " = context.expand( '" + expansion + "' )\n";
47 }
48
49 public String createScriptAssertionForExists( XPathData xpathData )
50 {
51 String script = "import com.eviware.soapui.support.XmlHolder\n\n"
52 + "def holder = new XmlHolder( messageExchange.responseContentAsXml )\n";
53
54 StringToStringMap nsMap = xpathData.getNamespaceMap();
55 for( String ns : nsMap.keySet() )
56 {
57 script += "holder.namespaces[\"" + nsMap.get( ns ) + "\"] = \"" + ns + "\"\n";
58 }
59
60 script += "def node = holder.getDomNode( \"" + xpathData.getPath() + "\" )\n";
61 script += "\nassert node != null\n";
62
63 return script;
64 }
65 }