Ok, thanks for answer. But what is strange is why remove clone method ? Javadocs says: "By convention, classes that implement this interface should override Object.clone (which is protected) with a public method. See Object.clone()<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Object.java#Object.clone%28%29>for details on overriding this method."
With this commit implements Cloneable is still there but not clone method. Is this OK ? Thank you On Thu, Nov 8, 2012 at 11:58 AM, sebb <[email protected]> wrote: > On 8 November 2012 08:35, Philippe Mouawad <[email protected]> > wrote: > > Hello sebb, > > I see you removed in the process: > > > > - clone > > - readResolve > > > > Are you sure it's OK ? > > I also changed the variables so that they are initialised to the empty > string. > > I also added a test for BSF and JSR223 sampler to the batch test > script and that runs OK, so I am pretty confident that those methods > are no longer needed. > > > > > Thank you > > > > Regards > > > > Philippe > > > > On Thu, Nov 8, 2012 at 1:35 AM, <[email protected]> wrote: > > > >> Author: sebb > >> Date: Thu Nov 8 00:35:23 2012 > >> New Revision: 1406876 > >> > >> URL: http://svn.apache.org/viewvc?rev=1406876&view=rev > >> Log: > >> BSFTestElement and JSR223TestElement should use shared super-class for > >> common fields > >> Bugzilla Id: 54110 > >> > >> Added: > >> > jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingTestElement.java > >> (with props) > >> Modified: > >> jmeter/trunk/src/core/org/apache/jmeter/util/BSFTestElement.java > >> jmeter/trunk/src/core/org/apache/jmeter/util/JSR223TestElement.java > >> jmeter/trunk/xdocs/changes.xml > >> > >> Modified: > jmeter/trunk/src/core/org/apache/jmeter/util/BSFTestElement.java > >> URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/util/BSFTestElement.java?rev=1406876&r1=1406875&r2=1406876&view=diff > >> > >> > ============================================================================== > >> --- jmeter/trunk/src/core/org/apache/jmeter/util/BSFTestElement.java > >> (original) > >> +++ jmeter/trunk/src/core/org/apache/jmeter/util/BSFTestElement.java Thu > >> Nov 8 00:35:23 2012 > >> @@ -30,7 +30,6 @@ import org.apache.bsf.BSFManager; > >> import org.apache.commons.io.FileUtils; > >> import org.apache.jmeter.samplers.SampleResult; > >> import org.apache.jmeter.samplers.Sampler; > >> -import org.apache.jmeter.testelement.AbstractTestElement; > >> import org.apache.jmeter.threads.JMeterContext; > >> import org.apache.jmeter.threads.JMeterContextService; > >> import org.apache.jmeter.threads.JMeterVariables; > >> @@ -38,7 +37,7 @@ import org.apache.jorphan.logging.Loggin > >> import org.apache.jorphan.util.JOrphanUtils; > >> import org.apache.log.Logger; > >> > >> -public abstract class BSFTestElement extends AbstractTestElement > >> +public abstract class BSFTestElement extends ScriptingTestElement > >> implements Serializable, Cloneable > >> { > >> private static final long serialVersionUID = 233L; > >> @@ -55,38 +54,8 @@ public abstract class BSFTestElement ext > >> new String[]{"js"}); //$NON-NLS-1$ > >> } > >> > >> - //++ For TestBean implementations only > >> - private String parameters; // passed to file or script > >> - > >> - private String filename; // file to source (overrides script) > >> - > >> - private String script; // script (if file not provided) > >> - > >> - private String scriptLanguage; // BSF language to use > >> - //-- For TestBean implementations only > >> - > >> public BSFTestElement() { > >> super(); > >> - init(); > >> - } > >> - > >> - private void init() { > >> - parameters=""; // ensure variables are not null > >> - filename=""; > >> - script=""; > >> - scriptLanguage=""; > >> - } > >> - > >> - protected Object readResolve() { > >> - init(); > >> - return this; > >> - } > >> - > >> - @Override > >> - public Object clone() { > >> - BSFTestElement o = (BSFTestElement) super.clone(); > >> - o.init(); > >> - return o; > >> } > >> > >> protected BSFManager getManager() throws BSFException { > >> @@ -157,50 +126,4 @@ public abstract class BSFTestElement ext > >> } > >> } > >> > >> - /** > >> - * 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 String getParameters() { > >> - return parameters; > >> - } > >> - > >> - public void setParameters(String s) { > >> - parameters = s; > >> - } > >> - > >> - public String getFilename() { > >> - return filename; > >> - } > >> - > >> - public void setFilename(String s) { > >> - filename = s; > >> - } > >> - > >> - public String getScriptLanguage() { > >> - return scriptLanguage; > >> - } > >> - > >> - public void setScriptLanguage(String s) { > >> - scriptLanguage = s; > >> - } > >> - > >> } > >> > >> Modified: > >> jmeter/trunk/src/core/org/apache/jmeter/util/JSR223TestElement.java > >> URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/util/JSR223TestElement.java?rev=1406876&r1=1406875&r2=1406876&view=diff > >> > >> > ============================================================================== > >> --- jmeter/trunk/src/core/org/apache/jmeter/util/JSR223TestElement.java > >> (original) > >> +++ jmeter/trunk/src/core/org/apache/jmeter/util/JSR223TestElement.java > >> Thu Nov 8 00:35:23 2012 > >> @@ -39,7 +39,6 @@ import org.apache.commons.io.IOUtils; > >> import org.apache.commons.lang3.StringUtils; > >> import org.apache.jmeter.samplers.SampleResult; > >> import org.apache.jmeter.samplers.Sampler; > >> -import org.apache.jmeter.testelement.AbstractTestElement; > >> import org.apache.jmeter.testelement.TestStateListener; > >> import org.apache.jmeter.threads.JMeterContext; > >> import org.apache.jmeter.threads.JMeterContextService; > >> @@ -48,7 +47,7 @@ import org.apache.jorphan.logging.Loggin > >> import org.apache.jorphan.util.JOrphanUtils; > >> import org.apache.log.Logger; > >> > >> -public abstract class JSR223TestElement extends AbstractTestElement > >> +public abstract class JSR223TestElement extends ScriptingTestElement > >> implements Serializable, Cloneable, TestStateListener > >> { > >> /** > >> @@ -67,16 +66,8 @@ public abstract class JSR223TestElement > >> > >> private static final long serialVersionUID = 233L; > >> > >> - //++ For TestBean implementations only > >> - private String parameters; // passed to file or script > >> - > >> - private String filename; // file to source (overrides script) > >> - > >> - private String script; // script (if file not provided) > >> - > >> - private String scriptLanguage; // JSR223 language to use > >> - > >> private String cacheKey = ""; // If not empty then script in > >> ScriptText will be compiled and cached > >> + > >> /** > >> * Cache of compiled scripts > >> */ > >> @@ -84,31 +75,9 @@ public abstract class JSR223TestElement > >> private static final Map<String, CompiledScript> > compiledScriptsCache > >> = > >> Collections.synchronizedMap( > >> new > >> LRUMap(JMeterUtils.getPropDefault("jsr223.compiled_scripts_cache_size", > >> 100))); > >> - //-- For TestBean implementations only > >> > >> public JSR223TestElement() { > >> super(); > >> - init(); > >> - } > >> - > >> - private void init() { > >> - parameters=""; // ensure variables are not null > >> - filename=""; > >> - script=""; > >> - scriptLanguage=""; > >> - cacheKey = ""; > >> - } > >> - > >> - protected Object readResolve() { > >> - init(); > >> - return this; > >> - } > >> - > >> - @Override > >> - public Object clone() { > >> - JSR223TestElement o = (JSR223TestElement) super.clone(); > >> - o.init(); > >> - return o; > >> } > >> > >> protected ScriptEngine getScriptEngine() throws ScriptException { > >> @@ -239,52 +208,6 @@ public abstract class JSR223TestElement > >> > >> > >> /** > >> - * 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 String getParameters() { > >> - return parameters; > >> - } > >> - > >> - public void setParameters(String s) { > >> - parameters = s; > >> - } > >> - > >> - public String getFilename() { > >> - return filename; > >> - } > >> - > >> - public void setFilename(String s) { > >> - filename = s; > >> - } > >> - > >> - public String getScriptLanguage() { > >> - return scriptLanguage; > >> - } > >> - > >> - public void setScriptLanguage(String s) { > >> - scriptLanguage = s; > >> - } > >> - > >> - /** > >> * @return the cacheKey > >> */ > >> public String getCacheKey() { > >> > >> Added: > >> jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingTestElement.java > >> URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingTestElement.java?rev=1406876&view=auto > >> > >> > ============================================================================== > >> --- > jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingTestElement.java > >> (added) > >> +++ > jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingTestElement.java > >> Thu Nov 8 00:35:23 2012 > >> @@ -0,0 +1,91 @@ > >> +/* > >> + * 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 org.apache.jmeter.testelement.AbstractTestElement; > >> + > >> +/** > >> + * Common parent class for the {@link BSFTestElement} and {@link > >> JSR223TestElement} scripting test elements. > >> + * These also share the {@link ScriptingBeanInfoSupport} class for > >> configuration. > >> + */ > >> +public abstract class ScriptingTestElement extends AbstractTestElement > { > >> + > >> + private static final long serialVersionUID = 281L; > >> + > >> + //++ For TestBean implementations only > >> + private String parameters = ""; // passed to file or script > >> + > >> + private String filename = ""; // file to source (overrides script) > >> + > >> + private String script = ""; // script (if file not provided) > >> + > >> + private String scriptLanguage = ""; // BSF/JSR223 language to use > >> + //-- For TestBean implementations only > >> + > >> + public ScriptingTestElement() { > >> + super(); > >> + } > >> + > >> + /** > >> + * 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 String getParameters() { > >> + return parameters; > >> + } > >> + > >> + public void setParameters(String s) { > >> + parameters = s; > >> + } > >> + > >> + public String getFilename() { > >> + return filename; > >> + } > >> + > >> + public void setFilename(String s) { > >> + filename = s; > >> + } > >> + > >> + public String getScriptLanguage() { > >> + return scriptLanguage; > >> + } > >> + > >> + public void setScriptLanguage(String s) { > >> + scriptLanguage = s; > >> + } > >> + > >> +} > >> > >> Propchange: > >> jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingTestElement.java > >> > >> > ------------------------------------------------------------------------------ > >> svn:eol-style = native > >> > >> Propchange: > >> jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingTestElement.java > >> > >> > ------------------------------------------------------------------------------ > >> svn:keywords = Author Date Id Revision > >> > >> Modified: jmeter/trunk/xdocs/changes.xml > >> URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1406876&r1=1406875&r2=1406876&view=diff > >> > >> > ============================================================================== > >> --- jmeter/trunk/xdocs/changes.xml (original) > >> +++ jmeter/trunk/xdocs/changes.xml Thu Nov 8 00:35:23 2012 > >> @@ -182,6 +182,7 @@ and right angle bracket (>) in search > >> <ul> > >> <li><bugzilla>53956</bugzilla> - Add ability to paste (a list of > values) > >> from clipboard for Header Manager</li> > >> <li>Updated to HttpComponents Client 4.2.2 (from 4.2.1)</li> > >> +<li><bugzilla>54110</bugzilla> - BSFTestElement and JSR223TestElement > >> should use shared super-class for common fields</li> > >> </ul> > >> > >> </section> > >> > >> > >> > > > > > > -- > > Cordialement. > > Philippe Mouawad. > -- Cordialement. Philippe Mouawad.
