Session s = openSession(); Vetoer v = new Vetoer(); v.setStrings( new String[] { "foo", "bar", "baz" } ); s.save(v); Serializable id = s.save(v); v.getStrings()[1] = "osama"; s.flush(); s.connection().commit(); s.close(); s = openSession(); v = (Vetoer) s.load(Vetoer.class, id); assertTrue( "serializable type", v.getStrings()[1].equals("osama") ); s.delete(v); s.delete(v); s.flush(); s.connection().commit(); s.close();
Customer cust = new Customer(); cust.setCustomerId("xyz123"); cust.setName("Matt"); Session s = openSession(); Transaction t = s.beginTransaction(); s.persist(cust); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); List results = s.createQuery("from Customer cust left join fetch cust.billingAddress where cust.customerId='xyz123'").list(); //List results = s.createQuery("from Customer cust left join fetch cust.billingAddress left join fetch cust.shippingAddress").list(); cust = (Customer) results.get(0); assertNull( cust.getShippingAddress() ); assertNull( cust.getBillingAddress() ); s.delete(cust); t.commit(); s.close();
Clone fragments detected by clone detection tool
File path: /hibernate-distribution-3.3.2.GA/project/testsuite/src/test/java/org/hibernate/test/legacy/FooBarTest.java File path: /hibernate-distribution-3.3.2.GA/project/testsuite/src/test/java/org/hibernate/test/typedonetoone/TypedOneToOneTest.java
Method name: void testSerializableType() Method name: void testCreateQueryNull()
Number of AST nodes: 17 Number of AST nodes: 17
1
Session s = openSession();
2
		Vetoer v = new Vetoer();
1
Customer cust = new Customer();
3
		v.setStrings( new String[] { "foo", "bar", "baz" } );
2
		
4
		s.save(v); Serializable id = s.save(v);
5
		v.getStrings()[1] = "osama";
6
		s.flush();
7
		s.connection()
3
cust.setCustomerId("xyz123");
4
		cust.setName("Matt");
5
		
6
		Session s = openSession();
7
		Transaction t = s.beginTransaction();
8
		s.persist(cust);
8
.commit();
9
		t.commit();
9
		s.close();
10
		s.close();
10
		
11
		
11
s = openSession();
12
		s = openSession();
