Ok, thanks. On Thu, Nov 8, 2012 at 12:21 PM, sebb <[email protected]> wrote:
> On 8 November 2012 11:05, Philippe Mouawad <[email protected]> > wrote: > > Ok, thanks for answer. > > But what is strange is why remove clone method ? > > Sorry, should have added that to the commit message. > > > 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 ? > > Yes, because it will use the parent class implementation. > The same applies to all TestElement implementations. > > I've dropped the "implements Cloneable" from the elements that don't > actually implement clone() themselves. > > The clone() method is extensively used when running a test plan, so it > should be immediately obvious if the change had broken anything. > > > 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. > -- Cordialement. Philippe Mouawad.
