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/legacy/FooBarTest.java | |||
Method name: void testLateCollectionAdd()
|
Method name: void testCascadeSave()
|
|||
Number of AST nodes: 19 | Number of AST nodes: 18 | |||
1 | Session s = openSession();↵ | 1 | Session s = openSession();↵ | |
2 | ↵ | 2 | Transaction t = s.beginTransaction();↵ | |
3 | Baz baz = new Baz();↵ | 3 | Baz baz = new Baz();↵ | |
4 | List l = new ArrayList();↵ | 4 | List list = new ArrayList();↵ | |
5 | baz.setStringList(l);↵ | 5 | ↵ | |
6 | l.add("foo");↵ | |||
7 | Serializable id = s.save(baz);↵ | 6 | list.add( new Fee() );↵ | |
8 | l.add("bar");↵ | 7 | list.add(↵ | |
9 | s.flush();↵ | |||
10 | l.add("↵ | 8 | new Fee() );↵ | |
9 | baz.setFees(list);↵ | |||
11 | baz");↵ | 10 | s.save(baz);↵ | |
12 | s.flush();↵ | 11 | ↵ | |
13 | s.connection().commit();↵ | 12 | t.commit();↵ | |
14 | s.close();↵ | 13 | s.close();↵ | |
15 | s = openSession();↵ | 14 | s = openSession();↵ | |
16 | ↵ | 15 | t = s.beginTransaction();↵ | |
17 | baz = (Baz) s.load(Baz.class, id);↵ | 16 | baz = (Baz) s.load( Baz.class, baz.getCode() );↵ | |
18 | assertTrue( baz.getStringList().size()==3 && baz.getStringList().contains("bar") );↵ | 17 | assertTrue( baz.getFees().size()==↵ | |
19 | s.delete(baz);↵ | |||
20 | s.flush();↵ | |||
21 | s.connection()↵ | 18 | 2 );↵ | |
19 | s.delete(baz);↵ | |||
20 | assertTrue( !s.iterate("from Fee fee").hasNext() );↵ | |||
22 | .commit();↵ | 21 | t.commit();↵ | |
23 | s.close(); | 22 |
| |
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 | 206 |
Number of mapped statements | 8 |
Number of unmapped statements in the first code fragment | 11 |
Number of unmapped statements in the second code fragment | 10 |
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 t = s.beginTransaction(); | ||||||||||||||||||
2 | Baz baz = new Baz(); | 3 | Baz baz = new Baz(); | ||||||||||||||||||
3 | List l = new ArrayList(); |
| 4 | List list = new ArrayList(); | |||||||||||||||||
|
| 5 | list.add(new Fee()); | ||||||||||||||||||
4 | baz.setStringList(l); |
| 7 | baz.setFees(list); | |||||||||||||||||
5 | l.add("foo"); |
| | ||||||||||||||||||
|
| 6 | list.add(new Fee()); | ||||||||||||||||||
6 | Serializable id = s.save(baz); |
| | ||||||||||||||||||
7 | l.add("bar"); |
| | ||||||||||||||||||
|
| 8 | s.save(baz); | ||||||||||||||||||
8 | s.flush(); |
| | ||||||||||||||||||
|
| 9 | t.commit(); | ||||||||||||||||||
9 | l.add("baz"); |
| | ||||||||||||||||||
10 | s.flush(); |
| | ||||||||||||||||||
11 | s.connection().commit(); |
| | ||||||||||||||||||
12 | s.close(); | 10 | s.close(); | ||||||||||||||||||
13 | s = openSession(); | 11 | s = openSession(); | ||||||||||||||||||
|
| 12 | t = s.beginTransaction(); | ||||||||||||||||||
|
| 13 | baz = (Baz)s.load(Baz.class, baz.getCode()); | ||||||||||||||||||
|
| 14 | assertTrue(baz.getFees().size() == 2); | ||||||||||||||||||
14 | baz = (Baz)s.load(Baz.class, id); |
| | ||||||||||||||||||
15 | assertTrue(baz.getStringList().size() == 3 && baz.getStringList().contains("bar")); |
| | ||||||||||||||||||
16 | s.delete(baz); | 15 | s.delete(baz); | ||||||||||||||||||
|
| 16 | assertTrue(!s.iterate("from Fee fee").hasNext()); | ||||||||||||||||||
|
| 17 | t.commit(); | ||||||||||||||||||
17 | s.flush(); |
| | ||||||||||||||||||
18 | s.connection().commit(); |
| | ||||||||||||||||||
19 | s.close(); | 18 | s.close(); |
Row | Violation |
---|---|
1 | Unmatched statement Transaction t=s.beginTransaction(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
2 | Unmatched statement list.add(new Fee()); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
3 | Expression baz.setStringList(l) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
4 | Expression baz.setFees(list) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
5 | Expression baz.setStringList(l) is a void method call, and thus it cannot be parameterized |
6 | Expression baz.setFees(list) is a void method call, and thus it cannot be parameterized |
7 | Unmatched statement l.add("foo"); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
8 | Unmatched statement list.add(new Fee()); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
9 | Unmatched statement Serializable id=s.save(baz); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
10 | Unmatched statement l.add("bar"); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
11 | Unmatched statement s.save(baz); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
12 | Unmatched statement s.flush(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
13 | Unmatched statement t.commit(); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted |
14 | Unmatched statement l.add("baz"); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
15 | Unmatched statement s.flush(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
16 | Unmatched statement s.connection().commit(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
17 | Unmatched statement t=s.beginTransaction(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
18 | Unmatched statement baz=(Baz)s.load(Baz.class,baz.getCode()); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
19 | Unmatched statement assertTrue(baz.getFees().size() == 2); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
20 | Unmatched statement baz=(Baz)s.load(Baz.class,id); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
21 | Unmatched statement assertTrue(baz.getStringList().size() == 3 && baz.getStringList().contains("bar")); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
22 | Unmatched statement assertTrue(!s.iterate("from Fee fee").hasNext()); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
23 | Unmatched statement t.commit(); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted |
24 | Unmatched statement s.flush(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
25 | Unmatched statement s.connection().commit(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
26 | Clone fragment #1 returns variables l, s, baz , while Clone fragment #2 returns variables s, list, baz |