File path: /hibernate-distribution-3.3.2.GA/project/testsuite/src/test/java/org/hibernate/test/ops/MergeTest.java | File path: /hibernate-distribution-3.3.2.GA/project/testsuite/src/test/java/org/hibernate/test/ops/MergeTest.java | |||
Method name: void testMergeManagedUninitializedCollection()
|
Method name: void testMergeManagedInitializedCollection()
|
|||
Number of AST nodes: 28 | Number of AST nodes: 29 | |||
1 | Session s = openSession();↵ | 1 | Session s = openSession();↵ | |
2 | Transaction tx = s.beginTransaction();↵ | 2 | Transaction tx = s.beginTransaction();↵ | |
3 | NumberedNode root = new NumberedNode( "root" );↵ | 3 | NumberedNode root = new NumberedNode( "root" );↵ | |
4 | root.addChild( new NumberedNode( "child" ) );↵ | 4 | root.addChild( new NumberedNode( "child" ) );↵ | |
5 | s.persist(root);↵ | 5 | s.persist(root);↵ | |
6 | tx.commit();↵ | 6 | tx.commit();↵ | |
7 | s.close();↵ | 7 | s.close();↵ | |
8 | clearCounts();↵ | 8 | clearCounts();↵ | |
9 | NumberedNode newRoot = new NumberedNode( "root" );↵ | 9 | NumberedNode newRoot = new NumberedNode( "root" );↵ | |
10 | newRoot.setId( root.getId() );↵ | 10 | newRoot.setId( root.getId() );↵ | |
11 | s = openSession();↵ | 11 | s = openSession();↵ | |
12 | tx = s.beginTransaction();↵ | 12 | tx = s.beginTransaction();↵ | |
13 | root = ( NumberedNode ) s.get( NumberedNode.class, root.getId() );↵ | 13 | root = ( NumberedNode ) s.get( NumberedNode.class, root.getId() );↵ | |
14 | Set managedChildren = root.getChildren();↵ | 14 | Set managedChildren = root.getChildren();↵ | |
15 | assertFals↵ | 15 | Hibernate.initialize( managedChildren );↵ | |
16 | e( Hibernate.isInitialized( managedChildren ) );↵ | 16 | assertTrue( Hibernate.isInitialized( managedChildren ) );↵ | |
17 | newRoot.setChildren( managedChildren );↵ | 17 | newRoot.setChildren( managedChildren );↵ | |
18 | assertSame( root, s.merge( newRoot ) );↵ | 18 | assertSame( root, s.merge( newRoot ) );↵ | |
19 | assertSame( managedChildren, root.getChildren() );↵ | 19 | assertSame( managedChildren, root.getChildren() );↵ | |
20 | assertFalse( Hibernate.isInitialized( managedChildren ) );↵ | 20 | assertTrue( Hibernate.isInitialized( managedChildren ) );↵ | |
21 | tx.commit();↵ | 21 | tx.commit();↵ | |
22 | assertInsertCount(0);↵ | 22 | assertInsertCount(0);↵ | |
23 | assertUpdateCount(0);↵ | 23 | assertUpdateCount(0);↵ | |
24 | assertDeleteCount(0);↵ | 24 | assertDeleteCount(0);↵ | |
25 | tx = s.beginTransaction();↵ | 25 | tx = s.beginTransaction();↵ | |
26 | assertEquals(↵ | 26 | assertEquals(↵ | |
27 | s.createCriteria(NumberedNode.class)↵ | 27 | s.createCriteria(NumberedNode.class)↵ | |
28 | .setProjection( Projections.rowCount() )↵ | 28 | .setProjection( Projections.rowCount() )↵ | |
29 | .uniqueResult(),↵ | 29 | .uniqueResult(),↵ | |
30 | new Integer(2)↵ | 30 | new Integer(2)↵ | |
31 | );↵ | 31 | );↵ | |
32 | tx.commit();↵ | 32 | tx.commit();↵ | |
33 | s.close();↵ | 33 | s.close();↵ | |
34 | cleanup(); | 34 |
| |
See real code fragment | See real code fragment |
Number of common nesting structure subtrees | 1 |
Number of refactorable cases | 1 |
Number of non-refactorable cases | 0 |
Time elapsed for finding largest common nesting structure subtrees (ms) | 0.0 |
Clones location | Clones are declared in the same class |
Number of node comparisons | 322 |
Number of mapped statements | 28 |
Number of unmapped statements in the first code fragment | 0 |
Number of unmapped statements in the second code fragment | 1 |
Time elapsed for statement mapping (ms) | 0.0 |
Clone type | Type 3 |
ID | Statement | ID | Statement | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Session s = openSession(); | 1 | Session s = openSession(); | |||||||||||||||
2 | Transaction tx = s.beginTransaction(); | 2 | Transaction tx = s.beginTransaction(); | |||||||||||||||
3 | NumberedNode root = new NumberedNode("root"); | 3 | NumberedNode root = new NumberedNode("root"); | |||||||||||||||
4 | root.addChild(new NumberedNode("child")); | 4 | root.addChild(new NumberedNode("child")); | |||||||||||||||
5 | s.persist(root); | 5 | s.persist(root); | |||||||||||||||
6 | tx.commit(); | 6 | tx.commit(); | |||||||||||||||
7 | s.close(); | 7 | s.close(); | |||||||||||||||
8 | clearCounts(); | 8 | clearCounts(); | |||||||||||||||
9 | NumberedNode newRoot = new NumberedNode("root"); | 9 | NumberedNode newRoot = new NumberedNode("root"); | |||||||||||||||
10 | newRoot.setId(root.getId()); | 10 | newRoot.setId(root.getId()); | |||||||||||||||
11 | s = openSession(); | 11 | s = openSession(); | |||||||||||||||
12 | tx = s.beginTransaction(); | 12 | tx = s.beginTransaction(); | |||||||||||||||
13 | root = (NumberedNode)s.get(NumberedNode.class, root.getId()); | 13 | root = (NumberedNode)s.get(NumberedNode.class, root.getId()); | |||||||||||||||
14 | Set managedChildren = root.getChildren(); | 14 | Set managedChildren = root.getChildren(); | |||||||||||||||
|
| 15 | Hibernate.initialize(managedChildren); | |||||||||||||||
15 | assertFalse(Hibernate.isInitialized(managedChildren)); |
| 16 | assertTrue(Hibernate.isInitialized(managedChildren)); | ||||||||||||||
16 | newRoot.setChildren(managedChildren); | 17 | newRoot.setChildren(managedChildren); | |||||||||||||||
17 | assertSame(root, s.merge(newRoot)); | 18 | assertSame(root, s.merge(newRoot)); | |||||||||||||||
18 | assertSame(managedChildren, root.getChildren()); | 19 | assertSame(managedChildren, root.getChildren()); | |||||||||||||||
19 | assertFalse(Hibernate.isInitialized(managedChildren)); |
| 20 | assertTrue(Hibernate.isInitialized(managedChildren)); | ||||||||||||||
20 | tx.commit(); | 21 | tx.commit(); | |||||||||||||||
21 | assertInsertCount(0); | 22 | assertInsertCount(0); | |||||||||||||||
22 | assertUpdateCount(0); | 23 | assertUpdateCount(0); | |||||||||||||||
23 | assertDeleteCount(0); | 24 | assertDeleteCount(0); | |||||||||||||||
24 | tx = s.beginTransaction(); | 25 | tx = s.beginTransaction(); | |||||||||||||||
25 | assertEquals(s.createCriteria(NumberedNode.class).setProjection(Projections.rowCount()).uniqueResult(), new Integer(2)); | 26 | assertEquals(s.createCriteria(NumberedNode.class).setProjection(Projections.rowCount()).uniqueResult(), new Integer(2)); | |||||||||||||||
26 | tx.commit(); | 27 | tx.commit(); | |||||||||||||||
27 | s.close(); | 28 | s.close(); | |||||||||||||||
28 | cleanup(); | 29 | cleanup(); |
Row | Violation |
---|---|
1 | Unmatched statement Hibernate.initialize(managedChildren); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
2 | Expression assertFalse(Hibernate.isInitialized(managedChildren)) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
3 | Expression assertTrue(Hibernate.isInitialized(managedChildren)) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
4 | Expression assertFalse(Hibernate.isInitialized(managedChildren)) is a void method call, and thus it cannot be parameterized |
5 | Expression assertTrue(Hibernate.isInitialized(managedChildren)) is a void method call, and thus it cannot be parameterized |
6 | Expression assertFalse(Hibernate.isInitialized(managedChildren)) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
7 | Expression assertTrue(Hibernate.isInitialized(managedChildren)) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
8 | Expression assertFalse(Hibernate.isInitialized(managedChildren)) is a void method call, and thus it cannot be parameterized |
9 | Expression assertTrue(Hibernate.isInitialized(managedChildren)) is a void method call, and thus it cannot be parameterized |