|
What this is
Other links
The source code// $Header: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Save.java,v 1.22 2004/02/20 01:03:07 jsalvata Exp $ /* * Copyright 2001-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.Set; import javax.swing.JFileChooser; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.ListedHashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * @author Michael Stover * @author Keith Lancaster * @version $Revision: 1.22 $ updated on $Date: 2004/02/20 01:03:07 $ */ public class Save implements Command { transient private static Logger log = LoggingManager.getLoggerForClass(); public final static String SAVE_ALL_AS = "save_all_as"; public final static String SAVE_AS = "save_as"; public final static String SAVE = "save"; //NOTUSED private String chosenFile; private String testPlanFile; private static Set commands = new HashSet(); static { commands.add(SAVE_AS); commands.add(SAVE_ALL_AS); commands.add(SAVE); } /** * Constructor for the Save object. */ public Save() { } /** * Gets the ActionNames attribute of the Save object. * * @return the ActionNames value */ public Set getActionNames() { return commands; } public void setTestPlanFile(String f) { testPlanFile = f; GuiPackage.getInstance().getMainFrame().setTitle(JMeterUtils.getExtendedFrameTitle(testPlanFile)); } public void doAction(ActionEvent e) throws IllegalUserActionException { HashTree subTree = null; if (!commands.contains(e.getActionCommand())) { throw new IllegalUserActionException("Invalid user command:" + e.getActionCommand()); } if (e.getActionCommand().equals(SAVE_AS)) { subTree = GuiPackage.getInstance().getCurrentSubTree(); } else { subTree = GuiPackage.getInstance().getTreeModel().getTestPlan(); } String updateFile = testPlanFile; if (!SAVE.equals(e.getActionCommand()) || testPlanFile == null) { JFileChooser chooser = FileDialoger.promptToSaveFile( GuiPackage .getInstance() .getTreeListener() .getCurrentNode() .getName() + ".jmx"); if (chooser == null) { return; } updateFile = chooser.getSelectedFile().getAbsolutePath(); if (!e.getActionCommand().equals(SAVE_AS)) { testPlanFile = updateFile; } } // TODO: doesn't putting this here mark the tree as // saved even though a failure may occur later? ActionRouter.getInstance().doActionNow( new ActionEvent(subTree, e.getID(), CheckDirty.SUB_TREE_SAVED)); try { convertSubTree(subTree); } catch (Exception err) { } OutputStream writer = null; try { writer = new FileOutputStream(updateFile); SaveService.saveSubTree(subTree, writer); } catch (Throwable ex) { testPlanFile = null; log.error("", ex); throw new IllegalUserActionException( "Couldn't save test plan to file: " + updateFile); } finally { closeWriter(writer); if(testPlanFile != null) { GuiPackage.getInstance().getMainFrame().setTitle(JMeterUtils.getExtendedFrameTitle(testPlanFile)); } GuiPackage.getInstance().getMainFrame().repaint(); } } private void convertSubTree(HashTree tree) { Iterator iter = new LinkedList(tree.list()).iterator(); while (iter.hasNext()) { JMeterTreeNode item = (JMeterTreeNode) iter.next(); convertSubTree(tree.getTree(item)); TestElement testElement = item.getTestElement(); tree.replace(item, testElement); } } public static class Test extends junit.framework.TestCase { Save save; public Test(String name) { super(name); } public void setUp() { save = new Save(); } public void testTreeConversion() throws Exception { HashTree tree = new ListedHashTree(); JMeterTreeNode root = new JMeterTreeNode(new Arguments(), null); tree.add(root, root); tree.getTree(root).add(root, root); save.convertSubTree(tree); assertEquals( tree.getArray()[0].getClass().getName(), root.getTestElement().getClass().getName()); tree = tree.getTree(tree.getArray()[0]); assertEquals( tree.getArray()[0].getClass().getName(), root.getTestElement().getClass().getName()); assertEquals( tree .getTree(tree.getArray()[0]) .getArray()[0] .getClass() .getName(), root.getTestElement().getClass().getName()); } } private void closeWriter(OutputStream writer) { if (writer != null) { try { writer.close(); } catch (Exception ex) { log.error("", ex); } } } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.