1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui;
14
15 import java.io.File;
16 import java.io.FileInputStream;
17
18 import com.eviware.soapui.config.SoapuiSettingsDocumentConfig;
19 import com.eviware.soapui.impl.rest.panels.request.inspectors.representations.RestRepresentationsInspectorFactory;
20 import com.eviware.soapui.impl.wsdl.actions.iface.tools.support.SwingToolHost;
21 import com.eviware.soapui.model.settings.Settings;
22 import com.eviware.soapui.model.workspace.Workspace;
23 import com.eviware.soapui.support.UISupport;
24 import com.eviware.soapui.support.editor.inspectors.attachments.AttachmentsInspectorFactory;
25 import com.eviware.soapui.support.editor.inspectors.aut.AutInspectorFactory;
26 import com.eviware.soapui.support.editor.inspectors.httpheaders.HttpHeadersInspectorFactory;
27 import com.eviware.soapui.support.editor.inspectors.script.ScriptInspectorFactory;
28 import com.eviware.soapui.support.editor.inspectors.ssl.SSLInspectorFactory;
29 import com.eviware.soapui.support.editor.inspectors.wsa.WsaInspectorFactory;
30 import com.eviware.soapui.support.editor.inspectors.wss.WssInspectorFactory;
31 import com.eviware.soapui.support.editor.registry.InspectorRegistry;
32 import com.eviware.x.form.XFormFactory;
33 import com.eviware.x.impl.swing.SwingFormFactory;
34
35 public class SwingSoapUICore extends DefaultSoapUICore
36 {
37 public SwingSoapUICore()
38 {
39 super();
40 }
41
42 public SwingSoapUICore(String root, String settingsFile)
43 {
44 super(root, settingsFile);
45 }
46
47 public void prepareUI()
48 {
49 UISupport.setToolHost(new SwingToolHost());
50 XFormFactory.Factory.instance = new SwingFormFactory();
51 }
52
53 public void afterStartup(Workspace workspace)
54 {
55 InspectorRegistry inspectorRegistry = InspectorRegistry.getInstance();
56 inspectorRegistry.addFactory(new ScriptInspectorFactory());
57 inspectorRegistry.addFactory(new AutInspectorFactory());
58 inspectorRegistry.addFactory(new HttpHeadersInspectorFactory());
59 inspectorRegistry.addFactory(new AttachmentsInspectorFactory());
60 inspectorRegistry.addFactory(new SSLInspectorFactory());
61 inspectorRegistry.addFactory(new WssInspectorFactory());
62 inspectorRegistry.addFactory(new WsaInspectorFactory());
63 inspectorRegistry.addFactory(new RestRepresentationsInspectorFactory());
64
65 String actionsDir = System.getProperty("soapui.ext.actions");
66 addExternalActions(actionsDir == null ? getRoot() == null ? "actions" : getRoot() + File.separatorChar
67 + "actions" : actionsDir, getExtensionClassLoader());
68 }
69
70 @Override
71 protected Settings initSettings(String fileName)
72 {
73 String fn = fileName;
74
75 if (!new File(fileName).exists())
76 {
77 try
78 {
79 fileName = importSettingsOnStartup(fileName);
80 }
81 catch (Exception e)
82 {
83 e.printStackTrace();
84 }
85 }
86
87 Settings result = super.initSettings(fileName);
88
89 if (!fileName.equals(fn))
90 setSettingsFile(fn);
91
92 return result;
93 }
94
95 protected String importSettingsOnStartup(String fileName) throws Exception
96 {
97 if (UISupport.getDialogs().confirm("Missing soapUI Settings, import from existing installation?",
98 "Import Preferences"))
99 {
100 while (true)
101 {
102 File settingsFile = UISupport.getFileDialogs().open(null, "Import Preferences", ".xml",
103 "soapUI settings XML", fileName);
104 if (settingsFile != null)
105 {
106 try
107 {
108 SoapuiSettingsDocumentConfig.Factory.parse(settingsFile);
109 log.info("imported soapui-settings from [" + settingsFile.getAbsolutePath() + "]");
110 return settingsFile.getAbsolutePath();
111 }
112 catch (Exception e)
113 {
114 if (!UISupport.getDialogs().confirm(
115 "Error loading settings from [" + settingsFile.getAbsolutePath() + "]\r\nspecify another?",
116 "Error Importing"))
117 {
118 break;
119 }
120 }
121 }
122 }
123 }
124
125 return fileName;
126 }
127
128 private void addExternalActions(String folder, ClassLoader classLoader)
129 {
130 File[] actionFiles = new File(folder).listFiles();
131 if (actionFiles != null)
132 {
133 for (File actionFile : actionFiles)
134 {
135 if (actionFile.isDirectory())
136 {
137 addExternalActions(actionFile.getAbsolutePath(), classLoader);
138 continue;
139 }
140
141 if (!actionFile.getName().toLowerCase().endsWith("-actions.xml"))
142 continue;
143
144 try
145 {
146 log.info("Adding actions from [" + actionFile.getAbsolutePath() + "]");
147
148 SoapUI.getActionRegistry().addConfig(new FileInputStream(actionFile), classLoader);
149 }
150 catch (Exception e)
151 {
152 SoapUI.logError(e);
153 }
154 }
155 }
156 }
157 }