You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by Philippe Mouawad <ph...@gmail.com> on 2012/11/08 09:35:34 UTC

Re: svn commit: r1406876 - in /jmeter/trunk: src/core/org/apache/jmeter/util/BSFTestElement.java src/core/org/apache/jmeter/util/JSR223TestElement.java src/core/org/apache/jmeter/util/ScriptingTestElement.java xdocs/changes.xml

Hello sebb,
I see you removed in the process:

   - clone
   - readResolve

Are you sure it's OK ?


Thank you

Regards

Philippe

On Thu, Nov 8, 2012 at 1:35 AM, <se...@apache.org> 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 (&gt;) 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.

Re: svn commit: r1406876 - in /jmeter/trunk: src/core/org/apache/jmeter/util/BSFTestElement.java src/core/org/apache/jmeter/util/JSR223TestElement.java src/core/org/apache/jmeter/util/ScriptingTestElement.java xdocs/changes.xml

Posted by Philippe Mouawad <ph...@gmail.com>.
Ok, thanks.

On Thu, Nov 8, 2012 at 12:21 PM, sebb <se...@gmail.com> wrote:

> On 8 November 2012 11:05, Philippe Mouawad <ph...@gmail.com>
> 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 <se...@gmail.com> wrote:
> >
> >> On 8 November 2012 08:35, Philippe Mouawad <ph...@gmail.com>
> >> 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, <se...@apache.org> 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 (&gt;) 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.

Re: svn commit: r1406876 - in /jmeter/trunk: src/core/org/apache/jmeter/util/BSFTestElement.java src/core/org/apache/jmeter/util/JSR223TestElement.java src/core/org/apache/jmeter/util/ScriptingTestElement.java xdocs/changes.xml

Posted by sebb <se...@gmail.com>.
On 8 November 2012 11:05, Philippe Mouawad <ph...@gmail.com> 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 <se...@gmail.com> wrote:
>
>> On 8 November 2012 08:35, Philippe Mouawad <ph...@gmail.com>
>> 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, <se...@apache.org> 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 (&gt;) 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.

Re: svn commit: r1406876 - in /jmeter/trunk: src/core/org/apache/jmeter/util/BSFTestElement.java src/core/org/apache/jmeter/util/JSR223TestElement.java src/core/org/apache/jmeter/util/ScriptingTestElement.java xdocs/changes.xml

Posted by Philippe Mouawad <ph...@gmail.com>.
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 <se...@gmail.com> wrote:

> On 8 November 2012 08:35, Philippe Mouawad <ph...@gmail.com>
> 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, <se...@apache.org> 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 (&gt;) 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.

Re: svn commit: r1406876 - in /jmeter/trunk: src/core/org/apache/jmeter/util/BSFTestElement.java src/core/org/apache/jmeter/util/JSR223TestElement.java src/core/org/apache/jmeter/util/ScriptingTestElement.java xdocs/changes.xml

Posted by sebb <se...@gmail.com>.
On 8 November 2012 08:35, Philippe Mouawad <ph...@gmail.com> 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, <se...@apache.org> 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 (&gt;) 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.