I fixed it although tag is not clear for me On Thursday, January 21, 2016, sebb <[email protected]> wrote:
> On 21 January 2016 at 20:32, Philippe Mouawad > <[email protected] <javascript:;>> wrote: > > On Thu, Jan 21, 2016 at 9:19 PM, sebb <[email protected] <javascript:;>> > wrote: > > > >> On 21 January 2016 at 14:10, <[email protected] <javascript:;>> > wrote: > >> > Author: pmouawad > >> > Date: Thu Jan 21 14:10:43 2016 > >> > New Revision: 1725955 > >> > > >> > URL: http://svn.apache.org/viewvc?rev=1725955&view=rev > >> > Log: > >> > Bug 58903 - Provide __jexl3 function that uses commons-jexl3 and > >> deprecated __jexl (1.1) function > >> > Add also JUnit tests for jexl2 and jexl3 > >> > Bugzilla Id: 58903 > >> > > >> > Added: > >> > > >> > jmeter/trunk/src/functions/org/apache/jmeter/functions/Jexl3Function.java > >> (with props) > >> > > >> > jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl2Function.java > >> (contents, props changed) > >> > - copied, changed from r1719809, > >> jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexlFunction.java > >> > > >> > jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl3Function.java > >> (with props) > >> > Modified: > >> > jmeter/trunk/build.properties > >> > jmeter/trunk/build.xml > >> > jmeter/trunk/eclipse.classpath > >> > jmeter/trunk/lib/ (props changed) > >> > jmeter/trunk/lib/aareadme.txt > >> > jmeter/trunk/licenses/bin/README.txt > >> > jmeter/trunk/res/maven/ApacheJMeter_parent.pom > >> > jmeter/trunk/xdocs/changes.xml > >> > jmeter/trunk/xdocs/usermanual/functions.xml > >> > > >> > Modified: jmeter/trunk/build.properties > >> > URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/build.properties?rev=1725955&r1=1725954&r2=1725955&view=diff > >> > > >> > ============================================================================== > >> > --- jmeter/trunk/build.properties (original) > >> > +++ jmeter/trunk/build.properties Thu Jan 21 14:10:43 2016 > >> > @@ -110,6 +110,11 @@ commons-jexl2.jar = commons-je > >> > commons-jexl2.loc = > >> ${maven2.repo}/org/apache/commons/commons-jexl/${commons-jexl2.version} > >> > commons-jexl2.md5 = 4ad8f5c161dd3a50e190334555675db9 > >> > > >> > +commons-jexl3.version = 3.0 > >> > +commons-jexl3.jar = > commons-jexl3-${commons-jexl3.version}.jar > >> > +commons-jexl3.loc = > >> ${maven2.repo}/org/apache/commons/commons-jexl3/${commons-jexl3.version} > >> > +commons-jexl3.md5 = 81041b5b058a2ccff0046386bc7e23f8 > >> > + > >> > commons-lang3.version = 3.4 > >> > commons-lang3.jar = > commons-lang3-${commons-lang3.version}.jar > >> > commons-lang3.loc = > >> ${maven2.repo}/org/apache/commons/commons-lang3/${commons-lang3.version} > >> > > >> > Modified: jmeter/trunk/build.xml > >> > URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/build.xml?rev=1725955&r1=1725954&r2=1725955&view=diff > >> > > >> > ============================================================================== > >> > --- jmeter/trunk/build.xml (original) > >> > +++ jmeter/trunk/build.xml Thu Jan 21 14:10:43 2016 > >> > @@ -370,6 +370,7 @@ > >> > <include name="${lib.dir}/${commons-io.jar}"/> > >> > <include name="${lib.dir}/${commons-jexl.jar}"/> > >> > <include name="${lib.dir}/${commons-jexl2.jar}"/> > >> > + <include name="${lib.dir}/${commons-jexl3.jar}"/> > >> > <include name="${lib.dir}/${commons-lang3.jar}"/> > >> > <include name="${lib.dir}/${commons-logging.jar}"/> > >> > <include name="${lib.dir}/${commons-math3.jar}"/> > >> > @@ -444,6 +445,7 @@ > >> > <pathelement location="${lib.dir}/${commons-io.jar}"/> > >> > <pathelement location="${lib.dir}/${commons-jexl.jar}"/> > >> > <pathelement location="${lib.dir}/${commons-jexl2.jar}"/> > >> > + <pathelement location="${lib.dir}/${commons-jexl3.jar}"/> > >> > <pathelement location="${lib.dir}/${commons-lang3.jar}"/> > >> > <pathelement location="${lib.dir}/${commons-logging.jar}"/> > >> > <pathelement location="${lib.dir}/${commons-math3.jar}"/> > >> > @@ -2844,6 +2846,7 @@ run JMeter unless all the JMeter jars ar > >> > <process_jarfile jarname="commons-io"/> > >> > <process_jarfile jarname="commons-jexl"/> > >> > <process_jarfile jarname="commons-jexl2"/> > >> > + <process_jarfile jarname="commons-jexl3"/> > >> > <process_jarfile jarname="commons-lang3"/> > >> > <process_jarfile jarname="commons-logging"/> > >> > <process_jarfile jarname="commons-math3"/> > >> > > >> > Modified: jmeter/trunk/eclipse.classpath > >> > URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/eclipse.classpath?rev=1725955&r1=1725954&r2=1725955&view=diff > >> > > >> > ============================================================================== > >> > --- jmeter/trunk/eclipse.classpath (original) > >> > +++ jmeter/trunk/eclipse.classpath Thu Jan 21 14:10:43 2016 > >> > @@ -53,6 +53,7 @@ > >> > <classpathentry kind="lib" path="lib/commons-io-2.4.jar"/> > >> > <classpathentry kind="lib" path="lib/commons-jexl-1.1.jar"/> > >> > <classpathentry kind="lib" path="lib/commons-jexl-2.1.1.jar"/> > >> > + <classpathentry kind="lib" path="lib/commons-jexl3-3.0.jar"/> > >> > <classpathentry kind="lib" path="lib/commons-lang3-3.4.jar"/> > >> > <classpathentry kind="lib" > path="lib/commons-logging-1.2.jar"/> > >> > <classpathentry kind="lib" path="lib/commons-math3-3.5.jar"/> > >> > > >> > Propchange: jmeter/trunk/lib/ > >> > > >> > ------------------------------------------------------------------------------ > >> > --- svn:ignore (original) > >> > +++ svn:ignore Thu Jan 21 14:10:43 2016 > >> > @@ -11,6 +11,7 @@ commons-httpclient-3.1.jar > >> > commons-io-2.4.jar > >> > commons-jexl-1.1.jar > >> > commons-jexl-2.1.1.jar > >> > +commons-jexl3-3.0.jar > >> > commons-lang3-3.4.jar > >> > commons-logging-1.2.jar > >> > commons-math3-3.5.jar > >> > > >> > Modified: jmeter/trunk/lib/aareadme.txt > >> > URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/lib/aareadme.txt?rev=1725955&r1=1725954&r2=1725955&view=diff > >> > > >> > ============================================================================== > >> > --- jmeter/trunk/lib/aareadme.txt (original) > >> > +++ jmeter/trunk/lib/aareadme.txt Thu Jan 21 14:10:43 2016 > >> > @@ -51,7 +51,7 @@ commons-io-2.4 > >> > http://commons.apache.org/downloads/download_io.cgi > >> > - FTPSampler > >> > > >> > -commons-jexl-1.1 > >> > +commons-jexl-1.1, commons-jexl-2.1.1, commons-jexl3-3.0 > >> > ---------------- > >> > http://commons.apache.org/downloads/download_jexl.cgi > >> > - Jexl function and BSF test elements > >> > > >> > Modified: jmeter/trunk/licenses/bin/README.txt > >> > URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/licenses/bin/README.txt?rev=1725955&r1=1725954&r2=1725955&view=diff > >> > > >> > ============================================================================== > >> > --- jmeter/trunk/licenses/bin/README.txt (original) > >> > +++ jmeter/trunk/licenses/bin/README.txt Thu Jan 21 14:10:43 2016 > >> > @@ -12,6 +12,7 @@ commons-httpclient-3.1.jar > >> > commons-io-2.4.jar > >> > commons-jexl-1.1.jar > >> > commons-jexl-2.1.1.jar > >> > +commons-jexl3-3.0.jar > >> > commons-lang3-3.4.jar > >> > commons-logging-1.2.jar > >> > commons-math3-3.5.jar > >> > > >> > Modified: jmeter/trunk/res/maven/ApacheJMeter_parent.pom > >> > URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/res/maven/ApacheJMeter_parent.pom?rev=1725955&r1=1725954&r2=1725955&view=diff > >> > > >> > ============================================================================== > >> > --- jmeter/trunk/res/maven/ApacheJMeter_parent.pom (original) > >> > +++ jmeter/trunk/res/maven/ApacheJMeter_parent.pom Thu Jan 21 14:10:43 > >> 2016 > >> > @@ -65,6 +65,7 @@ under the License. > >> > <commons-io.version>2.4</commons-io.version> > >> > <commons-jexl.version>1.1</commons-jexl.version> > >> > <commons-jexl2.version>2.1.1</commons-jexl2.version> > >> > + <commons-jexl3.version>3.0</commons-jexl3.version> > >> > <commons-lang3.version>3.4</commons-lang3.version> > >> > <commons-logging.version>1.2</commons-logging.version> > >> > <commons-math3.version>3.5</commons-math3.version> > >> > @@ -177,6 +178,11 @@ under the License. > >> > </dependency> > >> > <dependency> > >> > <groupId>org.apache.commons</groupId> > >> > + <artifactId>commons-jexl3</artifactId> > >> > + <version>${commons-jexl3.version}</version> > >> > + </dependency> > >> > + <dependency> > >> > + <groupId>org.apache.commons</groupId> > >> > <artifactId>commons-lang3</artifactId> > >> > <version>${commons-lang3.version}</version> > >> > </dependency> > >> > > >> > Added: > >> > jmeter/trunk/src/functions/org/apache/jmeter/functions/Jexl3Function.java > >> > URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/src/functions/org/apache/jmeter/functions/Jexl3Function.java?rev=1725955&view=auto > >> > > >> > ============================================================================== > >> > --- > >> > jmeter/trunk/src/functions/org/apache/jmeter/functions/Jexl3Function.java > >> (added) > >> > +++ > >> > jmeter/trunk/src/functions/org/apache/jmeter/functions/Jexl3Function.java > >> Thu Jan 21 14:10:43 2016 > >> > @@ -0,0 +1,164 @@ > >> > +/* > >> > + * Licensed to the Apache Software Foundation (ASF) under one or more > >> > + * contributor license agreements. See the NOTICE file distributed > with > >> > + * this work for additional information regarding copyright > ownership. > >> > + * The ASF licenses this file to You under the Apache License, > Version > >> 2.0 > >> > + * (the "License"); you may not use this file except in compliance > with > >> > + * the License. You may obtain a copy of the License at > >> > + * > >> > + * http://www.apache.org/licenses/LICENSE-2.0 > >> > + * > >> > + * Unless required by applicable law or agreed to in writing, > software > >> > + * distributed under the License is distributed on an "AS IS" BASIS, > >> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > >> implied. > >> > + * See the License for the specific language governing permissions > and > >> > + * limitations under the License. > >> > + */ > >> > +package org.apache.jmeter.functions; > >> > + > >> > +import java.util.Collection; > >> > +import java.util.LinkedList; > >> > +import java.util.List; > >> > + > >> > +import org.apache.commons.jexl3.JexlBuilder; > >> > +import org.apache.commons.jexl3.JexlContext; > >> > +import org.apache.commons.jexl3.JexlEngine; > >> > +import org.apache.commons.jexl3.JexlExpression; > >> > +import org.apache.commons.jexl3.MapContext; > >> > +import org.apache.jmeter.engine.util.CompoundVariable; > >> > +import org.apache.jmeter.samplers.SampleResult; > >> > +import org.apache.jmeter.samplers.Sampler; > >> > +import org.apache.jmeter.testelement.ThreadListener; > >> > +import org.apache.jmeter.threads.JMeterContext; > >> > +import org.apache.jmeter.threads.JMeterContextService; > >> > +import org.apache.jmeter.threads.JMeterVariables; > >> > +import org.apache.jmeter.util.JMeterUtils; > >> > +import org.apache.jorphan.logging.LoggingManager; > >> > +import org.apache.log.Logger; > >> > + > >> > +/** > >> > + * A function which understands Commons JEXL3 > >> > + * @since 3.0 > >> > + */ > >> > +// For unit tests, see TestJexlFunction > >> > +public class Jexl3Function extends AbstractFunction implements > >> ThreadListener { > >> > + > >> > + private static final Logger log = > >> LoggingManager.getLoggerForClass(); > >> > + > >> > + private static final String KEY = "__jexl3"; //$NON-NLS-1$ > >> > + > >> > + private static final List<String> desc = new LinkedList<>(); > >> > + > >> > + private static final ThreadLocal<JexlEngine> threadLocalJexl = > new > >> ThreadLocal<>(); > >> > + > >> > + static > >> > + { > >> > + desc.add(JMeterUtils.getResString("jexl_expression")); > >> //$NON-NLS-1$ > >> > + desc.add(JMeterUtils.getResString("function_name_paropt"));// > >> $NON-NLS1$ > >> > + } > >> > + > >> > + private Object[] values; > >> > + > >> > + /** {@inheritDoc} */ > >> > + @Override > >> > + public String execute(SampleResult previousResult, Sampler > >> currentSampler) > >> > + throws InvalidVariableException > >> > + { > >> > + String str = ""; //$NON-NLS-1$ > >> > + > >> > + CompoundVariable var = (CompoundVariable) values[0]; > >> > + String exp = var.execute(); > >> > + > >> > + String varName = ""; //$NON-NLS-1$ > >> > + if (values.length > 1) { > >> > + varName = ((CompoundVariable) > values[1]).execute().trim(); > >> > + } > >> > + > >> > + JMeterContext jmctx = JMeterContextService.getContext(); > >> > + JMeterVariables vars = jmctx.getVariables(); > >> > + > >> > + try > >> > + { > >> > + JexlContext jc = new MapContext(); > >> > + jc.set("log", log); //$NON-NLS-1$ > >> > + jc.set("ctx", jmctx); //$NON-NLS-1$ > >> > + jc.set("vars", vars); //$NON-NLS-1$ > >> > + jc.set("props", JMeterUtils.getJMeterProperties()); > >> //$NON-NLS-1$ > >> > + // Previously mis-spelt as theadName > >> > + jc.set("threadName", Thread.currentThread().getName()); > >> //$NON-NLS-1$ > >> > + jc.set("sampler", currentSampler); //$NON-NLS-1$ (may be > >> null) > >> > + jc.set("sampleResult", previousResult); //$NON-NLS-1$ > (may > >> be null) > >> > + jc.set("OUT", System.out);//$NON-NLS-1$ > >> > + > >> > + // Now evaluate the script, getting the result > >> > + JexlExpression e = getJexlEngine().createExpression( exp > ); > >> > + Object o = e.evaluate(jc); > >> > + if (o != null) > >> > + { > >> > + str = o.toString(); > >> > + } > >> > + if (vars != null && varName.length() > 0) {// vars will > be > >> null on TestPlan > >> > + vars.put(varName, str); > >> > + } > >> > + } catch (Exception e) > >> > + { > >> > + log.error("An error occurred while evaluating the > >> expression \"" > >> > + + exp + "\"\n",e); > >> > + } > >> > + return str; > >> > + } > >> > + > >> > + /** > >> > + * Get JexlEngine from ThreadLocal > >> > + * @return JexlEngine > >> > + */ > >> > + private static JexlEngine getJexlEngine() { > >> > + JexlEngine engine = threadLocalJexl.get(); > >> > + if(engine == null) { > >> > + engine = new JexlBuilder() > >> > + .cache(512) > >> > + .silent(true) > >> > + .strict(true) > >> > + .create(); > >> > + threadLocalJexl.set(engine); > >> > + } > >> > + return engine; > >> > + } > >> > + > >> > + /** {@inheritDoc} */ > >> > + @Override > >> > + public List<String> getArgumentDesc() > >> > + { > >> > + return desc; > >> > + } > >> > + > >> > + /** {@inheritDoc} */ > >> > + @Override > >> > + public String getReferenceKey() > >> > + { > >> > + return KEY; > >> > + } > >> > + > >> > + /** {@inheritDoc} */ > >> > + @Override > >> > + public void setParameters(Collection<CompoundVariable> > parameters) > >> > + throws InvalidVariableException > >> > + { > >> > + checkParameterCount(parameters, 1, 2); > >> > + values = parameters.toArray(); > >> > + } > >> > + > >> > + @Override > >> > + public void threadStarted() { > >> > + } > >> > + > >> > + @Override > >> > + public void threadFinished() { > >> > + JexlEngine engine = threadLocalJexl.get(); > >> > + if(engine != null) { > >> > + engine.clearCache(); > >> > + threadLocalJexl.remove(); > >> > + } > >> > + } > >> > + > >> > +} > >> > > >> > Propchange: > >> > jmeter/trunk/src/functions/org/apache/jmeter/functions/Jexl3Function.java > >> > > >> > ------------------------------------------------------------------------------ > >> > svn:mime-type = text/plain > >> > > >> > Copied: > >> jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl2Function.java > >> (from r1719809, > >> jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexlFunction.java) > >> > URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl2Function.java?p2=jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl2Function.java&p1=jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexlFunction.java&r1=1719809&r2=1725955&rev=1725955&view=diff > >> > > >> > ============================================================================== > >> > --- > >> jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexlFunction.java > >> (original) > >> > +++ > >> jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl2Function.java > >> Thu Jan 21 14:10:43 2016 > >> > @@ -28,8 +28,8 @@ import org.apache.jmeter.threads.JMeterC > >> > import org.apache.jmeter.threads.JMeterContextService; > >> > import org.apache.jmeter.threads.JMeterVariables; > >> > > >> > -public class TestJexlFunction extends JMeterTestCase { > >> > - private JexlFunction function; > >> > +public class TestJexl2Function extends JMeterTestCase { > >> > + protected AbstractFunction function; > >> > > >> > private SampleResult result; > >> > > >> > @@ -39,13 +39,13 @@ public class TestJexlFunction extends JM > >> > > >> > private JMeterContext jmctx; > >> > > >> > - public TestJexlFunction(String name) { > >> > + public TestJexl2Function(String name) { > >> > super(name); > >> > } > >> > > >> > @Override > >> > public void setUp() { > >> > - function = new JexlFunction(); > >> > + function = new Jexl2Function(); > >> > result = new SampleResult(); > >> > jmctx = JMeterContextService.getContext(); > >> > String data = "The quick brown fox"; > >> > > >> > Propchange: > >> jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl2Function.java > >> > > >> > ------------------------------------------------------------------------------ > >> > svn:eol-style = native > >> > > >> > Propchange: > >> jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl2Function.java > >> > > >> > ------------------------------------------------------------------------------ > >> > svn:keywords = Author Date Id Revision > >> > > >> > Added: > >> jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl3Function.java > >> > URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl3Function.java?rev=1725955&view=auto > >> > > >> > ============================================================================== > >> > --- > >> jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl3Function.java > >> (added) > >> > +++ > >> jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl3Function.java > >> Thu Jan 21 14:10:43 2016 > >> > @@ -0,0 +1,33 @@ > >> > +/* > >> > + * 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.functions; > >> > + > >> > + > >> > +public class TestJexl3Function extends TestJexl2Function { > >> > + > >> > + public TestJexl3Function(String name) { > >> > + super(name); > >> > + } > >> > + > >> > + @Override > >> > + public void setUp() { > >> > + super.setUp(); > >> > + function = new Jexl3Function(); > >> > + } > >> > +} > >> > > >> > Propchange: > >> jmeter/trunk/test/src/org/apache/jmeter/functions/TestJexl3Function.java > >> > > >> > ------------------------------------------------------------------------------ > >> > svn:mime-type = text/plain > >> > > >> > Modified: jmeter/trunk/xdocs/changes.xml > >> > URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1725955&r1=1725954&r2=1725955&view=diff > >> > > >> > ============================================================================== > >> > --- jmeter/trunk/xdocs/changes.xml (original) > >> > +++ jmeter/trunk/xdocs/changes.xml Thu Jan 21 14:10:43 2016 > >> > @@ -85,7 +85,8 @@ Summary > >> > <li>MongoDB elements (MongoDB Source Config, MongoDB Script) have > >> been deprecated and will be removed in next version of jmeter. They do > not > >> appear anymore in the menu, if you need them modify > >> <code>not_in_menu</code> property. JMeter team advises not to use them > >> anymore. See <bugzilla>58772</bugzilla></li> > >> > <li>Summariser listener now outputs a formated duration in > HH:mm:ss > >> (Hour:Minute:Second), it previously outputed seconds. See > >> <bugzilla>58776</bugzilla></li> > >> > <li>WebService(SOAP) Request and HTML Parameter Mask which were > >> deprecated in 2.13 version, have now been removed following our <a > >> href="./usermanual/best-practices.html#deprecation">deprecation > >> strategy</a></li> > >> > - > >> > <li>org.apache.jmeter.protocol.http.visualizers.RequestViewHTTP.getQueryMap > >> signature has changed, if you use it ensure you update your code. See > >> <bugzilla>58845</bugzilla></li> > >> > + > >> > <li>org.apache.jmeter.protocol.http.visualizers.RequestViewHTTP.getQueryMap > >> signature has changed, if you use it ensure you update your code. See > >> <bugzilla>58845</bugzilla></li> > >> > + <li><code>__jexl</code> function has been deprecated and will be > >> removed in next version. See <bugzilla>58903</bugzilla></li> > >> > </ul> > >> > > >> > <!-- =================== Improvements =================== --> > >> > @@ -148,6 +149,7 @@ Summary > >> > <h3>Functions</h3> > >> > <ul> > >> > <li><bug>58477</bug> __javaScript function : Allow use of Nashorn > >> engine for Java8 and later versions</li> > >> > + <li><bug>58903</bug>Provide __jexl3 function that uses > >> commons-jexl3 and deprecated __jexl (1.1) function</li> > >> > </ul> > >> > > >> > <h3>I18N</h3> > >> > > >> > Modified: jmeter/trunk/xdocs/usermanual/functions.xml > >> > URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/functions.xml?rev=1725955&r1=1725954&r2=1725955&view=diff > >> > > >> > ============================================================================== > >> > --- jmeter/trunk/xdocs/usermanual/functions.xml (original) > >> > +++ jmeter/trunk/xdocs/usermanual/functions.xml Thu Jan 21 14:10:43 > 2016 > >> > @@ -125,7 +125,8 @@ Alternatively, just use <code>/</code> i > >> > <tr><td>Calculation</td><td> <a > >> href="#__UUID">UUID</a></td><td>generate a random type 4 > >> UUID</td><td>2.9</td></tr> > >> > <tr><td>Scripting</td><td> <a > >> href="#__BeanShell">BeanShell</a></td><td>run a BeanShell > >> script</td><td>1.X</td></tr> > >> > <tr><td>Scripting</td><td> <a > >> href="#__javaScript">javaScript</a></td><td>process JavaScript (Mozilla > >> Rhino)</td><td>1.9</td></tr> > >> > - <tr><td>Scripting</td><td> <a href="#__jexl">jexl, > >> jexl2</a></td><td>evaluate a Commons Jexl expression</td><td>jexl(2.2), > >> jexl2(2.6)</td></tr> > >> > >> -1, this breaks the tests. > >> > >> The __jexl function must continue to be documented even though it is > >> deprecated. > >> > > > > Can > > > > > >> > >> > + <tr><td>Scripting</td><td> <a > >> href="#__jexl2">jexl2</a></td><td>evaluate a Commons Jexl2 > >> expression</td><td>jexl2(2.6)</td></tr> > >> > + <tr><td>Scripting</td><td> <a > >> href="#__jexl3">jexl3</a></td><td>evaluate a Commons Jexl3 > >> expression</td><td>jexl3 (3.0)</td></tr> > >> > <tr><td>Properties</td><td> <a > href="#__property">property</a> > >> </td><td>read a property</td><td>2.0</td></tr> > >> > <tr><td>Properties</td><td> <a > href="#__P">P</a></td><td>read a > >> property (shorthand method)</td><td>2.0</td></tr> > >> > <tr><td>Properties</td><td> <a > >> href="#__setProperty">setProperty</a></td><td>set a JMeter > >> property</td><td>2.1</td></tr> > >> > @@ -992,16 +993,16 @@ The following shorthand aliases are prov > >> > </p> > >> > </component> > >> > > >> > -<component index="§-num;.5.18" name="__jexl" tag="__jexl2"> > >> > >> -1, the alias must remain until the function is removed entirely > >> > > Can you explain this tag thing ? > > I don't understand what it means although I think it allows reusing > > documentation of a component for another one (what you call an alias) > > Yes, it is effectively an alias. > > The point is that the commit broke the tests. > > Also, a deprecated function is still usable and must still be documented. > Though of course one should add a note that it is deprecated. > > >> > >> > +<component index="§-num;.5.18" name="__jexl2" > > >> > <description> > >> > <p>The jexl function returns the result of evaluating a > >> > <a href="http://commons.apache.org/jexl">Commons JEXL > >> expression</a>. > >> > See links below for more information on JEXL expressions. > >> > </p> > >> > - <p>The <code>__jexl</code> function uses Commons JEXL 1, and the > >> <code>__jexl2</code> function uses Commons JEXL 2</p> > >> > + <p>The <code>__jexl2</code> function uses Commons JEXL 2</p> > >> > <ul> > >> > - <li><a href=" > http://commons.apache.org/jexl/reference/syntax.html">JEXL > >> syntax description</a></li> > >> > - <li><a href=" > >> > http://commons.apache.org/jexl/reference/examples.html#Example_Expressions > ">JEXL > >> examples</a></li> > >> > + <li><a href=" > >> http://commons.apache.org/proper/commons-jexl/reference/syntax.html > ">JEXL > >> syntax description</a></li> > >> > + <li><a href=" > >> > http://commons.apache.org/proper/commons-jexl/reference/examples.html#Example_Expressions > ">JEXL > >> examples</a></li> > >> > </ul> > >> > </description> > >> > > >> > @@ -1043,7 +1044,58 @@ i.intValue(); // or use i.longValue() > >> > <note>JMeter allows the expression to contain multiple > >> statements.</note> > >> > </component> > >> > > >> > -<component index="§-num;.5.19" name="__V"> > >> > +<component index="§-num;.5.19" name="__jexl3" > > >> > +<description> > >> > + <p>The jexl function returns the result of evaluating a > >> > + <a href="http://commons.apache.org/proper/commons-jexl/">Commons > >> JEXL expression</a>. > >> > + See links below for more information on JEXL expressions. > >> > + </p> > >> > + <p>The <code>__jexl3</code> function uses Commons JEXL 3</p> > >> > + <ul> > >> > + <li><a href=" > >> http://commons.apache.org/proper/commons-jexl/reference/syntax.html > ">JEXL > >> syntax description</a></li> > >> > + <li><a href=" > >> > http://commons.apache.org/proper/commons-jexl/reference/examples.html#Example_Expressions > ">JEXL > >> examples</a></li> > >> > + </ul> > >> > + </description> > >> > + > >> > +<properties> > >> > + <property name="Expression" required="Yes"> > >> > + The expression to be evaluated. For example, > >> <code>6*(5+2)</code> > >> > + </property> > >> > + <property name="Name of variable" required="No">The name of > the > >> variable to set.</property> > >> > +</properties> > >> > +<p> > >> > +The following variables are made available to the script: > >> > +</p> > >> > +<ul> > >> > +<li><code>log</code> - the logger for the function</li> > >> > +<li><code>ctx</code> - JMeterContext object</li> > >> > +<li><code>vars</code> - JMeterVariables object</li> > >> > +<li><code>props</code> - JMeter Properties object</li> > >> > +<li><code>threadName</code> - String containing the current thread > name > >> (in 2.3.2 it was misspelt as "<code>theadName</code>")</li> > >> > +<li><code>sampler</code> - current Sampler object (if any)</li> > >> > +<li><code>sampleResult</code> - previous SampleResult object (if > >> any)</li> > >> > +<li><code>OUT</code> - System.out - e.g. > >> <code>OUT.println("message")</code></li> > >> > +</ul> > >> > + <p> > >> > + Jexl can also create classes and call methods on them, for > example: > >> > + </p> > >> > + <p> > >> > + <source> > >> > +Systemclass=log.class.forName("java.lang.System"); > >> > +now=Systemclass.currentTimeMillis(); > >> > +</source> > >> > + Note that the Jexl documentation on the web-site wrongly suggests > >> that "<code>div</code>" does integer division. > >> > + In fact "<code>div</code>" and "<code>/</code>" both perform > normal > >> division. One can get the same effect > >> > + as follows: > >> > + <source> > >> > +i= 5 / 2; > >> > +i.intValue(); // or use i.longValue() > >> > +</source> > >> > + </p> > >> > + <note>JMeter allows the expression to contain multiple > >> statements.</note> > >> > +</component> > >> > + > >> > +<component index="§-num;.5.20" name="__V"> > >> > <description> > >> > <p>The V (variable) function returns the result of evaluating a > >> variable name expression. > >> > This can be used to evaluate nested variable references (which > are > >> not currently supported). > >> > @@ -1063,7 +1115,7 @@ i.intValue(); // or use i.longValue() > >> > </properties> > >> > </component> > >> > > >> > -<component index="§-num;.5.20" name="__evalVar"> > >> > +<component index="§-num;.5.21" name="__evalVar"> > >> > <description> > >> > <p>The eval function returns the result of evaluating an > expression > >> stored in a variable. > >> > </p> > >> > @@ -1081,7 +1133,7 @@ i.intValue(); // or use i.longValue() > >> > </property> > >> > </properties> > >> > </component> > >> > -<component index="§-num;.5.21" name="__eval"> > >> > +<component index="§-num;.5.22" name="__eval"> > >> > <description> > >> > <p>The eval function returns the result of evaluating a string > >> expression. > >> > </p> > >> > @@ -1110,7 +1162,7 @@ i.intValue(); // or use i.longValue() > >> > </properties> > >> > </component> > >> > > >> > -<component index="§-num;.5.22" name="__char"> > >> > +<component index="§-num;.5.23" name="__char"> > >> > <description> > >> > <p> > >> > The char function returns the result of evaluating a list of > >> numbers as Unicode characters. > >> > @@ -1134,7 +1186,7 @@ i.intValue(); // or use i.longValue() > >> > </p> > >> > </component> > >> > > >> > -<component index="§-num;.5.23" name="__unescape"> > >> > +<component index="§-num;.5.24" name="__unescape"> > >> > <description> > >> > <p> > >> > The unescape function returns the result of evaluating a > >> Java-escaped string. See also <code>__char()</code> above. > >> > @@ -1157,7 +1209,7 @@ i.intValue(); // or use i.longValue() > >> > </p> > >> > </component> > >> > > >> > -<component index="§-num;.5.24" name="__unescapeHtml"> > >> > +<component index="§-num;.5.25" name="__unescapeHtml"> > >> > <description> > >> > <p> > >> > Function to unescape a string containing HTML entity escapes > >> > @@ -1184,7 +1236,7 @@ e.g. <code>"&gt;&zzzz;x"</code> > >> > </properties> > >> > </component> > >> > > >> > -<component index="§-num;.5.25" name="__escapeHtml"> > >> > +<component index="§-num;.5.26" name="__escapeHtml"> > >> > <description> > >> > <p> > >> > Function which escapes the characters in a String using HTML > entities. > >> > @@ -1207,7 +1259,7 @@ becomes: > >> > </properties> > >> > </component> > >> > > >> > -<component index="§-num;.5.26" name="__urldecode"> > >> > +<component index="§-num;.5.27" name="__urldecode"> > >> > <description> > >> > <p> > >> > Function to decode a <code>application/x-www-form-urlencoded</code> > >> string. > >> > @@ -1229,7 +1281,7 @@ For example, the string <code>Word+%22sc > >> > </properties> > >> > </component> > >> > > >> > -<component index="§-num;.5.27" name="__urlencode"> > >> > +<component index="§-num;.5.28" name="__urlencode"> > >> > <description> > >> > <p> > >> > Function to encode a string to a > >> <code>application/x-www-form-urlencoded</code> string. > >> > @@ -1250,7 +1302,7 @@ For example, the string <code>Word " > >> > </properties> > >> > </component> > >> > > >> > -<component index="§-num;.5.28" name="__FileToString"> > >> > +<component index="§-num;.5.29" name="__FileToString"> > >> > > >> > <description> > >> > <p> > >> > @@ -1274,7 +1326,7 @@ A reference name - <code>refName</code> > >> > <p>The file name, encoding and reference name parameters are resolved > >> every time the function is executed.</p> > >> > </component> > >> > > >> > -<component index="§-num;.5.29" name="__samplerName"> > >> > +<component index="§-num;.5.30" name="__samplerName"> > >> > > >> > <description> > >> > <p> > >> > @@ -1297,7 +1349,7 @@ A reference name - <code>refName</code> > >> > </properties> > >> > </component> > >> > > >> > -<component index="§-num;.5.30" name="__TestPlanName"> > >> > +<component index="§-num;.5.31" name="__TestPlanName"> > >> > > >> > <description> > >> > <p> > >> > @@ -1310,7 +1362,7 @@ A reference name - <code>refName</code> > >> > </p> > >> > </component> > >> > > >> > -<component index="§-num;.5.31" name="__escapeOroRegexpChars"> > >> > +<component index="§-num;.5.32" name="__escapeOroRegexpChars"> > >> > <description> > >> > <p> > >> > Function which escapes the ORO Regexp meta characters, it is the > >> equivalent of <code>\Q</code> <code>\E</code> in Java Regexp Engine. > >> > > >> > > >> > > > > > > > > -- > > Cordialement. > > Philippe Mouawad. > -- Cordialement. Philippe Mouawad.
