if (node != null) { for (int i = 0; i < node.getChildCount(); i++) { StringBuffer name = new StringBuffer(); JMeterTreeNode cur = (JMeterTreeNode) node.getChildAt(i); TestElement te = cur.getTestElement(); if (te instanceof ThreadGroup) { name.append(parent_name); name.append(cur.getName()); name.append(seperator); buildNodesModel(cur, name.toString(), level); } else if (te instanceof Controller && !(te instanceof ModuleController)) { name.append(spaces(level)); name.append(parent_name); name.append(cur.getName()); TreeNodeWrapper tnw = new TreeNodeWrapper(cur, name.toString()); nodesModel.addElement(tnw); name = new StringBuffer(); name.append(cur.getName()); name.append(seperator); buildNodesModel(cur, name.toString(), level + 1); } else if (te instanceof TestPlan || te instanceof WorkBench) { name.append(cur.getName()); name.append(seperator); buildNodesModel(cur, name.toString(), 0); } } }
String seperator = " > "; if (node != null) { for (int i = 0; i < node.getChildCount(); i++) { StringBuffer name = new StringBuffer(); JMeterTreeNode cur = (JMeterTreeNode) node.getChildAt(i); TestElement te = cur.getTestElement(); /* * Will never be true. Probably intended to use * org.apache.jmeter.threads.ThreadGroup rather than * java.lang.ThreadGroup However, that does not work correctly; * whereas treating it as a Controller does. if (te instanceof * ThreadGroup) { name.append(parent_name); * name.append(cur.getName()); name.append(seperator); * buildNodesModel(cur, name.toString(), level); } else */ if (te instanceof Controller) { name.append(spaces(level)); name.append(parent_name); name.append(cur.getName()); TreeNodeWrapper tnw = new TreeNodeWrapper(cur, name.toString()); targetNodesModel.addElement(tnw); name = new StringBuffer(); name.append(cur.getName()); name.append(seperator); buildNodesModel(cur, name.toString(), level + 1); } else if (te instanceof TestPlan || te instanceof WorkBench) { name.append(cur.getName()); name.append(seperator); buildNodesModel(cur, name.toString(), 0); } // Ignore everything else } }
Clone fragments detected by clone detection tool
File path: /jakarta-jmeter-2.3.2/src/org/apache/jmeter/control/gui/ModuleControllerGui.java File path: /jakarta-jmeter-2.3.2/src/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java
Method name: void buildNodesModel(JMeterTreeNode, String, int) Method name: void buildNodesModel(JMeterTreeNode, String, int)
Number of AST nodes: 24 Number of AST nodes: 20
1
String seperator = " > ";
1
if (node != null) {
2
		if (node != null) {
2
			for (int i = 0; i < node.getChildCount(); i++) {
3
			for (int i = 0; i < node.getChildCount(); i++) {
3
				StringBuffer name = new StringBuffer();
4
				StringBuffer name = new StringBuffer();
4
				JMeterTreeNode cur = (JMeterTreeNode) node.getChildAt(i);
5
				JMeterTreeNode cur = (JMeterTreeNode) node.getChildAt(i);
5
				TestElement te = cur.getTestElement();
6
				TestElement te = cur.getTestElement();
6
				if (te instanceof ThreadGroup) {
7
				
7
					
8
/*
9
				 * Will never be true. Probably intended to use
10
				 * org.apache.jmeter.threads.ThreadGroup rather than
11
				 * java.lang.ThreadGroup However, that does not work correctly;
12
				 * whereas treating it as a Controller does. if (te instanceof
8
name.append(parent_name);
13
				 * ThreadGroup) { name.append(parent_name);
9
					name.append(cur.getName());
14
				 * name.append(cur.getName());
10
					name.append(seperator);
15
 name.append(seperator);
11
					buildNodesModel(cur, name.toString(), level);
16
				 * buildNodesModel(cur, name.toString(), level);
12
				} else 
17
 } else
18
				 */
13
if (te instanceof Controller && !(te instanceof ModuleController)) {
19
				if (te instanceof Controller) {
14
					name.append(spaces(level));
20
					name.append(spaces(level));
15
					name.append(parent_name);
21
					name.append(parent_name);
16
					name.append(cur.getName());
22
					name.append(cur.getName());
17
					TreeNodeWrapper tnw = new TreeNodeWrapper(cur, name.toString());
23
					TreeNodeWrapper tnw = new TreeNodeWrapper(cur, name.toString());
18
					nodesModel.addElement(tnw);
24
					targetNodesModel.addElement(tnw);
19
					name = new StringBuffer();
25
					name = new StringBuffer();
20
					name.append(cur.getName());
26
					name.append(cur.getName());
21
					name.append(seperator);
27
					name.append(seperator);
22
					buildNodesModel(cur, name.toString(), level + 1);
28
					buildNodesModel(cur, name.toString(), level + 1);
23
				} else if (te instanceof TestPlan || te instanceof WorkBench) {
29
				} else if (te instanceof TestPlan || te instanceof WorkBench) {
24
					name.append(cur.getName());
30
					name.append(cur.getName());
25
					name.append(seperator);
31
					name.append(seperator);
26
					buildNodesModel(cur, name.toString(), 0);
32
					buildNodesModel(cur, name.toString(), 0);
27
				}
33
				}
28
			
34
				// Ignore everything else
29
}
35
			}
30
		}
36
		}
Summary
Number of common nesting structure subtrees0
Number of refactorable cases0
Number of non-refactorable cases0
Time elapsed for finding largest common nesting structure subtrees (ms)0.5
Clones locationClones are in different classes having the same super class
Number of node comparisons6