12
		v = (Vetoer) s.load(Ve
13
		t = s.beginTransaction();
13
toer.class, id);
14
		List results = s.createQuery("from Customer cust left join fetch cust.billingAddress where cust.customer
14
		assertTrue( "serializable type", v.getStrings()[1].equals("osama") );
15
		s.delete(v); s.delete(v);
16
		s.flush();
17
		s.connection()
15
Id='xyz123'").list();
16
		//List results = s.createQuery("from Customer cust left join fetch cust.billingAddress left join fetch cust.shippingAddress").list();
17
		cust = (Customer) results.get(0);
18
		assertNull( cust.getShippingAddress() );
19
		assertNull( cust.getBillingAddress() );
20
		s.delete(cust);
18
.commit();
21
		t.commit();
19
		s.close();
22
		s.close();
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.0
Clones locationClones are in different classes having the same super class
Number of node comparisons229
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements6
    Number of unmapped statements in the first code fragment11
    Number of unmapped statements in the second code fragment11
    Time elapsed for statement mapping (ms)0.0
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
                                                                    
    1
    Customer cust = new Customer();
    1
    Session s = openSession();
                                                          
                                                                    
    2
    cust.setCustomerId("xyz123");
    2
    Vetoer v = new Vetoer();
                                                      
                                                    
    3
    cust.setName("Matt");
    3
    v.setStrings(new String[] {"foo", "bar", "baz"});
                                                                                                      
                                                          
    4
    Session s = openSession();
    4
    s.save(v);
                              
                                                                                
    5
    Transaction t = s.beginTransaction();
    5
    Serializable id = s.save(v);
                                                              
                                          
    6
    s.persist(cust);
    6
    v.getStrings()[1] = "osama";
                                                              
                                
    7
    t.commit();
                                          
    9
    s = openSession();
    Preondition Violations
    Unmatched statement s=openSession(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    9
    s = openSession();
                                                          
    10
    t = s.beginTransaction();
                                                                                                                                                                                                                                                                  
    11
    List results = s.createQuery("from Customer cust left join fetch cust.billingAddress where cust.customerId='xyz123'").list();
                                                                        
    12
    cust = (Customer)results.get(0);
    7
    s.flush();
    7
    s.flush();
    14
    assertNull(cust.getBillingAddress());
    Differences
    Expression1Expression2Difference
    flushassertNullMETHOD_INVOCATION_NAME_MISMATCH
    s.flush()assertNull(cust.getBillingAddress())ARGUMENT_NUMBER_MISMATCH
    sMISSING_METHOD_INVOCATION_EXPRESSION
    Preondition Violations
    Expression s.flush() is a void method call, and thus it cannot be parameterized
    Expression assertNull(cust.getBillingAddress()) is a void method call, and thus it cannot be parameterized
    Expression s.flush() is a void method call, and thus it cannot be parameterized
    Expression assertNull(cust.getBillingAddress()) is a void method call, and thus it cannot be parameterized
    14
    assertNull(cust.getBillingAddress());
    8
    s.connection().commit();
    8
    s.connection().commit();
    13
    assertNull(cust.getShippingAddress());
    Differences
    Expression1Expression2Difference
    commitassertNullMETHOD_INVOCATION_NAME_MISMATCH
    s.connection().commit()assertNull(cust.getShippingAddress())ARGUMENT_NUMBER_MISMATCH
    s.connection()MISSING_METHOD_INVOCATION_EXPRESSION
    Preondition Violations
    Expression s.connection().commit() is a void method call, and thus it cannot be parameterized
    Expression assertNull(cust.getShippingAddress()) is a void method call, and thus it cannot be parameterized
    Expression s.connection().commit() is a void method call, and thus it cannot be parameterized
    Expression assertNull(cust.getShippingAddress()) is a void method call, and thus it cannot be parameterized
    13
    assertNull(cust.getShippingAddress());
    9
    s.close();
    9
    s.close();
    8
    s.close();
    Differences
    Expression1Expression2Difference
    org.hibernate.classic.Sessionorg.hibernate.SessionVARIABLE_TYPE_MISMATCH
    Preondition Violations
    Type org.hibernate.classic.Session of variable s does not match with type org.hibernate.Session of variable s
    • Make classes org.hibernate.classic.Session and org.hibernate.Session extend a common superclass
    8
    s.close();
    10
    s = openSession();
    10
    s = openSession();
    Preondition Violations
    Unmatched statement s=openSession(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
                                            
    11
    v = (Vetoer)s.load(Vetoer.class, id);
                                                                                
    12
    assertTrue("serializable type", v.getStrings()[1].equals("osama"));
    12
    assertTrue("serializable type", v.getStrings()[1].equals("osama"));
    16
    t.commit();
    Differences
    Expression1Expression2Difference
    assertTruecommitMETHOD_INVOCATION_NAME_MISMATCH
    assertTrue("serializable type",v.getStrings()[1].equals("osama"))t.commit()ARGUMENT_NUMBER_MISMATCH
    tMISSING_METHOD_INVOCATION_EXPRESSION
    Preondition Violations
    Expression assertTrue("serializable type",v.getStrings()[1].equals("osama")) is a void method call, and thus it cannot be parameterized
    Expression t.commit() is a void method call, and thus it cannot be parameterized
    Expression assertTrue("serializable type",v.getStrings()[1].equals("osama")) is a void method call, and thus it cannot be parameterized
    Expression t.commit() is a void method call, and thus it cannot be parameterized
    16
    t.commit();
    13
    s.delete(v);
    13
    s.delete(v);
    15
    s.delete(cust);
    Differences
    Expression1Expression2Difference
    vcustVARIABLE_NAME_MISMATCH
    org.hibernate.test.legacy.Vetoerorg.hibernate.test.typedonetoone.CustomerVARIABLE_TYPE_MISMATCH
    org.hibernate.classic.Sessionorg.hibernate.SessionVARIABLE_TYPE_MISMATCH
    Preondition Violations
    Type org.hibernate.test.legacy.Vetoer of variable v does not match with type org.hibernate.test.typedonetoone.Customer of variable cust
    • Make classes org.hibernate.test.legacy.Vetoer and org.hibernate.test.typedonetoone.Customer extend a common superclass
    Type org.hibernate.classic.Session of variable s does not match with type org.hibernate.Session of variable s
    • Make classes org.hibernate.classic.Session and org.hibernate.Session extend a common superclass
    15
    s.delete(cust);
    14
    s.delete(v);
                                    
    15
    s.flush();
                                
    16
    s.connection().commit();
                                                            
    17
    s.close();
    17
    s.close();
    17
    s.close();
    Differences
    Expression1Expression2Difference
    org.hibernate.classic.Sessionorg.hibernate.SessionVARIABLE_TYPE_MISMATCH
    Preondition Violations
    Type org.hibernate.classic.Session of variable s does not match with type org.hibernate.Session of variable s
    • Make classes org.hibernate.classic.Session and org.hibernate.Session extend a common superclass
    17
    s.close();
    Precondition Violations (18)
    Row Violation
    1Unmatched statement s=openSession(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    2Expression s.flush() is a void method call, and thus it cannot be parameterized
    3Expression assertNull(cust.getBillingAddress()) is a void method call, and thus it cannot be parameterized
    4Expression s.flush() is a void method call, and thus it cannot be parameterized
    5Expression assertNull(cust.getBillingAddress()) is a void method call, and thus it cannot be parameterized
    6Expression s.connection().commit() is a void method call, and thus it cannot be parameterized
    7Expression assertNull(cust.getShippingAddress()) is a void method call, and thus it cannot be parameterized
    8Expression s.connection().commit() is a void method call, and thus it cannot be parameterized
    9Expression assertNull(cust.getShippingAddress()) is a void method call, and thus it cannot be parameterized
    10Type org.hibernate.classic.Session of variable s does not match with type org.hibernate.Session of variable s
    11Unmatched statement s=openSession(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    12Expression assertTrue("serializable type",v.getStrings()[1].equals("osama")) is a void method call, and thus it cannot be parameterized
    13Expression t.commit() is a void method call, and thus it cannot be parameterized
    14Expression assertTrue("serializable type",v.getStrings()[1].equals("osama")) is a void method call, and thus it cannot be parameterized
    15Expression t.commit() is a void method call, and thus it cannot be parameterized
    16Type org.hibernate.test.legacy.Vetoer of variable v does not match with type org.hibernate.test.typedonetoone.Customer of variable cust
    17Type org.hibernate.classic.Session of variable s does not match with type org.hibernate.Session of variable s
    18Type org.hibernate.classic.Session of variable s does not match with type org.hibernate.Session of variable s