class Copy extends AbstractAction { private static JMeterTreeNode copiedNode = null; private static JMeterTreeNode copiedNodes[] = null; private static final HashSet commands = new HashSet(); static { commands.add(ActionNames.COPY); } /* * @see org.apache.jmeter.gui.action.Command#getActionNames() */ public Set getActionNames() { return commands; } public void doAction(ActionEvent e) { JMeterTreeListener treeListener = GuiPackage.getInstance().getTreeListener(); JMeterTreeNode[] nodes = treeListener.getSelectedNodes(); setCopiedNodes(nodes); } public static JMeterTreeNode[] getCopiedNodes() { for (int i = 0; i < copiedNodes.length; i++) { if (copiedNodes[i] == null) { return null; } } return cloneTreeNodes(copiedNodes); } public static JMeterTreeNode getCopiedNode() { if (copiedNode == null) { return null; } return cloneTreeNode(copiedNode); } public static void setCopiedNode(JMeterTreeNode node) { copiedNode = cloneTreeNode(node); } public static JMeterTreeNode cloneTreeNode(JMeterTreeNode node) { JMeterTreeNode treeNode = (JMeterTreeNode) node.clone(); treeNode.setUserObject(((TestElement) node.getUserObject()).clone()); cloneChildren(treeNode, node); return treeNode; } public static void setCopiedNodes(JMeterTreeNode nodes[]) { copiedNodes = new JMeterTreeNode[nodes.length]; for (int i = 0; i < nodes.length; i++) { copiedNodes[i] = cloneTreeNode(nodes[i]); } } public static JMeterTreeNode[] cloneTreeNodes(JMeterTreeNode nodes[]) { JMeterTreeNode treeNodes[] = new JMeterTreeNode[nodes.length]; for (int i = 0; i < nodes.length; i++) { treeNodes[i] = cloneTreeNode(nodes[i]); } return treeNodes; } private static void cloneChildren(JMeterTreeNode to, JMeterTreeNode from) { Enumeration enumFrom = from.children(); while (enumFrom.hasMoreElements()) { JMeterTreeNode child = (JMeterTreeNode) enumFrom.nextElement(); JMeterTreeNode childClone = (JMeterTreeNode) child.clone(); childClone.setUserObject(((TestElement) child.getUserObject()).clone()); to.add(childClone); cloneChildren((JMeterTreeNode) to.getLastChild(), child); } } }
class ReportCopy extends AbstractAction { private static ReportTreeNode copiedNode = null; private static ReportTreeNode copiedNodes[] = null; private static final String COPY = "Copy"; private static final HashSet commands = new HashSet(); static { commands.add(COPY); } /* * @see org.apache.jmeter.report.gui.action.Command#getActionNames() */ public Set getActionNames() { return commands; } public void doAction(ActionEvent e) { ReportTreeListener treeListener = ReportGuiPackage.getInstance() .getTreeListener(); ReportTreeNode[] nodes = treeListener.getSelectedNodes(); setCopiedNodes(nodes); } public static ReportTreeNode[] getCopiedNodes() { for (int i = 0; i < copiedNodes.length; i++) { if (copiedNodes[i] == null) { return null; } } return cloneTreeNodes(copiedNodes); } public static ReportTreeNode getCopiedNode() { if (copiedNode == null) { return null; } return cloneTreeNode(copiedNode); } public static void setCopiedNode(ReportTreeNode node) { copiedNode = cloneTreeNode(node); } public static ReportTreeNode cloneTreeNode(ReportTreeNode node) { ReportTreeNode treeNode = (ReportTreeNode) node.clone(); treeNode.setUserObject(((TestElement) node.getUserObject()).clone()); cloneChildren(treeNode, node); return treeNode; } public static void setCopiedNodes(ReportTreeNode nodes[]) { copiedNodes = new ReportTreeNode[nodes.length]; for (int i = 0; i < nodes.length; i++) { copiedNodes[i] = cloneTreeNode(nodes[i]); } } public static ReportTreeNode[] cloneTreeNodes(ReportTreeNode nodes[]) { ReportTreeNode treeNodes[] = new ReportTreeNode[nodes.length]; for (int i = 0; i < nodes.length; i++) { treeNodes[i] = cloneTreeNode(nodes[i]); } return treeNodes; } private static void cloneChildren(ReportTreeNode to, ReportTreeNode from) { Enumeration enumFrom = from.children(); while (enumFrom.hasMoreElements()) { ReportTreeNode child = (ReportTreeNode) enumFrom.nextElement(); ReportTreeNode childClone = (ReportTreeNode) child.clone(); childClone.setUserObject(((TestElement) child.getUserObject()) .clone()); to.add(childClone); cloneChildren((ReportTreeNode) to.getLastChild(), child); } } }
Clone fragments detected by clone detection tool
File path: /jakarta-jmeter-2.3.2/src/org/apache/jmeter/gui/action/Copy.java File path: /jakarta-jmeter-2.3.2/src/org/apache/jmeter/report/gui/action/ReportCopy.java
Method name: Method name:
Number of AST nodes: 0 Number of AST nodes: 0
1
class Copy extends AbstractAction {
1
class ReportCopy extends AbstractAction {
2
	private static JMeterTreeNode copiedNode = null;
2
	private static ReportTreeNode copiedNode = null;
3
	private static JMeterTreeNode copiedNodes[] = null;
3
	private static ReportTreeNode copiedNodes[] = null;
4
	private static final String COPY = "Copy";
4
	private static final HashSet commands = new HashSet();
5
	private static final HashSet commands = new HashSet();
5
    
6
	static {
6
	static {
7
		commands.add(ActionNames.COPY);
7
		commands.add(COPY);
8
	}
8
	}
9
	/*
9
	/*
10
	 * @see org.apache.jmeter.gui.action.Command#getActionNames()
10
	 * @see org.apache.jmeter.report.gui.action.Command#getActionNames()
11
	 */
11
	 */
12
	public Set getActionNames() {
12
	public Set getActionNames() {
13
		return commands;
13
		return commands;
14
	}
14
	}
15
	public void doAction(ActionEvent e) {
15
	public void doAction(ActionEvent e) {
16
		JMeterTreeListener treeListener = GuiPackage.getInstance()
16
		ReportTreeListener treeListener = ReportGuiPackage.getInstance()
17
.getTreeListener();
17
				.getTreeListener();
18
		JMeterTreeNode[] nodes = treeListener.getSelectedNodes();
18
		ReportTreeNode[] nodes = treeListener.getSelectedNodes();
19
		setCopiedNodes(nodes);
19
		setCopiedNodes(nodes);
20
	}
20
	}
21
	public static JMeterTreeNode[] getCopiedNodes() {
21
	public static ReportTreeNode[] getCopiedNodes() {
22
		for (int i = 0; i < copiedNodes.length; i++) {
22
		for (int i = 0; i < copiedNodes.length; i++) {
23
			if (copiedNodes[i] == null) {
23
			if (copiedNodes[i] == null) {
24
				return null;
24
				return null;
25
			}
25
			}
26
		}
26
		}
27
		return cloneTreeNodes(copiedNodes);
27
		return cloneTreeNodes(copiedNodes);
28
	}
28
	}
29
	public static JMeterTreeNode getCopiedNode() {
29
	public static ReportTreeNode getCopiedNode() {
30
		if (copiedNode == null) {
30
		if (copiedNode == null) {
31
			return null;
31
			return null;
32
		}
32
		}
33
		return cloneTreeNode(copiedNode);
33
		return cloneTreeNode(copiedNode);
34
	}
34
	}
35
	public static void setCopiedNode(JMeterTreeNode node) {
35
	public static void setCopiedNode(ReportTreeNode node) {
36
		copiedNode = cloneTreeNode(node);
36
		copiedNode = cloneTreeNode(node);
37
	}
37
	}
38
	public static JMeterTreeNode cloneTreeNode(JMeterTreeNode node) {
38
	public static ReportTreeNode cloneTreeNode(ReportTreeNode node) {
39
		JMeterTreeNode treeNode = (JMeterTreeNode) node.clone();
39
		ReportTreeNode treeNode = (ReportTreeNode) node.clone();
40
		treeNode.setUserObject(((TestElement) node.getUserObject()).clone());
40
		treeNode.setUserObject(((TestElement) node.getUserObject()).clone());
41
		cloneChildren(treeNode, node);
41
		cloneChildren(treeNode, node);
42
		return treeNode;
42
		return treeNode;
43
	}
43
	}
44
	public static void setCopiedNodes(JMeterTreeNode nodes[]) {
44
	public static void setCopiedNodes(ReportTreeNode nodes[]) {
45
		copiedNodes = new JMeterTreeNode[nodes.length];
45
		copiedNodes = new ReportTreeNode[nodes.length];
46
		for (int i = 0; i < nodes.length; i++) {
46
		for (int i = 0; i < nodes.length; i++) {
47
			copiedNodes[i] = cloneTreeNode(nodes[i]);
47
			copiedNodes[i] = cloneTreeNode(nodes[i]);
48
		}
48
		}
49
	}
49
	}
50
	public static JMeterTreeNode[] cloneTreeNodes(JMeterTreeNode nodes[]) {
50
	public static ReportTreeNode[] cloneTreeNodes(ReportTreeNode nodes[]) {
51
		JMeterTreeNode treeNodes[] = new JMeterTreeNode[nodes.length];
51
		ReportTreeNode treeNodes[] = new ReportTreeNode[nodes.length];
52
		for (int i = 0; i < nodes.length; i++) {
52
		for (int i = 0; i < nodes.length; i++) {
53
			treeNodes[i] = cloneTreeNode(nodes[i]);
53
			treeNodes[i] = cloneTreeNode(nodes[i]);
54
		}
54
		}
55
		return treeNodes;
55
		return treeNodes;
56
	}
56
	}
57
	private static void cloneChildren(JMeterTreeNode to, JMeterTreeNode from) {
57
	private static void cloneChildren(ReportTreeNode to, ReportTreeNode from) {
58
		Enumeration enumFrom = from.children();
58
		Enumeration enumFrom = from.children();
59
		while (enumFrom.hasMoreElements()) {
59
		while (enumFrom.hasMoreElements()) {
60
			JMeterTreeNode child = (JMeterTreeNode) enumFrom.nextElement();
60
			ReportTreeNode child = (ReportTreeNode) enumFrom.nextElement();
61
			JMeterTreeNode childClone = (JMeterTreeNode) child.clone();
61
			ReportTreeNode childClone = (ReportTreeNode) child.clone();
62
			childClone.setUserObject(((TestElement) child.getUserObject())
62
			childClone.setUserObject(((TestElement) child.getUserObject())
63
.clone());
63
					.clone());
64
			to.add(childClone);
64
			to.add(childClone);
65
			cloneChildren((JMeterTreeNode) to.getLastChild(), child);
65
			cloneChildren((ReportTreeNode) to.getLastChild(), child);
66
		}
66
		}
67
	}
67
	}
68
}
68
}
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.0
Clones location
Number of node comparisons0