Author: sebb
Date: Fri Jun 22 11:15:33 2007
New Revision: 549919

URL: http://svn.apache.org/viewvc?view=rev&rev=549919
Log:
Bug 42660 - BeanShell* : add property to specify if "testStarted" etc methods 
should be called   

Added:
    
jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/util/BeanShellTestElement.java
   (with props)
Modified:
    
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/assertions/BeanShellAssertion.java
    
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/extractor/BeanShellPostProcessor.java
    
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessor.java
    
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/timers/BeanShellTimer.java
    
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/BeanShellListener.java
    
jakarta/jmeter/branches/rel-2-2/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BeanShellSampler.java

Modified: 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/assertions/BeanShellAssertion.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/assertions/BeanShellAssertion.java?view=diff&rev=549919&r1=549918&r2=549919
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/assertions/BeanShellAssertion.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/assertions/BeanShellAssertion.java
 Fri Jun 22 11:15:33 2007
@@ -18,21 +18,13 @@
 
 package org.apache.jmeter.assertions;
 
-import java.io.IOException;
-import java.io.Serializable;
-
-import org.apache.jmeter.engine.event.LoopIterationEvent;
 import org.apache.jmeter.samplers.SampleResult;
-import org.apache.jmeter.testelement.AbstractTestElement;
-import org.apache.jmeter.testelement.TestListener;
-import org.apache.jmeter.testelement.ThreadListener;
 import org.apache.jmeter.threads.JMeterContext;
 import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jmeter.threads.JMeterVariables;
 import org.apache.jmeter.util.BeanShellInterpreter;
-import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jmeter.util.BeanShellTestElement;
 import org.apache.jorphan.logging.LoggingManager;
-import org.apache.jorphan.util.JMeterException;
 import org.apache.jorphan.util.JOrphanUtils;
 import org.apache.log.Logger;
 
@@ -40,38 +32,24 @@
  * A sampler which understands BeanShell
  * 
  */
