You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2017/12/20 09:21:43 UTC

svn commit: r1818757 - in /jmeter/trunk: src/core/org/apache/jmeter/gui/ src/core/org/apache/jmeter/gui/action/ src/core/org/apache/jmeter/testelement/ xdocs/

Author: pmouawad
Date: Wed Dec 20 09:21:43 2017
New Revision: 1818757

URL: http://svn.apache.org/viewvc?rev=1818757&view=rev
Log:
Bug 61920 - Plugins : Add ability to listen to Test Plan loading/closing
Contributed by  Peter Doornbosch
This closes #361
Bugzilla Id: 61920

Added:
    jmeter/trunk/src/core/org/apache/jmeter/gui/TestPlanListener.java   (with props)
Modified:
    jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java
    jmeter/trunk/src/core/org/apache/jmeter/gui/action/Remove.java
    jmeter/trunk/src/core/org/apache/jmeter/testelement/TestElement.java
    jmeter/trunk/xdocs/changes.xml

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java?rev=1818757&r1=1818756&r2=1818757&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java Wed Dec 20 09:21:43 2017
@@ -139,6 +139,9 @@ public final class GuiPackage implements
     /** GUI Logging Event Bus. */
     private GuiLogEventBus logEventBus = new GuiLogEventBus();
 
+    /** Listeners for events on test plan */
+    private List<TestPlanListener> testPlanListeners = Collections.synchronizedList(new ArrayList<>());
+
     /**
      * Private constructor to permit instantiation only from within this class.
      * Use {@link #getInstance()} to retrieve a singleton instance.
@@ -695,6 +698,7 @@ public final class GuiPackage implements
         } catch (IllegalStateException e1) {
             log.error("Failure setting file server's base dir", e1);
         }
+        testPlanListeners.stream().forEach(TestPlanListener::testPlanLoaded);
     }
 
     public String getTestPlanFile() {
@@ -706,9 +710,11 @@ public final class GuiPackage implements
      * Clears the test plan file name.
      */
     public void clearTestPlan() {
+        testPlanListeners.stream().forEach(TestPlanListener::beforeTestPlanCleared);
         getTreeModel().clearTestPlan();
         nodesToGui.clear();
         setTestPlanFile(null);
+        testPlanListeners.stream().forEach(TestPlanListener::afterTestPlanCleared);
         undoHistory.clear();
         undoHistory.add(this.treeModel, "Initial Tree");
     }
@@ -969,4 +975,21 @@ public final class GuiPackage implements
             return shouldSaveBeforeRunByPreference();
         }
     }
+
+    /**
+     * Adds a test plan listener.
+     * @param listener
+     */
+    public void addTestPlanListener(TestPlanListener listener) {
+        testPlanListeners.add(listener);
+    }
+
+    /**
+     * Removes a test plan listener.
+     * @param listener
+     */
+    public void removeTestPlanListener(TestPlanListener listener) {
+        testPlanListeners.remove(listener);
+    }
+
 }

Added: jmeter/trunk/src/core/org/apache/jmeter/gui/TestPlanListener.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/TestPlanListener.java?rev=1818757&view=auto
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/TestPlanListener.java (added)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/TestPlanListener.java Wed Dec 20 09:21:43 2017
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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;
+
+/**
+ * Implement this interface to be informed about Test plan being cleared
+ * to react to such events.
+ * @since 4.0
+ *
+ */
+public interface TestPlanListener {
+    /**
+     * Called before current test plan is cleared
+     */
+    void beforeTestPlanCleared();
+    
+    /**
+     * Called after current test plan has been cleared
+     */
+    void afterTestPlanCleared();
+
+    /**
+     * Called after a new test plan has been loaded
+     */
+    void testPlanLoaded();
+}

Propchange: jmeter/trunk/src/core/org/apache/jmeter/gui/TestPlanListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jmeter/trunk/src/core/org/apache/jmeter/gui/TestPlanListener.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/Remove.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/Remove.java?rev=1818757&r1=1818756&r2=1818757&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/action/Remove.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/Remove.java Wed Dec 20 09:21:43 2017
@@ -89,6 +89,7 @@ public class Remove extends AbstractActi
         if (testElement.canRemove()) {
             GuiPackage.getInstance().getTreeModel().removeNodeFromParent(node);
             GuiPackage.getInstance().removeNode(testElement);
+            testElement.removed();
         } else {
             String message = testElement.getClass().getName() + " is busy";
             JOptionPane.showMessageDialog(null, message, "Cannot remove item", JOptionPane.ERROR_MESSAGE);

Modified: jmeter/trunk/src/core/org/apache/jmeter/testelement/TestElement.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/testelement/TestElement.java?rev=1818757&r1=1818756&r2=1818757&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/testelement/TestElement.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/testelement/TestElement.java Wed Dec 20 09:21:43 2017
@@ -332,4 +332,12 @@ public interface TestElement extends Clo
      *            to be associated
      */
     void setComment(String comment);
+
+    /**
+     * Called when the test element is removed from the test plan.
+     * Must not throw any exception
+     */
+    default void removed() {
+        // NOOP
+    }
 }

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1818757&r1=1818756&r2=1818757&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Wed Dec 20 09:21:43 2017
@@ -187,6 +187,7 @@ Summary
     <li><pr>352</pr> Menu bar - added mnemonics to more menu items. Contributed by Graham Russell (graham at ham1.co.uk)</li>
     <li><pr>353</pr> Re-wrote some existing tests in Spock. Contributed by Graham Russell (graham at ham1.co.uk)</li>
     <li><bug>61919</bug>UX : Reorder Menus. Contributed by Graham Russell (graham at ham1.co.uk)</li>
+    <li><bug>61920</bug>Plugins : Add ability to listen to Test Plan loading/closing. Contributed by Peter Doornbosch (https://bitbucket.org/pjtr/)</li>
 </ul>
 
 <ch_section>Non-functional changes</ch_section>
@@ -288,6 +289,7 @@ Summary
     <li>Benny van Wijngaarden (benny at smaragd-it.nl)</li>
     <li>Matthew Buckett (https://github.com/buckett)</li>
     <li>Helly Guo (https://github.com/hellyguo)</li>
+    <li>Peter Doornbosch (https://bitbucket.org/pjtr/)</li>
 </ul>
 <p>We also thank bug reporters who helped us improve JMeter. <br/>
 For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:</p>