ActionRouter.getInstance().actionPerformed(new ActionEvent(e.getSource(), e.getID(), ActionNames.CHECK_REMOVE)); GuiPackage guiPackage = GuiPackage.getInstance(); JMeterTreeNode[] nodes = guiPackage.getTreeListener().getSelectedNodes(); TreePath newTreePath = // Save parent node for later guiPackage.getTreeListener().removedSelectedNode(); for (int i = nodes.length - 1; i >= 0; i--) { removeNode(nodes[i]); } guiPackage.getTreeListener().getJTree().setSelectionPath(newTreePath); guiPackage.updateCurrentGui();
ReportActionRouter.getInstance().actionPerformed( new ActionEvent(e.getSource(), e.getID(), ReportCheckDirty.REMOVE)); ReportGuiPackage guiPackage = ReportGuiPackage.getInstance(); ReportTreeNode[] nodes = guiPackage.getTreeListener() .getSelectedNodes(); TreePath newTreePath = // Save parent node for later guiPackage.getTreeListener().removedSelectedNode(); for (int i = nodes.length - 1; i >= 0; i--) { removeNode(nodes[i]); } guiPackage.getTreeListener().getJTree().setSelectionPath(newTreePath); guiPackage.updateCurrentGui();
Clone fragments detected by clone detection tool
File path: /jakarta-jmeter-2.3.2/src/org/apache/jmeter/gui/action/Remove.java File path: /jakarta-jmeter-2.3.2/src/org/apache/jmeter/report/gui/action/ReportRemove.java
Method name: void doAction(ActionEvent) Method name: void doAction(ActionEvent)
Number of AST nodes: 8 Number of AST nodes: 8
1
ActionRouter.getInstance().actionPerformed(
1
ReportActionRouter.getInstance().actionPerformed(
2
new ActionEvent(e.getSource(), e.getID(), ActionNames.CHECK_
2
				new ActionEvent(e.getSource(), e.getID(),
3
REMOVE));
3
						ReportCheckDirty.REMOVE));
4
		GuiPackage guiPackage = GuiPackage.getInstance();
4
		ReportGuiPackage guiPackage = ReportGuiPackage.getInstance();
5
		JMeterTreeNode[] nodes = guiPackage.getTreeListener()
5
		ReportTreeNode[] nodes = guiPackage.getTreeListener()
6
.getSelectedNodes();
6
				.getSelectedNodes();
7
		TreePath newTreePath = // Save parent node for later
7
		TreePath newTreePath = // Save parent node for later
8
		guiPackage.getTreeListener().removedSelectedNode();
8
		guiPackage.getTreeListener().removedSelectedNode();
9
		for (int i = nodes.length - 1; i >= 0; i--) {
9
		for (int i = nodes.length - 1; i >= 0; i--) {
10
			removeNode(nodes[i]);
10
			removeNode(nodes[i]);
11
		}
11
		}
12
		guiPackage.getTreeListener().getJTree().setSelectionPath(newTreePath);
12
		guiPackage.getTreeListener().getJTree().setSelectionPath(newTreePath);
13
		guiPackage.updateCurrentGui();
13
		guiPackage.updateCurrentGui();