-public class BeanShellAssertion extends AbstractTestElement implements 
Serializable, Assertion, ThreadListener, TestListener {
+public class BeanShellAssertion extends BeanShellTestElement implements 
Assertion {
        private static final Logger log = LoggingManager.getLoggerForClass();
 
+    private static final long serialVersionUID = 3;
+
        public static final String FILENAME = "BeanShellAssertion.filename"; 
//$NON-NLS-1$
 
        public static final String SCRIPT = "BeanShellAssertion.query"; 
//$NON-NLS-1$
 
        public static final String PARAMETERS = 
"BeanShellAssertion.parameters"; //$NON-NLS-1$
 
-       // Not serialised - recreated as needed
-       transient private BeanShellInterpreter bshInterpreter = null;
-
        // can be specified in jmeter.properties
        public static final String INIT_FILE = "beanshell.assertion.init"; 
//$NON-NLS-1$
 
-       public BeanShellAssertion() {
-               init();
-       }
-
-       // Ensure deserialisation works in server
-       private Object readResolve(){
-               init();
-               return this;
-       }
+    protected String getInitFileProperty() {
+        return INIT_FILE;
+    }
 
-       private void init(){
-               try {
-                       bshInterpreter = new 
BeanShellInterpreter(JMeterUtils.getProperty(INIT_FILE), log);
-               } catch (ClassNotFoundException e) {
-                       log.error("Cannot find BeanShell: "+e.toString());
-               }               
-       }
        public String getScript() {
                return getPropertyAsString(SCRIPT);
        }
@@ -92,6 +70,7 @@
        public AssertionResult getResult(SampleResult response) {
                AssertionResult result = new AssertionResult(getName());
 
+               final BeanShellInterpreter bshInterpreter = 
getBeanShellInterpreter();
                if (bshInterpreter == null) {
                        result.setFailure(true);
                        result.setError(true);
@@ -167,68 +146,4 @@
 
                return result;
        }
-
-       public void threadStarted() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("threadStarted()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }
-       }
-
-       public void threadFinished() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("threadFinished()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testEnded() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("testEnded()"); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testEnded(String host) {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.eval((new StringBuffer("testEnded(")) // 
$NON-NLS-1$
-                                       .append(host)
-                                       .append(")") // $NON-NLS-1$
-                                       .toString()); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testIterationStart(LoopIterationEvent event) {
-               // Not implemented
-       }
-
-       public void testStarted() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("testStarted()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testStarted(String host) {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.eval((new StringBuffer("testStarted(")) 
// $NON-NLS-1$
-                                       .append(host)
-                                       .append(")") // $NON-NLS-1$
-                                       .toString()); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-}
\ No newline at end of file
+}

Modified: 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/extractor/BeanShellPostProcessor.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/extractor/BeanShellPostProcessor.java?view=diff&rev=549919&r1=549918&r2=549919
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/extractor/BeanShellPostProcessor.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/extractor/BeanShellPostProcessor.java
 Fri Jun 22 11:15:33 2007
@@ -18,60 +18,37 @@
 
 package org.apache.jmeter.extractor;
 
-import java.io.Serializable;
-
-import org.apache.jmeter.engine.event.LoopIterationEvent;
 import org.apache.jmeter.processor.PostProcessor;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.testbeans.TestBean;
-import org.apache.jmeter.testelement.AbstractTestElement;
-import org.apache.jmeter.testelement.TestListener;
-import org.apache.jmeter.testelement.ThreadListener;
 import org.apache.jmeter.threads.JMeterContext;
 import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jmeter.threads.JMeterVariables;
 import org.apache.jmeter.util.BeanShellInterpreter;
-import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jmeter.util.BeanShellTestElement;
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.util.JMeterException;
 import org.apache.log.Logger;
 
-public class BeanShellPostProcessor extends AbstractTestElement 
-    implements PostProcessor, Serializable, TestBean, ThreadListener, 
TestListener
+public class BeanShellPostProcessor extends BeanShellTestElement 
+    implements Cloneable, PostProcessor, TestBean
 {
     private static final Logger log = LoggingManager.getLoggerForClass();
     
     private static final long serialVersionUID = 3;
-
-    private String script;
     
-    transient private BeanShellInterpreter bshInterpreter = null;
-
     // can be specified in jmeter.properties
     private static final String INIT_FILE = "beanshell.postprocessor.init"; 
//$NON-NLS-1$
 
-    public BeanShellPostProcessor() {
-        super();
-        init();
-    }
-
-       private void init() {
-               try {
-                       bshInterpreter = new 
BeanShellInterpreter(JMeterUtils.getProperty(INIT_FILE),log);
-               } catch (ClassNotFoundException e) {
-                       log.error("Cannot find BeanShell: "+e.toString());
-               }
-       }
-
-    private Object readResolve() {
-       init();
-       return this;
+    protected String getInitFileProperty() {
+        return INIT_FILE;
     }
     
      public void process() {
         JMeterContext jmctx = JMeterContextService.getContext();
 
         SampleResult prev = jmctx.getPreviousResult();
+               final BeanShellInterpreter bshInterpreter = 
getBeanShellInterpreter();
                if (prev == null || bshInterpreter == null) {
                        return;
                }
@@ -83,86 +60,9 @@
             bshInterpreter.set("vars", vars);//$NON-NLS-1$
             bshInterpreter.set("prev", prev);//$NON-NLS-1$
             bshInterpreter.set("data", prev.getResponseData());//$NON-NLS-1$
-            bshInterpreter.eval(script);
+            bshInterpreter.eval(getScript());
         } catch (JMeterException e) {
             log.warn("Problem in BeanShell script "+e);
         }
-       }
-
-       public Object clone() {
-        BeanShellPostProcessor o = (BeanShellPostProcessor) super.clone();
-        o.script = script;
-               return o;
-       }
-    
-    public String getScript(){
-        return script;
-    }
-
-    public void setScript(String s){
-        script=s;
-    }
-       public void threadStarted() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("threadStarted()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }
-       }
-
-       public void threadFinished() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("threadFinished()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testEnded() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("testEnded()"); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testEnded(String host) {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.eval((new StringBuffer("testEnded(")) // 
$NON-NLS-1$
-                                       .append(host)
-                                       .append(")") // $NON-NLS-1$
-                                       .toString()); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testIterationStart(LoopIterationEvent event) {
-               // Not implemented
-       }
-
-       public void testStarted() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("testStarted()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testStarted(String host) {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.eval((new StringBuffer("testStarted(")) 
// $NON-NLS-1$
-                                       .append(host)
-                                       .append(")") // $NON-NLS-1$
-                                       .toString()); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
        }
 }

Modified: 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessor.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessor.java?view=diff&rev=549919&r1=549918&r2=549919
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessor.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessor.java
 Fri Jun 22 11:15:33 2007
@@ -18,59 +18,36 @@
 
 package org.apache.jmeter.modifiers;
 
-import java.io.Serializable;
-
-import org.apache.jmeter.engine.event.LoopIterationEvent;
 import org.apache.jmeter.processor.PreProcessor;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.samplers.Sampler;
 import org.apache.jmeter.testbeans.TestBean;
-import org.apache.jmeter.testelement.AbstractTestElement;
-import org.apache.jmeter.testelement.TestListener;
-import org.apache.jmeter.testelement.ThreadListener;
 import org.apache.jmeter.threads.JMeterContext;
 import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jmeter.threads.JMeterVariables;
 import org.apache.jmeter.util.BeanShellInterpreter;
-import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jmeter.util.BeanShellTestElement;
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.util.JMeterException;
 import org.apache.log.Logger;
 
-public class BeanShellPreProcessor extends AbstractTestElement
-    implements PreProcessor, Serializable, TestBean, ThreadListener, 
TestListener
+public class BeanShellPreProcessor extends BeanShellTestElement
+    implements Cloneable, PreProcessor, TestBean
 {
     private static final Logger log = LoggingManager.getLoggerForClass();
     
     private static final long serialVersionUID = 3;
-
-    private String script;
     
-    transient private BeanShellInterpreter bshInterpreter = null;
-
     // can be specified in jmeter.properties
     private static final String INIT_FILE = "beanshell.preprocessor.init"; 
//$NON-NLS-1$
 
-    public BeanShellPreProcessor() {
-        super();
-        init();
-    }
-
-       private void init() {
-               try {
-                       bshInterpreter = new 
BeanShellInterpreter(JMeterUtils.getProperty(INIT_FILE),log);
-               } catch (ClassNotFoundException e) {
-                       log.error("Cannot find BeanShell: "+e.toString());
-               }
-       }
-
-    private Object readResolve() {
-       init();
-       return this;
+    protected String getInitFileProperty() {
+        return INIT_FILE;
     }
 
     public void process(){
-        if (bshInterpreter == null) {
+        final BeanShellInterpreter bshInterpreter = getBeanShellInterpreter();
+               if (bshInterpreter == null) {
             return;
         }
         JMeterContext jmctx = JMeterContextService.getContext();
@@ -84,87 +61,9 @@
             bshInterpreter.set("sampler", sam);//$NON-NLS-1$
             bshInterpreter.set("prev", prev);//$NON-NLS-1$
             
-            bshInterpreter.eval(script);
+            bshInterpreter.eval(getScript());
         } catch (JMeterException e) {
             log.warn("Problem in BeanShell script "+e);
         }
-       }
-
-       public Object clone() {
-        BeanShellPreProcessor o = (BeanShellPreProcessor) super.clone();
-        o.script = script;
-               return o;
-       }
-    
-    public String getScript(){
-        return script;
-    }
-
-    public void setScript(String s){
-        script=s;
-    }
-
-       public void threadStarted() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("threadStarted()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }
-       }
-
-       public void threadFinished() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("threadFinished()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testEnded() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("testEnded()"); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testEnded(String host) {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.eval((new StringBuffer("testEnded(")) // 
$NON-NLS-1$
-                                       .append(host)
-                                       .append(")") // $NON-NLS-1$
-                                       .toString()); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testIterationStart(LoopIterationEvent event) {
-               // Not implemented
-       }
-
-       public void testStarted() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("testStarted()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testStarted(String host) {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.eval((new StringBuffer("testStarted(")) 
// $NON-NLS-1$
-                                       .append(host)
-                                       .append(")") // $NON-NLS-1$
-                                       .toString()); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
        }
 }

Modified: 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/timers/BeanShellTimer.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/timers/BeanShellTimer.java?view=diff&rev=549919&r1=549918&r2=549919
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/timers/BeanShellTimer.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/timers/BeanShellTimer.java
 Fri Jun 22 11:15:33 2007
@@ -18,50 +18,26 @@
 
 package org.apache.jmeter.timers;
 
-import java.io.Serializable;
-
-import org.apache.jmeter.engine.event.LoopIterationEvent;
 import org.apache.jmeter.testbeans.TestBean;
-import org.apache.jmeter.testelement.AbstractTestElement;
-import org.apache.jmeter.testelement.TestListener;
-import org.apache.jmeter.testelement.ThreadListener;
 import org.apache.jmeter.threads.JMeterContext;
 import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jmeter.threads.JMeterVariables;
 import org.apache.jmeter.util.BeanShellInterpreter;
-import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jmeter.util.BeanShellTestElement;
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.util.JMeterException;
 import org.apache.log.Logger;
 
-public class BeanShellTimer extends AbstractTestElement implements Timer, 
Serializable, TestBean, ThreadListener, TestListener {
+public class BeanShellTimer extends BeanShellTestElement implements Cloneable, 
Timer, TestBean {
     private static final Logger log = LoggingManager.getLoggerForClass();
     
     private static final long serialVersionUID = 2;
 
-    private String script;
-    
-    transient private BeanShellInterpreter bshInterpreter = null;
-
     // can be specified in jmeter.properties
     private static final String INIT_FILE = "beanshell.timer.init"; 
//$NON-NLS-1$
 
-    public BeanShellTimer() {
-        super();
-        init();
-    }
-
-       private void init() {
-               try {
-                       bshInterpreter = new 
BeanShellInterpreter(JMeterUtils.getProperty(INIT_FILE),log);
-               } catch (ClassNotFoundException e) {
-                       log.error("Cannot find BeanShell: "+e.toString());
-               }
-       }
-
-    private Object readResolve() {
-       init();
-       return this;
+    protected String getInitFileProperty() {
+        return INIT_FILE;
     }
     
     /*
@@ -71,7 +47,8 @@
         */
        public long delay() {
         String ret="0";
-        if (bshInterpreter == null) {
+        final BeanShellInterpreter bshInterpreter = getBeanShellInterpreter();
+               if (bshInterpreter == null) {
                log.error("BeanShell not found");
                return 0;
         }
@@ -81,7 +58,7 @@
             // Add variables for access to context and variables
             bshInterpreter.set("ctx", jmctx);//$NON-NLS-1$
             bshInterpreter.set("vars", vars);//$NON-NLS-1$
-            Object o = bshInterpreter.eval(script);
+            Object o = bshInterpreter.eval(getScript());
             if (o != null) ret=o.toString();
         } catch (JMeterException e) {
             log.warn("Problem in BeanShell script "+e);
@@ -92,83 +69,5 @@
                log.warn(e.getLocalizedMessage());
                return 0;
         }
-       }
-
-       public Object clone() {
-        BeanShellTimer o = (BeanShellTimer) super.clone();
-        o.script = script;
-               return o;
-       }
-    
-    public String getScript(){
-        return script;
-    }
-
-    public void setScript(String s){
-        script=s;
-    }
-
-       public void threadStarted() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("threadStarted()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }
-       }
-
-       public void threadFinished() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("threadFinished()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testEnded() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("testEnded()"); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testEnded(String host) {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.eval((new StringBuffer("testEnded(")) // 
$NON-NLS-1$
-                                       .append(host)
-                                       .append(")") // $NON-NLS-1$
-                                       .toString()); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testIterationStart(LoopIterationEvent event) {
-               // Not implemented
-       }
-
-       public void testStarted() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("testStarted()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testStarted(String host) {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.eval((new StringBuffer("testStarted(")) 
// $NON-NLS-1$
-                                       .append(host)
-                                       .append(")") // $NON-NLS-1$
-                                       .toString()); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
        }
 }

Modified: 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/BeanShellListener.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/BeanShellListener.java?view=diff&rev=549919&r1=549918&r2=549919
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/BeanShellListener.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/BeanShellListener.java
 Fri Jun 22 11:15:33 2007
@@ -18,69 +18,41 @@
 
 package org.apache.jmeter.visualizers;
 
-import java.io.Serializable;
-
-import org.apache.jmeter.engine.event.LoopIterationEvent;
 import org.apache.jmeter.gui.UnsharedComponent;
 import org.apache.jmeter.samplers.SampleEvent;
 import org.apache.jmeter.samplers.SampleListener;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.testbeans.TestBean;
-import org.apache.jmeter.testelement.AbstractTestElement;
-import org.apache.jmeter.testelement.TestListener;
 import org.apache.jmeter.threads.JMeterContext;
 import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jmeter.threads.JMeterVariables;
 import org.apache.jmeter.util.BeanShellInterpreter;
-import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jmeter.util.BeanShellTestElement;
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.util.JMeterException;
 import org.apache.log.Logger;
 
-public class BeanShellListener extends AbstractTestElement 
-    implements SampleListener, Visualizer, Serializable, TestBean, 
TestListener, UnsharedComponent  {
+public class BeanShellListener extends BeanShellTestElement 
+    implements Cloneable, SampleListener, Visualizer, TestBean, 
UnsharedComponent  {
        
     private static final Logger log = LoggingManager.getLoggerForClass();
     
     private static final long serialVersionUID = 2;
 
-    transient private BeanShellInterpreter bshInterpreter = null;
-
     // can be specified in jmeter.properties
     private static final String INIT_FILE = "beanshell.listener.init"; 
//$NON-NLS-1$
 
-
-    private String script = "";
-    
-    public BeanShellListener() {
-       init();
-    }
-
-
-       private void init() {
-               try {
-                       bshInterpreter = new 
BeanShellInterpreter(JMeterUtils.getProperty(INIT_FILE),log);
-               } catch (ClassNotFoundException e) {
-                       log.error("Cannot find BeanShell: "+e.toString());
-               }
-       }
-
-    private Object readResolve() {
-       init();
-       return this;
+    protected String getInitFileProperty() {
+        return INIT_FILE;
     }
-    
-       public String getScript() {
-               return script;
-       }
-
-
-       public void setScript(String script) {
-               this.script = script;
-       }
-
 
        public void sampleOccurred(SampleEvent se) {
+        final BeanShellInterpreter bshInterpreter = getBeanShellInterpreter();
+               if (bshInterpreter == null) {
+            log.error("BeanShell not found");
+            return;
+        }
+        
         JMeterContext jmctx = JMeterContextService.getContext();
         JMeterVariables vars = jmctx.getVariables();
         SampleResult samp=se.getResult();
@@ -90,14 +62,12 @@
             bshInterpreter.set("vars", vars);//$NON-NLS-1$
             bshInterpreter.set("sampleEvent", se);//$NON-NLS-1$
             bshInterpreter.set("sampleResult", samp);//$NON-NLS-1$
-            bshInterpreter.eval(script);
+            bshInterpreter.eval(getScript());
         } catch (JMeterException e) {
             log.warn("Problem in BeanShell script "+e);
-        }
-               
+        }              
        }
 
-
        public void sampleStarted(SampleEvent e) {
        }
 
@@ -110,39 +80,4 @@
        public boolean isStats() {// Required by Visualiser
                return false;
        }
-
-
-       public void testEnded() {
-               testEnded("");
-       }
-
-
-       public void testEnded(String host) {
-               // TODO Auto-generated method stub
-               
-       }
-
-
-       public void testIterationStart(LoopIterationEvent event) {
-               // TODO Auto-generated method stub
-               
-       }
-
-
-       public void testStarted() {
-               testStarted("");
-       }
-
-
-       public void testStarted(String host) {
-               // TODO Auto-generated method stub
-               
-       }
-
-//     public Object clone() {
-//        BeanShellListener o = (BeanShellListener) super.clone();
-//        o.script = script;
-//             return o;
-//     }
-    
 }

Added: 
jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/util/BeanShellTestElement.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/util/BeanShellTestElement.java?view=auto&rev=549919
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/util/BeanShellTestElement.java
 (added)
+++ 
jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/util/BeanShellTestElement.java
 Fri Jun 22 11:15:33 2007
@@ -0,0 +1,164 @@
+/*
+ * 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.util;
+
+import java.io.Serializable;
+
+import org.apache.jmeter.engine.event.LoopIterationEvent;
+import org.apache.jmeter.testelement.AbstractTestElement;
+import org.apache.jmeter.testelement.TestListener;
+import org.apache.jmeter.testelement.ThreadListener;
+import org.apache.jmeter.util.BeanShellInterpreter;
+import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jorphan.logging.LoggingManager;
+import org.apache.jorphan.util.JMeterException;
+import org.apache.log.Logger;
+
+public abstract class BeanShellTestElement extends AbstractTestElement
+    implements Serializable, Cloneable, ThreadListener, TestListener
+{
+    private static final Logger log = LoggingManager.getLoggerForClass();
+    
+    private static final long serialVersionUID = 3;
+
+    private String script; // For TestBean implementations only
+    
+    transient private BeanShellInterpreter bshInterpreter = null;
+
+    transient private boolean hasInitFile = false;
+
+    public BeanShellTestElement() {
+        super();
+        init();
+    }
+
+    protected abstract String getInitFileProperty();
+
+    protected BeanShellInterpreter getBeanShellInterpreter() {
+        return bshInterpreter;
+    }
+
+       private void init() {
+               try {
+            String initFileName = 
JMeterUtils.getProperty(getInitFileProperty());
+            hasInitFile = initFileName != null;
+            bshInterpreter = new BeanShellInterpreter(initFileName, log);
+               } catch (ClassNotFoundException e) {
+                       log.error("Cannot find BeanShell: "+e.toString());
+               }
+       }
+
+    private Object readResolve() {
+       init();
+       return this;
+    }
+
+    public Object clone() {
+        BeanShellTestElement o = (BeanShellTestElement) super.clone();
+        o.init();
+        o.setScript(getScript());
+        return o;
+    }
+
+    /**
+     * Return the script (TestBean version).
+     * Must be overridden for subclasses that don't implement TestBean
+     * otherwise the clone() method won't work.
+     * 
+     * @return the script to execute
+     */
+    public String getScript(){
+        return script;
+    }
+
+    /**
+     * Set the script (TestBean version).
+     * Must be overridden for subclasses that don't implement TestBean
+     * otherwise the clone() method won't work.
+     * 
+     * @param s the script to execute (may be blank)
+     */
+    public void setScript(String s){
+        script=s;
+    }
+
+       public void threadStarted() {
+        if (bshInterpreter == null || !hasInitFile) return;
+               try {
+                       bshInterpreter.evalNoLog("threadStarted()"); // 
$NON-NLS-1$
+               } catch (JMeterException ignored) {
+            log.debug(getClass().getName() + " : " + 
ignored.getLocalizedMessage()); // $NON-NLS-1$
+               }
+       }
+
+       public void threadFinished() {
+        if (bshInterpreter == null || !hasInitFile) return;
+               try {
+                       bshInterpreter.evalNoLog("threadFinished()"); // 
$NON-NLS-1$
+               } catch (JMeterException ignored) {
+            log.debug(getClass().getName() + " : " + 
ignored.getLocalizedMessage()); // $NON-NLS-1$
+               }               
+       }
+
+       public void testEnded() {
+        if (bshInterpreter == null || !hasInitFile) return;
+               try {
+                       bshInterpreter.evalNoLog("testEnded()"); // $NON-NLS-1$
+               } catch (JMeterException ignored) {
+            log.debug(getClass().getName() + " : " + 
ignored.getLocalizedMessage()); // $NON-NLS-1$
+               }               
+       }
+
+       public void testEnded(String host) {
+        if (bshInterpreter == null || !hasInitFile) return;
+               try {
+                       bshInterpreter.eval((new StringBuffer("testEnded(")) // 
$NON-NLS-1$
+                                       .append(host)
+                                       .append(")") // $NON-NLS-1$
+                                       .toString()); // $NON-NLS-1$
+               } catch (JMeterException ignored) {
+            log.debug(getClass().getName() + " : " + 
ignored.getLocalizedMessage()); // $NON-NLS-1$
+               }               
+       }
+
+       public void testIterationStart(LoopIterationEvent event) {
+               // Not implemented
+       }
+
+       public void testStarted() {
+        if (bshInterpreter == null || !hasInitFile) return;
+               try {
+                       bshInterpreter.evalNoLog("testStarted()"); // 
$NON-NLS-1$
+               } catch (JMeterException ignored) {
+                       log.debug(getClass().getName() + " : " + 
ignored.getLocalizedMessage()); // $NON-NLS-1$
+               }               
+       }
+
+       public void testStarted(String host) {
+        if (bshInterpreter == null || !hasInitFile) return;
+               try {
+                       bshInterpreter.eval((new StringBuffer("testStarted(")) 
// $NON-NLS-1$
+                                       .append(host)
+                                       .append(")") // $NON-NLS-1$
+                                       .toString()); // $NON-NLS-1$
+               } catch (JMeterException ignored) {
+            log.debug(getClass().getName() + " : " + 
ignored.getLocalizedMessage()); // $NON-NLS-1$
+               }               
+       }
+}

Propchange: 
jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/util/BeanShellTestElement.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/util/BeanShellTestElement.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
jakarta/jmeter/branches/rel-2-2/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BeanShellSampler.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BeanShellSampler.java?view=diff&rev=549919&r1=549918&r2=549919
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BeanShellSampler.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BeanShellSampler.java
 Fri Jun 22 11:15:33 2007
@@ -18,21 +18,15 @@
 
 package org.apache.jmeter.protocol.java.sampler;
 
-import java.io.IOException;
-
-import org.apache.jmeter.engine.event.LoopIterationEvent;
-import org.apache.jmeter.samplers.AbstractSampler;
 import org.apache.jmeter.samplers.Entry;
 import org.apache.jmeter.samplers.SampleResult;
-import org.apache.jmeter.testelement.TestListener;
-import org.apache.jmeter.testelement.ThreadListener;
+import org.apache.jmeter.samplers.Sampler;
 import org.apache.jmeter.threads.JMeterContext;
 import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jmeter.threads.JMeterVariables;
 import org.apache.jmeter.util.BeanShellInterpreter;
-import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jmeter.util.BeanShellTestElement;
 import org.apache.jorphan.logging.LoggingManager;
-import org.apache.jorphan.util.JMeterException;
 import org.apache.jorphan.util.JOrphanUtils;
 import org.apache.log.Logger;
 
@@ -40,11 +34,12 @@
  * A sampler which understands BeanShell
  * 
  */
-public class BeanShellSampler extends AbstractSampler
-    implements ThreadListener, TestListener
+public class BeanShellSampler extends BeanShellTestElement implements Sampler
 {
        private static final Logger log = LoggingManager.getLoggerForClass();
 
+    private static final long serialVersionUID = 3;
+
        public static final String FILENAME = "BeanShellSampler.filename"; 
//$NON-NLS-1$
 
        public static final String SCRIPT = "BeanShellSampler.query"; 
//$NON-NLS-1$
@@ -52,16 +47,10 @@
        public static final String PARAMETERS = "BeanShellSampler.parameters"; 
//$NON-NLS-1$
 
        public static final String INIT_FILE = "beanshell.sampler.init"; 
//$NON-NLS-1$
-
-       transient private BeanShellInterpreter bshInterpreter;
-
-       public BeanShellSampler() {
-               try {
-                       bshInterpreter = new 
BeanShellInterpreter(JMeterUtils.getProperty(INIT_FILE), log);
-               } catch (ClassNotFoundException e) {
-                       log.error("Cannot find BeanShell: "+e.toString());
-               }
-       }
+    
+    protected String getInitFileProperty() {
+        return INIT_FILE;
+    }
 
        /**
         * Returns a formatted string label describing this sampler
@@ -92,6 +81,7 @@
                boolean isSuccessful = false;
                res.setSampleLabel(getLabel());
                res.sampleStart();
+               final BeanShellInterpreter bshInterpreter = 
getBeanShellInterpreter();
                if (bshInterpreter == null) {
                        res.sampleEnd();
                        res.setResponseCode("503");//$NON-NLS-1$
@@ -111,9 +101,11 @@
                        bshInterpreter.set("Label", getLabel()); //$NON-NLS-1$
                        bshInterpreter.set("FileName", getFilename()); 
//$NON-NLS-1$
                        bshInterpreter.set("SampleResult", res); //$NON-NLS-1$
-                       bshInterpreter.set("Parameters", getParameters());// as 
a single
-                                                                               
                                                // line//$NON-NLS-1$
-                       bshInterpreter.set("bsh.args", 
JOrphanUtils.split(getParameters(), " "));
+                       
+                       // Save parameters as single line and as string array
+                       bshInterpreter.set("Parameters", 
getParameters());//$NON-NLS-1$
+                       bshInterpreter.set("bsh.args", //$NON-NLS-1$
+                                       JOrphanUtils.split(getParameters(), " 
"));//$NON-NLS-1$
 
                        // Set default values
                        bshInterpreter.set("ResponseCode", "200"); //$NON-NLS-1$
@@ -173,68 +165,4 @@
 
                return res;
        }
-
-       public void threadStarted() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("threadStarted()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }
-       }
-
-       public void threadFinished() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("threadFinished()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testEnded() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("testEnded()"); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testEnded(String host) {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog((new 
StringBuffer("testEnded(")) // $NON-NLS-1$
-                                       .append(host)
-                                       .append(")") // $NON-NLS-1$
-                                       .toString()); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testIterationStart(LoopIterationEvent event) {
-               // Not implemented
-       }
-
-       public void testStarted() {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog("testStarted()"); // 
$NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-
-       public void testStarted(String host) {
-               if (bshInterpreter == null) return;
-               try {
-                       bshInterpreter.evalNoLog((new 
StringBuffer("testStarted(")) // $NON-NLS-1$
-                                       .append(host)
-                                       .append(")") // $NON-NLS-1$
-                                       .toString()); // $NON-NLS-1$
-               } catch (JMeterException ignored) {
-                       log.debug(ignored.getLocalizedMessage());
-               }               
-       }
-}
\ No newline at end of file
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to