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;
     }