Summary
Number of common nesting structure subtrees1
Number of refactorable cases0
Number of non-refactorable cases1
Time elapsed for finding largest common nesting structure subtrees (ms)0.3
Clones locationClones are in different classes
Number of node comparisons24
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements7
    Number of unmapped statements in the first code fragment1
    Number of unmapped statements in the second code fragment1
    Time elapsed for statement mapping (ms)6.1
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    1
    ActionRouter.getInstance().actionPerformed(new ActionEvent(e.getSource(), e.getID(), ActionNames.CHECK_REMOVE));
    1
    ActionRouter.getInstance().actionPerformed(new ActionEvent(e.getSource(), e.getID(), ActionNames.CHECK_REMOVE));
    1
    ReportActionRouter.getInstance().actionPerformed(new ActionEvent(e.getSource(), e.getID(), ReportCheckDirty.REMOVE));
    Differences
    Expression1Expression2Difference
    org.apache.jmeter.gui.action.ActionNamesorg.apache.jmeter.report.gui.action.ReportCheckDirtyVARIABLE_TYPE_MISMATCH
    CHECK_REMOVEREMOVEVARIABLE_NAME_MISMATCH
    org.apache.jmeter.gui.action.ActionRouterorg.apache.jmeter.report.gui.action.ReportActionRouterSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Type org.apache.jmeter.gui.action.ActionNames does not match with type org.apache.jmeter.report.gui.action.ReportCheckDirty
    • Make classes org.apache.jmeter.gui.action.ActionNames and org.apache.jmeter.report.gui.action.ReportCheckDirty extend a common superclass
    Expression ActionRouter cannot be unified with expression ReportActionRouter , because common superclass java.awt.event.ActionListener does not declare member(s) public static org.apache.jmeter.gui.action.ActionRouter getInstance() , public static org.apache.jmeter.report.gui.action.ReportActionRouter getInstance()
    1
    ReportActionRouter.getInstance().actionPerformed(new ActionEvent(e.getSource(), e.getID(), ReportCheckDirty.REMOVE));
    2
    GuiPackage guiPackage = GuiPackage.getInstance();
    2
    GuiPackage guiPackage = GuiPackage.getInstance();
    2
    ReportGuiPackage guiPackage = ReportGuiPackage.getInstance();
    Differences
    Expression1Expression2Difference
    org.apache.jmeter.gui.GuiPackageorg.apache.jmeter.gui.ReportGuiPackageSUBCLASS_TYPE_MISMATCH
    org.apache.jmeter.gui.GuiPackageorg.apache.jmeter.gui.ReportGuiPackageSUBCLASS_TYPE_MISMATCH
    org.apache.jmeter.gui.GuiPackageorg.apache.jmeter.gui.ReportGuiPackageSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression GuiPackage cannot be unified with expression ReportGuiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public static org.apache.jmeter.gui.GuiPackage getInstance() , public static org.apache.jmeter.gui.ReportGuiPackage getInstance()
    Expression guiPackage cannot be unified with expression guiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public static org.apache.jmeter.gui.GuiPackage getInstance() , public static org.apache.jmeter.gui.ReportGuiPackage getInstance()
    Expression GuiPackage cannot be unified with expression ReportGuiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public static org.apache.jmeter.gui.GuiPackage getInstance() , public static org.apache.jmeter.gui.ReportGuiPackage getInstance()
    2
    ReportGuiPackage guiPackage = ReportGuiPackage.getInstance();
                                                                                                                                                        
    3
    ReportTreeNode[] nodes = guiPackage.getTreeListener().getSelectedNodes();
    Preondition Violations
    Unmatched statement ReportTreeNode[] nodes=guiPackage.getTreeListener().getSelectedNodes(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    3
    ReportTreeNode[] nodes = guiPackage.getTreeListener().getSelectedNodes();
    3
    JMeterTreeNode[] nodes = guiPackage.getTreeListener().getSelectedNodes();
    3
    JMeterTreeNode[] nodes = guiPackage.getTreeListener().getSelectedNodes();
    Preondition Violations
    Unmatched statement JMeterTreeNode[] nodes=guiPackage.getTreeListener().getSelectedNodes(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
                                                                                                                                                        
    4
    TreePath newTreePath = guiPackage.getTreeListener().removedSelectedNode();
    4
    TreePath newTreePath = guiPackage.getTreeListener().removedSelectedNode();
    4
    TreePath newTreePath = guiPackage.getTreeListener().removedSelectedNode();
    Differences
    Expression1Expression2Difference
    org.apache.jmeter.gui.GuiPackageorg.apache.jmeter.gui.ReportGuiPackageSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression guiPackage cannot be unified with expression guiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public org.apache.jmeter.gui.tree.JMeterTreeListener getTreeListener() , public org.apache.jmeter.report.gui.tree.ReportTreeListener getTreeListener()
    4
    TreePath newTreePath = guiPackage.getTreeListener().removedSelectedNode();
    5
    for (int i = nodes.length - 1; i >= 0; i--)
    5
    for (int i = nodes.length - 1; i >= 0; i--)
    5
    for (int i = nodes.length - 1; i >= 0; i--)
    Differences
    Expression1Expression2Difference
    org.apache.jmeter.gui.tree.JMeterTreeNode[]org.apache.jmeter.report.gui.tree.ReportTreeNode[]VARIABLE_TYPE_MISMATCH
    Preondition Violations
    Type int of variable nodes.length does not match with type int of variable nodes.length
    • Make classes org.apache.jmeter.gui.tree.JMeterTreeNode[] and org.apache.jmeter.report.gui.tree.ReportTreeNode[] extend a common superclass
    5
    for (int i = nodes.length - 1; i >= 0; i--)
    6
    removeNode(nodes[i]);
    6
    removeNode(nodes[i]);
    6
    removeNode(nodes[i]);
    Differences
    Expression1Expression2Difference
    org.apache.jmeter.gui.tree.JMeterTreeNode[]org.apache.jmeter.report.gui.tree.ReportTreeNode[]VARIABLE_TYPE_MISMATCH
    Preondition Violations
    Type org.apache.jmeter.gui.tree.JMeterTreeNode[] of variable nodes does not match with type org.apache.jmeter.report.gui.tree.ReportTreeNode[] of variable nodes
    • Make classes org.apache.jmeter.gui.tree.JMeterTreeNode[] and org.apache.jmeter.report.gui.tree.ReportTreeNode[] extend a common superclass
    6
    removeNode(nodes[i]);
    7
    guiPackage.getTreeListener().getJTree().setSelectionPath(newTreePath);
    7
    guiPackage.getTreeListener().getJTree().setSelectionPath(newTreePath);
    7
    guiPackage.getTreeListener().getJTree().setSelectionPath(newTreePath);
    Differences
    Expression1Expression2Difference
    org.apache.jmeter.gui.GuiPackageorg.apache.jmeter.gui.ReportGuiPackageSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression guiPackage cannot be unified with expression guiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public org.apache.jmeter.gui.tree.JMeterTreeListener getTreeListener() , public org.apache.jmeter.report.gui.tree.ReportTreeListener getTreeListener()
    7
    guiPackage.getTreeListener().getJTree().setSelectionPath(newTreePath);
    8
    guiPackage.updateCurrentGui();
    8
    guiPackage.updateCurrentGui();
    8
    guiPackage.updateCurrentGui();
    Differences
    Expression1Expression2Difference
    org.apache.jmeter.gui.GuiPackageorg.apache.jmeter.gui.ReportGuiPackageSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression guiPackage cannot be unified with expression guiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public void updateCurrentGui()
    8
    guiPackage.updateCurrentGui();
    Precondition Violations (13)
    Row Violation
    1Type org.apache.jmeter.gui.action.ActionNames does not match with type org.apache.jmeter.report.gui.action.ReportCheckDirty
    2Expression ActionRouter cannot be unified with expression ReportActionRouter , because common superclass java.awt.event.ActionListener does not declare member(s) public static org.apache.jmeter.gui.action.ActionRouter getInstance() , public static org.apache.jmeter.report.gui.action.ReportActionRouter getInstance()
    3Expression GuiPackage cannot be unified with expression ReportGuiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public static org.apache.jmeter.gui.GuiPackage getInstance() , public static org.apache.jmeter.gui.ReportGuiPackage getInstance()
    4Expression guiPackage cannot be unified with expression guiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public static org.apache.jmeter.gui.GuiPackage getInstance() , public static org.apache.jmeter.gui.ReportGuiPackage getInstance()
    5Expression GuiPackage cannot be unified with expression ReportGuiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public static org.apache.jmeter.gui.GuiPackage getInstance() , public static org.apache.jmeter.gui.ReportGuiPackage getInstance()
    6Unmatched statement ReportTreeNode[] nodes=guiPackage.getTreeListener().getSelectedNodes(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    7Unmatched statement JMeterTreeNode[] nodes=guiPackage.getTreeListener().getSelectedNodes(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    8Expression guiPackage cannot be unified with expression guiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public org.apache.jmeter.gui.tree.JMeterTreeListener getTreeListener() , public org.apache.jmeter.report.gui.tree.ReportTreeListener getTreeListener()
    9Type int of variable nodes.length does not match with type int of variable nodes.length
    10Type org.apache.jmeter.gui.tree.JMeterTreeNode[] of variable nodes does not match with type org.apache.jmeter.report.gui.tree.ReportTreeNode[] of variable nodes
    11Expression guiPackage cannot be unified with expression guiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public org.apache.jmeter.gui.tree.JMeterTreeListener getTreeListener() , public org.apache.jmeter.report.gui.tree.ReportTreeListener getTreeListener()
    12Expression guiPackage cannot be unified with expression guiPackage , because common superclass org.apache.jmeter.util.LocaleChangeListener does not declare member(s) public void updateCurrentGui()
    13Clone fragment #1 returns variable guiPackage with type org.apache.jmeter.gui.GuiPackage , while Clone fragment #2 returns variable guiPackage with type org.apache.jmeter.gui.ReportGuiPackage