File path: /hibernate-distribution-3.3.2.GA/project/core/src/main/java/org/hibernate/event/def/DefaultEvictEventListener.java | File path: /hibernate-distribution-3.3.2.GA/project/core/src/main/java/org/hibernate/proxy/pojo/BasicLazyInitializer.java | |||
Method name: void onEvict(EvictEvent)
|
Method name: Object getReplacement()
|
|||
Number of AST nodes: 4 | Number of AST nodes: 4 | |||
1 | final Object entity = persistenceContext.removeEntity( key↵ | 1 | final EntityKey key = new EntityKey(↵ | |
2 | getIdentifier(),↵ | |||
2 | );↵ | 3 | session.getFactory().getEntityPersister( getEntityName() ),↵ | |
3 | if ( entity != null ) {↵ | 4 | ↵ | |
4 | EntityEntry e = event.getS↵ | 5 | session.getEntityMode()↵ | |
6 | );↵ | |||
5 | ession().getPersistenceContext().removeEntry( entity );↵ | 7 | final Object entity = session.getPersistenceContext().getEntity(key);↵ | |
6 | doEvict( entity, key, e.getPersister(), event.getSession() );↵ | 8 | ↵ | |
7 | } | 9 |
| |
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.2 |
Clones location | Clones are in different classes |
Number of node comparisons | 9 |
Number of mapped statements | 3 |
Number of unmapped statements in the first code fragment | 1 |
Number of unmapped statements in the second code fragment | 1 |
Time elapsed for statement mapping (ms) | 314.6 |
Clone type | Type 3 |
ID | Statement | ID | Statement | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| 3 | final EntityKey key = new EntityKey(getIdentifier(), session.getFactory().getEntityPersister(getEntityName()), session.getEntityMode()); | ||||||||||||||||||||||
13 | final Object entity = persistenceContext.removeEntity(key); |
| 4 | final Object entity = session.getPersistenceContext().getEntity(key); | |||||||||||||||||||||
14 | if (entity != null) | 5 | if (entity != null) | ||||||||||||||||||||||
15 | EntityEntry e = event.getSession().getPersistenceContext().removeEntry(entity); |
| | ||||||||||||||||||||||
16 | doEvict(entity, key, e.getPersister(), event.getSession()); |
| 6 | setImplementation(entity); |
Row | Violation |
---|---|
1 | Unmatched statement final EntityKey key=new EntityKey(getIdentifier(),session.getFactory().getEntityPersister(getEntityName()),session.getEntityMode()); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted |
2 | Expression persistenceContext.removeEntity(key) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
3 | Expression session.getPersistenceContext().getEntity(key) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
4 | Expression session.getPersistenceContext() cannot be parameterized, because it has dependencies to/from statements that will be extracted |
5 | Unmatched statement EntityEntry e=event.getSession().getPersistenceContext().removeEntry(entity); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
6 | Expression doEvict(entity,key,e.getPersister(),event.getSession()) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
7 | Expression setImplementation(entity) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
8 | Expression doEvict(entity,key,e.getPersister(),event.getSession()) is a void method call, and thus it cannot be parameterized |
9 | Expression setImplementation(entity) is a void method call, and thus it cannot be parameterized |
10 | Expression doEvict(entity,key,e.getPersister(),event.getSession()) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
11 | Expression setImplementation(entity) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
12 | Expression doEvict(entity,key,e.getPersister(),event.getSession()) is a void method call, and thus it cannot be parameterized |
13 | Expression setImplementation(entity) is a void method call, and thus it cannot be parameterized |
14 | The refactoring of the clones is infeasible, because classes org.hibernate.event.def.DefaultEvictEventListener and org.hibernate.proxy.pojo.BasicLazyInitializer do not have a common superclass |