DualNodeJtaTransactionManagerImpl tm = (DualNodeJtaTransactionManagerImpl) INSTANCES.get(nodeId); if (tm == null) { tm = new DualNodeJtaTransactionManagerImpl(nodeId); INSTANCES.put(nodeId, tm); } return tm;
NamedParameterDescription desc = ( NamedParameterDescription ) namedParameterDescriptions.get( name ); if ( desc == null ) { desc = new NamedParameterDescription( jpa ); namedParameterDescriptions.put( name, desc ); } return desc;
Clone fragments detected by clone detection tool
File path: /hibernate-distribution-3.3.2.GA/project/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/util/DualNodeJtaTransactionManagerImpl.java File path: /hibernate-distribution-3.3.2.GA/project/core/src/main/java/org/hibernate/engine/query/ParamLocationRecognizer.java
Method name: DualNodeJtaTransactionManagerImpl getInstance(String) Method name: NamedParameterDescription getOrBuildNamedParameterDescription(String, boolean)
Number of AST nodes: 5 Number of AST nodes: 5
1
DualNodeJtaTransactionManagerImpl tm = (DualNodeJtaTransactionManagerImpl) INSTANCES.get(nodeId);
1
NamedParameterDescription desc = ( NamedParameterDescription
2
	    if (tm
2
 ) namedParameterDescriptions.get( name );
3
 == null) {
3
		if ( desc == null ) {
4
	        tm = new DualNodeJtaTransactionManagerImpl(nodeId);
4
	
5
	        INSTANCES.put(nodeId, tm);
6
	    
5
		desc = new NamedParameterDescription( jpa );
6
			namedParameterDescriptions.put( name, desc );
7
}
7
		}
8
		return tm;
8
		return desc;
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.1
Clones locationClones are in different classes
Number of node comparisons13
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements2
    Number of unmapped statements in the first code fragment3
    Number of unmapped statements in the second code fragment3
    Time elapsed for statement mapping (ms)1.4
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
                                                                                                                                                                                                        
    1
    NamedParameterDescription desc = (NamedParameterDescription)namedParameterDescriptions.get(name);
    1
    DualNodeJtaTransactionManagerImpl tm = (DualNodeJtaTransactionManagerImpl)INSTANCES.get(nodeId);
                                                                                                                                                                                                      
    2
    if (tm == null)
    2
    if (tm == null)
    2
    if (desc == null)
    Differences
    Expression1Expression2Difference
    tmdescVARIABLE_NAME_MISMATCH
    org.hibernate.test.cache.jbc2.functional.util.DualNodeJtaTransactionManagerImplorg.hibernate.engine.query.ParamLocationRecognizer.NamedParameterDescriptionVARIABLE_TYPE_MISMATCH
    Preondition Violations
    Type org.hibernate.test.cache.jbc2.functional.util.DualNodeJtaTransactionManagerImpl of variable tm does not match with type org.hibernate.engine.query.ParamLocationRecognizer.NamedParameterDescription of variable desc
    • Make classes org.hibernate.test.cache.jbc2.functional.util.DualNodeJtaTransactionManagerImpl and org.hibernate.engine.query.ParamLocationRecognizer.NamedParameterDescription extend a common superclass
    2
    if (desc == null)
                                                                                          
    3
    desc = new NamedParameterDescription(jpa);
    Preondition Violations
    Unmatched statement desc=new NamedParameterDescription(jpa); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    3
    desc = new NamedParameterDescription(jpa);
    3
    tm = new DualNodeJtaTransactionManagerImpl(nodeId);
    3
    tm = new DualNodeJtaTransactionManagerImpl(nodeId);
    Preondition Violations
    Unmatched statement tm=new DualNodeJtaTransactionManagerImpl(nodeId); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
                                                                                                            
    4
    INSTANCES.put(nodeId, tm);
    4
    INSTANCES.put(nodeId, tm);
    4
    namedParameterDescriptions.put(name, desc);
    Differences
    Expression1Expression2Difference
    nodeIdnameVARIABLE_NAME_MISMATCH
    tmdescVARIABLE_NAME_MISMATCH
    org.hibernate.test.cache.jbc2.functional.util.DualNodeJtaTransactionManagerImplorg.hibernate.engine.query.ParamLocationRecognizer.NamedParameterDescriptionVARIABLE_TYPE_MISMATCH
    INSTANCESnamedParameterDescriptionsVARIABLE_NAME_MISMATCH
    java.util.Hashtablejava.util.MapSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Type org.hibernate.test.cache.jbc2.functional.util.DualNodeJtaTransactionManagerImpl of variable tm does not match with type org.hibernate.engine.query.ParamLocationRecognizer.NamedParameterDescription of variable desc
    • Make classes org.hibernate.test.cache.jbc2.functional.util.DualNodeJtaTransactionManagerImpl and org.hibernate.engine.query.ParamLocationRecognizer.NamedParameterDescription extend a common superclass
    4
    namedParameterDescriptions.put(name, desc);
                                  
    5
    return desc;
    Preondition Violations
    Unmatched return desc;
    5
    return desc;
    5
    return tm;
    5
    return tm;
    Preondition Violations
    Unmatched return tm;
                              
    Precondition Violations (7)
    Row Violation
    1Type org.hibernate.test.cache.jbc2.functional.util.DualNodeJtaTransactionManagerImpl of variable tm does not match with type org.hibernate.engine.query.ParamLocationRecognizer.NamedParameterDescription of variable desc
    2Unmatched statement desc=new NamedParameterDescription(jpa); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    3Unmatched statement tm=new DualNodeJtaTransactionManagerImpl(nodeId); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    4Type org.hibernate.test.cache.jbc2.functional.util.DualNodeJtaTransactionManagerImpl of variable tm does not match with type org.hibernate.engine.query.ParamLocationRecognizer.NamedParameterDescription of variable desc
    5Unmatched return desc;
    6Unmatched return tm;
    7The refactoring of the clones is infeasible, because classes org.hibernate.test.cache.jbc2.functional.util.DualNodeJtaTransactionManagerImpl and org.hibernate.engine.query.ParamLocationRecognizer do not have a common superclass