Author: fschumacher Date: Sun Dec 2 11:17:25 2018 New Revision: 1847975 URL: http://svn.apache.org/viewvc?rev=1847975&view=rev Log: Extract code into private methods to make intent clearer
Part of #435 and Bugzilla Id: 62972 Modified: jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend/BackendListenerGui.java Modified: jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend/BackendListenerGui.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend/BackendListenerGui.java?rev=1847975&r1=1847974&r2=1847975&view=diff ============================================================================== --- jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend/BackendListenerGui.java (original) +++ jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend/BackendListenerGui.java Sun Dec 2 11:17:25 2018 @@ -177,39 +177,8 @@ public class BackendListenerGui extends Map<String, String> currArgsMap = currArgs.getArgumentsAsMap(); Map<String, String> userArgMap = new HashMap<>(); userArgMap.putAll(currArgsMap); - Arguments newArgs = new Arguments(); - Arguments defaultArgs = null; - try { - defaultArgs = client.getDefaultParameters(); - Arguments currentUserArgs = oldClient.getDefaultParameters(); - if(currentUserArgs != null) { - userArgMap.keySet().removeAll(currentUserArgs.getArgumentsAsMap().keySet()); - } - } catch (AbstractMethodError e) { - log.warn("BackendListenerClient doesn't implement " - + "getDefaultParameters. Default parameters won't " - + "be shown. Please update your client class: {}", newClassName); - } - - if (defaultArgs != null) { - for (JMeterProperty jMeterProperty : defaultArgs.getArguments()) { - Argument arg = (Argument) jMeterProperty.getObjectValue(); - String name = arg.getName(); - String value = arg.getValue(); - - // If a user has set parameters in one test, and then - // selects a different test which supports the same - // parameters, those parameters should have the same - // values that they did in the original test. - if (currArgsMap.containsKey(name)) { - String newVal = currArgsMap.get(name); - if (newVal != null && newVal.length() > 0) { - value = newVal; - } - } - newArgs.addArgument(name, value); - } - } + Arguments defaultArgs = extractDefaultArguments(client, userArgMap, oldClient.getDefaultParameters()); + Arguments newArgs = copyDefaultArguments(currArgsMap, defaultArgs); userArgMap.forEach(newArgs::addArgument); className = newClassName; @@ -221,6 +190,48 @@ public class BackendListenerGui extends } + private Arguments copyDefaultArguments(Map<String, String> currArgsMap, Arguments defaultArgs) { + Arguments newArgs = new Arguments(); + if (defaultArgs != null) { + for (JMeterProperty jMeterProperty : defaultArgs.getArguments()) { + Argument arg = (Argument) jMeterProperty.getObjectValue(); + String name = arg.getName(); + String value = arg.getValue(); + + // If a user has set parameters in one test, and then + // selects a different test which supports the same + // parameters, those parameters should have the same + // values that they did in the original test. + if (currArgsMap.containsKey(name)) { + String newVal = currArgsMap.get(name); + if (newVal != null && newVal.length() > 0) { + value = newVal; + } + } + newArgs.addArgument(name, value); + } + } + return newArgs; + } + + + private Arguments extractDefaultArguments(BackendListenerClient client, Map<String, String> userArgMap, + Arguments currentUserArguments) { + Arguments defaultArgs = null; + try { + defaultArgs = client.getDefaultParameters(); + if(currentUserArguments != null) { + userArgMap.keySet().removeAll(currentUserArguments.getArgumentsAsMap().keySet()); + } + } catch (AbstractMethodError e) { + log.warn("BackendListenerClient doesn't implement " + + "getDefaultParameters. Default parameters won't " + + "be shown. Please update your client class: {}", client.getClass().getName()); + } + return defaultArgs; + } + + private BackendListenerClient createBackendListenerClient(String newClassName) throws ReflectiveOperationException { return (BackendListenerClient) Class.forName(newClassName, true,