File path: /hibernate-distribution-3.3.2.GA/project/testsuite/src/test/java/org/hibernate/test/collection/set/PersistentSetTest.java | File path: /hibernate-distribution-3.3.2.GA/project/testsuite/src/test/java/org/hibernate/test/collection/set/PersistentSetTest.java | |||
Method name: void testCollectiondirtyChecking()
|
Method name: void testCompositeElementMergingFailureExpected()
|
|||
Number of AST nodes: 27 | Number of AST nodes: 27 | |||
1 | Session session = openSession();↵ | 1 | Session session = openSession();↵ | |
2 | session.beginTransaction();↵ | 2 | session.beginTransaction();↵ | |
3 | Parent parent = new Parent( "p1" );↵ | 3 | ↵ | |
4 | Child child = new Child( "c1" );↵ | |||
5 | parent.getChildren().add( child );↵ | |||
6 | child.setParent( parent↵ | 4 | Container container = new Container( "p1" );↵ | |
5 | Container.Content c1 = new Container.Content( "c1" );↵ | |||
7 | );↵ | 6 | container.getContents().add( c1 );↵ | |
8 | session.save( parent );↵ | 7 | session.save( container );↵ | |
9 | session.getTransaction().commit();↵ | 8 | session.getTransaction().commit();↵ | |
10 | session.close();↵ | 9 | session.close();↵ | |
11 | CollectionStatistics stats = sfi().getStatistics().getCollectionStatistics( Parent.class.getName() + ".children" );↵ | 10 | CollectionStatistics stats = sfi().getStatistics().getCollectionStatistics( Container.class.getName() + ".contents" );↵ | |
12 | long recreateCount = stats.getRecreateCount();↵ | 11 | long recreateCount = stats.getRecreateCount();↵ | |
13 | long updateCount = stats.getUpdateCount();↵ | 12 | long updateCount = stats.getUpdateCount();↵ | |
13 | container.setName( "another name" );↵ | |||
14 | session = openSession();↵ | 14 | session = openSession();↵ | |
15 | session.beginTransaction();↵ | 15 | session.beginTransaction();↵ | |
16 | parent = ( Parent ) session.get( Parent.class, "p1" );↵ | 16 | container = ( Container ) session.merge( ↵ | |
17 | assertEquals( 1, parent.getChildren().size() );↵ | 17 | container );↵ | |
18 | session.getTransaction().commit();↵ | 18 | session.getTransaction().commit();↵ | |
19 | session.close();↵ | 19 | session.close();↵ | |
20 | assertEquals( 1, parent.getChildren().size() );↵ | 20 | assertEquals( 1, container.getContents().size() );↵ | |
21 | assertEquals( recreateCount, stats.getRecreateCount() );↵ | 21 | assertEquals( recreateCount, stats.getRecreateCount() );↵ | |
22 | assertEquals( updateCount, stats.getUpdateCount() );↵ | 22 | assertEquals( updateCount, stats.getUpdateCount() );↵ | |
23 | session = openSession();↵ | 23 | session = openSession();↵ | |
24 | session.beginTransaction();↵ | 24 | session.beginTransaction();↵ | |
25 | assertEquals( 1, parent.getChildren↵ | 25 | container = ( Container ) session.get( Container.class, container.getId() );↵ | |
26 | ().size() );↵ | 26 | assertEquals( 1, container.getContents().size() );↵ | |
27 | session.delete( parent );↵ | 27 | session.delete( container );↵ | |
28 | session.getTransaction().commit();↵ | 28 | session.getTransaction().commit();↵ | |
29 | session.close(); | 29 |
| |
See real code fragment | See real code fragment |
Number of common nesting structure subtrees | 1 |
Number of refactorable cases | 0 |
Number of non-refactorable cases | 1 |
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 | 287 |
Number of mapped statements | 22 |
Number of unmapped statements in the first code fragment | 5 |
Number of unmapped statements in the second code fragment | 5 |
Time elapsed for statement mapping (ms) | 0.0 |
Clone type | Type 2 |
ID | Statement | ID | Statement | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Session session = openSession(); | 1 | Session session = openSession(); | |||||||||||||||||||||||
2 | session.beginTransaction(); | 2 | session.beginTransaction(); | |||||||||||||||||||||||
| 3 | Container container = new Container("p1"); | ||||||||||||||||||||||||
3 | Parent parent = new Parent("p1"); | | ||||||||||||||||||||||||
| 4 | Container.Content c1 = new Container.Content("c1"); | ||||||||||||||||||||||||
4 | Child child = new Child("c1"); | | ||||||||||||||||||||||||
| 5 | container.getContents().add(c1); | ||||||||||||||||||||||||
5 | parent.getChildren().add(child); | | ||||||||||||||||||||||||
6 | child.setParent(parent); |
| 18 | assertEquals(1, container.getContents().size()); | ||||||||||||||||||||||
7 | session.save(parent); |
| 6 | session.save(container); | ||||||||||||||||||||||
8 | session.getTransaction().commit(); | 7 | session.getTransaction().commit(); | |||||||||||||||||||||||
9 | session.close(); | 8 | session.close(); | |||||||||||||||||||||||
10 | CollectionStatistics stats = sfi().getStatistics().getCollectionStatistics(Parent.class.getName() + ".children"); |
| 9 | CollectionStatistics stats = sfi().getStatistics().getCollectionStatistics(Container.class.getName() + ".contents"); | ||||||||||||||||||||||
11 | long recreateCount = stats.getRecreateCount(); | 10 | long recreateCount = stats.getRecreateCount(); | |||||||||||||||||||||||
12 | long updateCount = stats.getUpdateCount(); | 11 | long updateCount = stats.getUpdateCount(); | |||||||||||||||||||||||
13 | session = openSession(); | 13 | session = openSession(); | |||||||||||||||||||||||
14 | session.beginTransaction(); | 14 | session.beginTransaction(); | |||||||||||||||||||||||
15 | parent = (Parent)session.get(Parent.class, "p1"); |
| | |||||||||||||||||||||||
16 | assertEquals(1, parent.getChildren().size()); |
| 12 | container.setName("another name"); | ||||||||||||||||||||||
|
| 15 | container = (Container)session.merge(container); | |||||||||||||||||||||||
17 | session.getTransaction().commit(); | 16 | session.getTransaction().commit(); | |||||||||||||||||||||||
18 | session.close(); | 17 | session.close(); | |||||||||||||||||||||||
19 | assertEquals(1, parent.getChildren().size()); |
| 25 | session.delete(container); | ||||||||||||||||||||||
20 | assertEquals(recreateCount, stats.getRecreateCount()); | 19 | assertEquals(recreateCount, stats.getRecreateCount()); | |||||||||||||||||||||||
21 | assertEquals(updateCount, stats.getUpdateCount()); | 20 | assertEquals(updateCount, stats.getUpdateCount()); | |||||||||||||||||||||||
22 | session = openSession(); | 21 | session = openSession(); | |||||||||||||||||||||||
23 | session.beginTransaction(); | 22 | session.beginTransaction(); | |||||||||||||||||||||||
|
| 23 | container = (Container)session.get(Container.class, container.getId()); | |||||||||||||||||||||||
24 | assertEquals(1, parent.getChildren().size()); | | ||||||||||||||||||||||||
25 | session.delete(parent); |
| 24 | assertEquals(1, container.getContents().size()); | ||||||||||||||||||||||
26 | session.getTransaction().commit(); | 26 | session.getTransaction().commit(); | |||||||||||||||||||||||
27 | session.close(); | 27 | session.close(); |
Row | Violation |
---|---|
1 | Expression child.setParent(parent) is a void method call, and thus it cannot be parameterized |
2 | Expression assertEquals(1,container.getContents().size()) is a void method call, and thus it cannot be parameterized |
3 | Expression child.setParent(parent) is a void method call, and thus it cannot be parameterized |
4 | Expression assertEquals(1,container.getContents().size()) is a void method call, and thus it cannot be parameterized |
5 | Type org.hibernate.test.collection.set.Parent of variable parent does not match with type org.hibernate.test.collection.set.Container of variable container |
6 | Unmatched statement parent=(Parent)session.get(Parent.class,"p1"); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
7 | Expression assertEquals(1,parent.getChildren().size()) is a void method call, and thus it cannot be parameterized |
8 | Expression container.setName("another name") is a void method call, and thus it cannot be parameterized |
9 | Expression assertEquals(1,parent.getChildren().size()) is a void method call, and thus it cannot be parameterized |
10 | Expression container.setName("another name") is a void method call, and thus it cannot be parameterized |
11 | Unmatched statement container=(Container)session.merge(container); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
12 | Expression session.delete(container) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
13 | Expression assertEquals(1,parent.getChildren().size()) is a void method call, and thus it cannot be parameterized |
14 | Expression session.delete(container) is a void method call, and thus it cannot be parameterized |
15 | Expression session.delete(container) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
16 | Expression assertEquals(1,parent.getChildren().size()) is a void method call, and thus it cannot be parameterized |
17 | Expression session.delete(container) is a void method call, and thus it cannot be parameterized |
18 | Unmatched statement container=(Container)session.get(Container.class,container.getId()); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
19 | Expression session.delete(parent) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
20 | Expression session.delete(parent) is a void method call, and thus it cannot be parameterized |
21 | Expression assertEquals(1,container.getContents().size()) is a void method call, and thus it cannot be parameterized |
22 | Expression session.delete(parent) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
23 | Expression session.delete(parent) is a void method call, and thus it cannot be parameterized |
24 | Expression assertEquals(1,container.getContents().size()) is a void method call, and thus it cannot be parameterized |