On 26 October 2013 23:32, <[email protected]> wrote:
> Author: pmouawad
> Date: Sat Oct 26 22:32:44 2013
> New Revision: 1536042
>
> URL: http://svn.apache.org/r1536042
> Log:
> Bug 55693 - Add a "Save as Test Fragment" option
> Bugzilla Id: 55693
>
> Modified:
> jmeter/trunk/src/core/org/apache/jmeter/gui/action/Save.java
>
> Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/Save.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/Save.java?rev=1536042&r1=1536041&r2=1536042&view=diff
> ==============================================================================
> --- jmeter/trunk/src/core/org/apache/jmeter/gui/action/Save.java (original)
> +++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/Save.java Sat Oct 26
> 22:32:44 2013
> @@ -37,6 +37,7 @@ import org.apache.jmeter.gui.tree.JMeter
> import org.apache.jmeter.gui.util.FileDialoger;
> import org.apache.jmeter.save.SaveService;
> import org.apache.jmeter.testelement.TestElement;
> +import org.apache.jmeter.testelement.TestPlan;
> import org.apache.jmeter.testelement.WorkBench;
> import org.apache.jmeter.util.JMeterUtils;
> import org.apache.jorphan.collections.HashTree;
> @@ -100,15 +101,22 @@ public class Save implements Command {
> }
> else if
> (e.getActionCommand().equals(ActionNames.SAVE_AS_TEST_FRAGMENT)) {
> JMeterTreeNode[] nodes =
> GuiPackage.getInstance().getTreeListener().getSelectedNodes();
> - subTree = GuiPackage.getInstance().getCurrentSubTree();
> -
> - TestElement element =
> GuiPackage.getInstance().createTestElement(TestFragmentControllerGui.class.getName());
> - HashTree hashTree = new ListedHashTree();
> - HashTree tfTree = hashTree.add(new JMeterTreeNode(element,
> null));
> - for (int i = 0; i < nodes.length; i++) {
> - tfTree.add(nodes[i]);
> + if(checkAcceptableForTestFragment(nodes)) {
> + subTree = GuiPackage.getInstance().getCurrentSubTree();
> +
> + TestElement element =
> GuiPackage.getInstance().createTestElement(TestFragmentControllerGui.class.getName());
> + HashTree hashTree = new ListedHashTree();
> + HashTree tfTree = hashTree.add(new JMeterTreeNode(element,
> null));
> + for (int i = 0; i < nodes.length; i++) {
> + tfTree.add(nodes[i]);
> + }
> + subTree = hashTree;
> + } else {
> + JMeterUtils.reportErrorToUser(
> +
> JMeterUtils.getResString("save_as_test_fragment_error"), // $NON-NLS-1$
The above needs to be added to the properties files.
> + JMeterUtils.getResString("save_as_test_fragment"));
> // $NON-NLS-1$
> + return;
> }
> - subTree = hashTree;
> } else {
> fullSave = true;
> HashTree testPlan =
> GuiPackage.getInstance().getTreeModel().getTestPlan();
> @@ -181,6 +189,21 @@ public class Save implements Command {
> GuiPackage.getInstance().updateCurrentGui();
> }
>
> + /**
> + * Check nodes does not contain a node of type TestPlan or ThreadGroup
> + * @param nodes
> + */
> + private static final boolean
> checkAcceptableForTestFragment(JMeterTreeNode[] nodes) {
> + for (int i = 0; i < nodes.length; i++) {
> + Object userObject = nodes[i].getUserObject();
> + if(userObject instanceof org.apache.jmeter.threads.ThreadGroup ||
> + userObject instanceof TestPlan) {
> + return false;
> + }
> + }
> + return true;
> + }
> +
> // package protected to allow access from test code
> void convertSubTree(HashTree tree) {
> Iterator<Object> iter = new
> LinkedList<Object>(tree.list()).iterator();
>
>