Lines 18-34
Link Here
|
18 |
|
18 |
|
19 |
package org.apache.jmeter.gui.action; |
19 |
package org.apache.jmeter.gui.action; |
20 |
|
20 |
|
21 |
import java.awt.event.ActionEvent; |
|
|
22 |
import java.io.File; |
23 |
import java.io.FileOutputStream; |
24 |
import java.util.HashSet; |
25 |
import java.util.Iterator; |
26 |
import java.util.LinkedList; |
27 |
import java.util.Set; |
28 |
|
29 |
import javax.swing.JFileChooser; |
30 |
import javax.swing.JOptionPane; |
31 |
|
32 |
import org.apache.commons.io.FilenameUtils; |
21 |
import org.apache.commons.io.FilenameUtils; |
33 |
import org.apache.jmeter.exceptions.IllegalUserActionException; |
22 |
import org.apache.jmeter.exceptions.IllegalUserActionException; |
34 |
import org.apache.jmeter.gui.GuiPackage; |
23 |
import org.apache.jmeter.gui.GuiPackage; |
Lines 36-47
Link Here
|
36 |
import org.apache.jmeter.gui.util.FileDialoger; |
25 |
import org.apache.jmeter.gui.util.FileDialoger; |
37 |
import org.apache.jmeter.save.SaveService; |
26 |
import org.apache.jmeter.save.SaveService; |
38 |
import org.apache.jmeter.testelement.TestElement; |
27 |
import org.apache.jmeter.testelement.TestElement; |
|
|
28 |
import org.apache.jmeter.testelement.WorkBench; |
39 |
import org.apache.jmeter.util.JMeterUtils; |
29 |
import org.apache.jmeter.util.JMeterUtils; |
40 |
import org.apache.jorphan.collections.HashTree; |
30 |
import org.apache.jorphan.collections.HashTree; |
41 |
import org.apache.jorphan.logging.LoggingManager; |
31 |
import org.apache.jorphan.logging.LoggingManager; |
42 |
import org.apache.jorphan.util.JOrphanUtils; |
32 |
import org.apache.jorphan.util.JOrphanUtils; |
43 |
import org.apache.log.Logger; |
33 |
import org.apache.log.Logger; |
44 |
|
34 |
|
|
|
35 |
import javax.swing.*; |
36 |
import java.awt.event.ActionEvent; |
37 |
import java.io.File; |
38 |
import java.io.FileOutputStream; |
39 |
import java.util.HashSet; |
40 |
import java.util.Iterator; |
41 |
import java.util.LinkedList; |
42 |
import java.util.Set; |
43 |
|
45 |
/** |
44 |
/** |
46 |
* Save the current test plan; implements: |
45 |
* Save the current test plan; implements: |
47 |
* Save |
46 |
* Save |
Lines 86-92
Link Here
|
86 |
} |
85 |
} |
87 |
if (e.getActionCommand().equals(ActionNames.SAVE_AS)) { |
86 |
if (e.getActionCommand().equals(ActionNames.SAVE_AS)) { |
88 |
JMeterTreeNode[] nodes = GuiPackage.getInstance().getTreeListener().getSelectedNodes(); |
87 |
JMeterTreeNode[] nodes = GuiPackage.getInstance().getTreeListener().getSelectedNodes(); |
89 |
if (nodes.length > 1){ |
88 |
if (nodes.length > 1) { |
90 |
JMeterUtils.reportErrorToUser( |
89 |
JMeterUtils.reportErrorToUser( |
91 |
JMeterUtils.getResString("save_as_error"), // $NON-NLS-1$ |
90 |
JMeterUtils.getResString("save_as_error"), // $NON-NLS-1$ |
92 |
JMeterUtils.getResString("save_as")); // $NON-NLS-1$ |
91 |
JMeterUtils.getResString("save_as")); // $NON-NLS-1$ |
Lines 95-101
Link Here
|
95 |
subTree = GuiPackage.getInstance().getCurrentSubTree(); |
94 |
subTree = GuiPackage.getInstance().getCurrentSubTree(); |
96 |
} else { |
95 |
} else { |
97 |
fullSave = true; |
96 |
fullSave = true; |
98 |
subTree = GuiPackage.getInstance().getTreeModel().getTestPlan(); |
97 |
HashTree testPlan = GuiPackage.getInstance().getTreeModel().getTestPlan(); |
|
|
98 |
// If saveWorkBench check-box was selected on WorkBenchGui |
99 |
if (WorkBench.saveWorkBench()) { |
100 |
HashTree workbench = GuiPackage.getInstance().getTreeModel().getWorkBench(); |
101 |
testPlan.add(workbench); |
102 |
} |
103 |
// subTree = GuiPackage.getInstance().getTreeModel().getTestPlan(); |
104 |
subTree = testPlan; |
99 |
} |
105 |
} |
100 |
|
106 |
|
101 |
String updateFile = GuiPackage.getInstance().getTestPlanFile(); |
107 |
String updateFile = GuiPackage.getInstance().getTestPlanFile(); |
Lines 108-126
Link Here
|
108 |
} |
114 |
} |
109 |
updateFile = chooser.getSelectedFile().getAbsolutePath(); |
115 |
updateFile = chooser.getSelectedFile().getAbsolutePath(); |
110 |
// Make sure the file ends with proper extension |
116 |
// Make sure the file ends with proper extension |
111 |
if(FilenameUtils.getExtension(updateFile).equals("")) { |
117 |
if (FilenameUtils.getExtension(updateFile).equals("")) { |
112 |
updateFile = updateFile + JMX_FILE_EXTENSION; |
118 |
updateFile = updateFile + JMX_FILE_EXTENSION; |
113 |
} |
119 |
} |
114 |
// Check if the user is trying to save to an existing file |
120 |
// Check if the user is trying to save to an existing file |
115 |
File f = new File(updateFile); |
121 |
File f = new File(updateFile); |
116 |
if(f.exists()) { |
122 |
if (f.exists()) { |
117 |
int response = JOptionPane.showConfirmDialog(GuiPackage.getInstance().getMainFrame(), |
123 |
int response = JOptionPane.showConfirmDialog(GuiPackage.getInstance().getMainFrame(), |
118 |
JMeterUtils.getResString("save_overwrite_existing_file"), // $NON-NLS-1$ |
124 |
JMeterUtils.getResString("save_overwrite_existing_file"), // $NON-NLS-1$ |
119 |
JMeterUtils.getResString("save?"), // $NON-NLS-1$ |
125 |
JMeterUtils.getResString("save?"), // $NON-NLS-1$ |
120 |
JOptionPane.YES_NO_OPTION, |
126 |
JOptionPane.YES_NO_OPTION, |
121 |
JOptionPane.QUESTION_MESSAGE); |
127 |
JOptionPane.QUESTION_MESSAGE); |
122 |
if (response == JOptionPane.CLOSED_OPTION || response == JOptionPane.NO_OPTION) { |
128 |
if (response == JOptionPane.CLOSED_OPTION || response == JOptionPane.NO_OPTION) { |
123 |
return ; // Do not save, user does not want to overwrite |
129 |
return; // Do not save, user does not want to overwrite |
124 |
} |
130 |
} |
125 |
} |
131 |
} |
126 |
|
132 |
|
Lines 132-138
Link Here
|
132 |
try { |
138 |
try { |
133 |
convertSubTree(subTree); |
139 |
convertSubTree(subTree); |
134 |
} catch (Exception err) { |
140 |
} catch (Exception err) { |
135 |
log.warn("Error converting subtree "+err); |
141 |
log.warn("Error converting subtree " + err); |
136 |
} |
142 |
} |
137 |
|
143 |
|
138 |
FileOutputStream ostream = null; |
144 |
FileOutputStream ostream = null; |
Lines 145-154
Link Here
|
145 |
} |
151 |
} |
146 |
} catch (Throwable ex) { |
152 |
} catch (Throwable ex) { |
147 |
log.error("Error saving tree:", ex); |
153 |
log.error("Error saving tree:", ex); |
148 |
if (ex instanceof Error){ |
154 |
if (ex instanceof Error) { |
149 |
throw (Error) ex; |
155 |
throw (Error) ex; |
150 |
} |
156 |
} |
151 |
if (ex instanceof RuntimeException){ |
157 |
if (ex instanceof RuntimeException) { |
152 |
throw (RuntimeException) ex; |
158 |
throw (RuntimeException) ex; |
153 |
} |
159 |
} |
154 |
throw new IllegalUserActionException("Couldn't save test plan to file: " + updateFile, ex); |
160 |
throw new IllegalUserActionException("Couldn't save test plan to file: " + updateFile, ex); |