You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2007/06/22 20:15:34 UTC

svn commit: r549919 - in /jakarta/jmeter/branches/rel-2-2/src: components/org/apache/jmeter/assertions/ components/org/apache/jmeter/extractor/ components/org/apache/jmeter/modifiers/ components/org/apache/jmeter/timers/ components/org/apache/jmeter/vi...

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: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org