You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2016/08/10 15:16:15 UTC
svn commit: r1755768 -
/jmeter/trunk/src/components/org/apache/jmeter/control/SwitchController.java
Author: pmouawad
Date: Wed Aug 10 15:16:15 2016
New Revision: 1755768
URL: http://svn.apache.org/viewvc?rev=1755768&view=rev
Log:
Avoid exception throwing when switch value is not numerical.
Document code better
Modified:
jmeter/trunk/src/components/org/apache/jmeter/control/SwitchController.java
Modified: jmeter/trunk/src/components/org/apache/jmeter/control/SwitchController.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/control/SwitchController.java?rev=1755768&r1=1755767&r2=1755768&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/control/SwitchController.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/control/SwitchController.java Wed Aug 10 15:16:15 2016
@@ -19,6 +19,8 @@
package org.apache.jmeter.control;
import java.io.Serializable;
+
+import org.apache.commons.lang3.StringUtils;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.property.StringProperty;
@@ -81,42 +83,49 @@ public class SwitchController extends Ge
setProperty(new StringProperty(SWITCH_VALUE, inputValue));
}
- /*
- * Returns the selection value as a int,
- * with the value set to zero if it is out of range.
+ /**
+ * @return the selection value as a int with the value set to zero if it is out of range.
*/
private int getSelectionAsInt() {
- int ret;
getProperty(SWITCH_VALUE).recoverRunningVersion(null);
String sel = getSelection();
- try {
- ret = Integer.parseInt(sel);
- if (ret < 0 || ret >= getSubControllers().size()) {
- ret = 0;
- }
- } catch (NumberFormatException e) {
- if (sel.length()==0) {
- ret = 0;
- } else {
- ret = scanControllerNames(sel);
+ if (StringUtils.isEmpty(sel)) {
+ return 0;
+ } else {
+ try {
+ if(StringUtils.isNumeric(sel)) {
+ int ret = Integer.parseInt(sel);
+ if (ret < 0 || ret >= getSubControllers().size()) {
+ // Out of range, we return first one
+ ret = 0;
+ }
+ return ret;
+ }
+ } catch (NumberFormatException e) {
+ // it will be handled by code below
}
+ return scanControllerNames(sel);
}
- return ret;
}
- private int scanControllerNames(String sel){
+ /**
+ * @param sel controller name
+ * @return index of controller named sel if present, otherwise index of default if found, otherwise {@link Integer#MAX_VALUE}
+ */
+ private int scanControllerNames(String sel) {
int i = 0;
int defaultPos = Integer.MAX_VALUE;
- for(TestElement el : getSubControllers()) {
- String name=el.getName();
+ for (TestElement el : getSubControllers()) {
+ String name = el.getName();
if (name.equals(sel)) {
return i;
}
- if (name.equalsIgnoreCase("default")) { //$NON-NLS-1$
- defaultPos = i;
- }
+ if (name.equalsIgnoreCase("default")) { //$NON-NLS-1$
+ defaultPos = i;
+ }
i++;
}
+
return defaultPos;
}