1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.actions.iface.tools.oracle;
14
15 import java.io.File;
16 import java.io.IOException;
17
18 import com.eviware.soapui.SoapUI;
19 import com.eviware.soapui.impl.wsdl.actions.iface.tools.support.AbstractToolsAction;
20 import com.eviware.soapui.impl.wsdl.actions.iface.tools.support.ArgumentBuilder;
21 import com.eviware.soapui.impl.wsdl.actions.iface.tools.support.ProcessToolRunner;
22 import com.eviware.soapui.impl.wsdl.actions.iface.tools.support.ToolHost;
23 import com.eviware.soapui.impl.wsdl.support.HelpUrls;
24 import com.eviware.soapui.model.iface.Interface;
25 import com.eviware.soapui.settings.ToolsSettings;
26 import com.eviware.soapui.support.Tools;
27 import com.eviware.soapui.support.UISupport;
28 import com.eviware.soapui.support.action.ActionList;
29 import com.eviware.soapui.support.types.StringToStringMap;
30 import com.eviware.x.form.XForm;
31 import com.eviware.x.form.XFormDialog;
32 import com.eviware.x.form.XFormDialogBuilder;
33 import com.eviware.x.form.XFormFactory;
34
35 /***
36 * Invokes oracle genproxy
37 *
38 * @author Ole.Matzura
39 */
40
41 public class OracleWsaGenProxyAction extends AbstractToolsAction<Interface>
42 {
43 private static final String OUTPUT = "Output Directory";
44 private static final String PACKAGE = "Destination Package";
45
46 public OracleWsaGenProxyAction( Interface iface )
47 {
48 super( iface, "Oracle Proxy Artifacts", "Generates Oracle Proxy artifacts using the wsa.jar utility");
49 }
50
51 protected XFormDialog buildDialog()
52 {
53 XFormDialogBuilder builder = XFormFactory.createDialogBuilder("Oracle Artifacts");
54
55 XForm mainForm = builder.createForm( "Basic" );
56 addWSDLFields( mainForm );
57
58 mainForm.addTextField( OUTPUT, "The root directory for all emitted files.", XForm.FieldType.PROJECT_FOLDER );
59 mainForm.addTextField( PACKAGE, "The target package for generated classes", XForm.FieldType.JAVA_PACKAGE );
60
61 buildArgsForm( builder, true, "wsa" );
62
63 ActionList actions = buildDefaultActions(HelpUrls.ORACLEWSA_HELP_URL);
64 return builder.buildDialog( actions,
65 "Specify arguments for Oracle wsa.jar genProxy functionality", UISupport.TOOL_ICON );
66 }
67
68 protected void generate(StringToStringMap values, ToolHost toolHost) throws Exception
69 {
70 String wsaDir = SoapUI.getSettings().getString( ToolsSettings.ORACLE_WSA_LOCATION, null );
71 if( Tools.isEmpty( wsaDir ))
72 {
73 UISupport.showErrorMessage( "wsa.jar directory must be set in global preferences" );
74 return;
75 }
76
77 File wsaFile = new File( wsaDir + File.separatorChar + "wsa.jar" );
78 if( !wsaFile.exists() )
79 {
80 UISupport.showErrorMessage( "Could not find wsa.jar at [" + wsaFile + "]" );
81 return;
82 }
83
84 ProcessBuilder builder = new ProcessBuilder();
85 ArgumentBuilder args = buildArgs();
86 builder.command(args.getArgs());
87 builder.directory(new File(wsaDir));
88
89 toolHost.run( new ProcessToolRunner( builder, "Oracle wsa.jar", modelItem ));
90 }
91
92 private ArgumentBuilder buildArgs() throws IOException
93 {
94 StringToStringMap values = dialog.getValues();
95
96 values.put( OUTPUT, Tools.ensureDir( values.get( OUTPUT ), "" ));
97
98 ArgumentBuilder builder = new ArgumentBuilder( values );
99 builder.addArgs( "java", "-jar", "wsa.jar", "-genProxy" );
100 addJavaArgs( values, builder );
101
102 builder.addArgs( "-wsdl", getWsdlUrl( values ) );
103 builder.addString( OUTPUT, "-output" );
104 builder.addString( PACKAGE, "-packageName" );
105
106 addToolArgs( values, builder );
107 return builder;
108 }
109 }