1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.support.scripting;
14
15 import java.util.HashMap;
16 import java.util.Map;
17
18 import com.eviware.soapui.SoapUI;
19 import com.eviware.soapui.impl.wsdl.WsdlProject;
20 import com.eviware.soapui.model.ModelItem;
21 import com.eviware.soapui.model.support.ModelSupport;
22 import com.eviware.soapui.support.StringUtils;
23 import com.eviware.soapui.support.scripting.groovy.GroovyScriptEngineFactory;
24 import com.eviware.soapui.support.scripting.js.JsScriptEngineFactory;
25 import com.eviware.soapui.support.types.StringList;
26
27 /***
28 * Registry of available script engines
29 *
30 * @author ole.matzura
31 */
32
33 public class SoapUIScriptEngineRegistry
34 {
35 public static final String DEFAULT_SCRIPT_ENGINE_ID = GroovyScriptEngineFactory.ID;
36
37 private static Map<String, SoapUIScriptEngineFactory> factories = new HashMap<String, SoapUIScriptEngineFactory>();
38
39 public static void registerScriptEngine( String id, SoapUIScriptEngineFactory factory )
40 {
41 factories.put( id, factory );
42 }
43
44 public static SoapUIScriptEngineFactory getFactory( String id )
45 {
46 return factories.get( id );
47 }
48
49 public static SoapUIScriptEngine create( ModelItem modelItem )
50 {
51 WsdlProject project = ( WsdlProject )ModelSupport.getModelItemProject( modelItem );
52
53 String scriptEngineId = null;
54 if( project == null )
55 SoapUI.log.warn( "Project is null" );
56 else
57 scriptEngineId = project.getDefaultScriptLanguage();
58
59 if( StringUtils.isNullOrEmpty( scriptEngineId ) )
60 scriptEngineId = DEFAULT_SCRIPT_ENGINE_ID;
61
62 return factories.get( scriptEngineId ).createScriptEngine( modelItem );
63 }
64
65 public static SoapUIScriptGenerator createScriptGenerator( ModelItem modelItem )
66 {
67 WsdlProject project = ( WsdlProject )ModelSupport.getModelItemProject( modelItem );
68
69 String scriptEngineId = project.getDefaultScriptLanguage();
70 if( StringUtils.isNullOrEmpty( scriptEngineId ) )
71 scriptEngineId = DEFAULT_SCRIPT_ENGINE_ID;
72
73 return factories.get( scriptEngineId ).createCodeGenerator( modelItem );
74 }
75
76 static
77 {
78 registerScriptEngine( GroovyScriptEngineFactory.ID, new GroovyScriptEngineFactory() );
79 registerScriptEngine( JsScriptEngineFactory.ID, new JsScriptEngineFactory() );
80 }
81
82 public static String[] getAvailableEngineIds()
83 {
84 return new StringList( factories.keySet() ).toStringArray();
85 }
86 }