@Override protected void updateListeners(Object oldOwner, Object newOwner) { Set<Object[]> l = new HashSet<Object[]>(); if (newOwner != null) { /* Don't listen to all property names * We only need to listen to its "type", and "remove". */ l.add(new Object[] {newOwner, new String[] {"type", "remove"}}); // register for events from the type Object type = Model.getFacade().getType(newOwner); if (Model.getFacade().isAClassifier(type)) { if (Model.getFacade().isAClassifierInState(type)) { Object classifier = Model.getFacade().getType(type); l.add(new Object[] {classifier, "name"}); l.add(new Object[] {type, "inState"}); Collection states = Model.getFacade().getInStates(type); Iterator i = states.iterator(); while (i.hasNext()) { l.add(new Object[] {i.next(), "name"}); } } else { l.add(new Object[] {type, "name"}); } } } updateElementListeners(l); }
@Override protected void updateListeners(Object oldOwner, Object newOwner) { Set<Object[]> lst = new HashSet<Object[]>(); if (newOwner != null) { // add the listeners to the newOwner lst.add(new Object[] {newOwner, null}); // and its stereotypes for (Object stereo : Model.getFacade().getStereotypes(newOwner)) { lst.add(new Object[] {stereo, null}); } // and its features for (Object feat : Model.getFacade().getFeatures(newOwner)) { lst.add(new Object[] {feat, null}); // and the stereotypes of its features for (Object stereo : Model.getFacade().getStereotypes(feat)) { lst.add(new Object[] {stereo, null}); } } // and its enumerationLiterals for (Object literal : Model.getFacade().getEnumerationLiterals( newOwner)) { lst.add(new Object[] {literal, null}); } } // And now add listeners to them all: updateElementListeners(lst); }
Clone fragments detected by clone detection tool
File path: /ArgoUML-0.34-src/argouml/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java File path: /ArgoUML-0.34-src/argouml/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java
Method name: void updateListeners(Object, Object) Method name: void updateListeners(Object, Object)
Number of AST nodes: 2 Number of AST nodes: 2
1
@Override
1
@Override
2
    protected void updateListeners(Object oldOwner, Object newOwner) {
2
    protected void updateListeners(Object oldOwner, Object newOwner) {
3
        Set<Object[]> l = new HashSet<Object[]>();
3
        Set<Object[]> lst = new HashSet<Object[]>();
4
4
        if (newOwner != null) {
5
        if (newOwner != null) {
5
            // add the listeners to the newOwner
6
            /* Don't listen to all property names
6
            lst.add(new Object[] {newOwner, null});
7
             * We only need to listen to its "type", and "remove". */
7
            // and its stereotypes
8
            l.add(new Object[] {newOwner, new String[] {"type", "remove"}});
8
            for (Object stereo : Model.getFacade().getStereotypes(newOwner)) {
9
            // register for events from the type
9
                lst.add(new Object[] {stereo, null});                
10
            Object type = Model.getFacade().getType(newOwner);
10
            }
11
            if (Model.getFacade().isAClassifier(type)) {
11
            // and its features
12
                if (Model.getFacade().isAClassifierInState(type)) {
12
            for (Object feat : Model.getFacade().getFeatures(newOwner)) {
13
                    Object classifier = Model.getFacade().getType(type);
13
                lst.add(new Object[] {feat, null});
14
                    l.add(new Object[] {classifier, "name"});
14
                // and the stereotypes of its features
15
                    l.add(new Object[] {type, "inState"});
15
                for (Object stereo : Model.getFacade().getStereotypes(feat)) {
16
                    Collection states = Model.getFacade().getInStates(type);
16
                    lst.add(new Object[] {stereo, null});
17
                    Iterator i = states.iterator();
17
                }
18
                    while (i.hasNext()) {
18
            }
19
                        l.add(new Object[] {i.next(), "name"});
19
            // and its enumerationLiterals
20
                    }
20
            for (Object literal : Model.getFacade().getEnumerationLiterals(
21
                } else {
21
                    newOwner)) {
22
                    l.add(new Object[] {type, "name"});
22
                lst.add(new Object[] {literal, null});
23
                }
23
            }
24
            }
24
        }
25
        }
25
        // And now add listeners to them all:
26
26
        updateElementListeners(lst);
27
        updateElementListeners(l);
27
28
    }
28
    }
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements3
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)0.0
    Similarity Score0.600
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    12
    while (i.hasNext())
    12
    while (i.hasNext())
    8
    for (Object stereo : Model.getFacade().getStereotypes(feat))
    Differences
    Expression1Expression2Difference
    statesModel.getFacade().getStereotypes(feat)TYPE_COMPATIBLE_REPLACEMENT
    8
    for (Object stereo : Model.getFacade().getStereotypes(feat))
    13
    l.add(new Object[] {i.next(), "name"});
    13
    l.add(new Object[] {i.next(), "name"});
    9
    lst.add(new Object[] {stereo, null});
    Differences
    Expression1Expression2Difference
    i.next()stereoTYPE_COMPATIBLE_REPLACEMENT
    "name"nullTYPE_COMPATIBLE_REPLACEMENT
    llstVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression stereo cannot be parameterized, because it has dependencies to/from statements that will be extracted
    9
    lst.add(new Object[] {stereo, null});
    Precondition Violations (1)
    Row Violation
    1Expression stereo cannot be parameterized, because it has dependencies to/from statements that will be extracted