retryMergeTransientEntities( event, transientCopyCache, copyCache ); // find any entities that are still transient after retry transientCopyCache = getTransientCopyCache(event, copyCache ); if ( transientCopyCache.size() > 0 ) { Set transientEntityNames = new HashSet(); for( Iterator it=transientCopyCache.keySet().iterator(); it.hasNext(); ) { Object transientEntity = it.next(); String transientEntityName = event.getSession().guessEntityName( transientEntity ); transientEntityNames.add( transientEntityName ); log.trace( "transient instance could not be processed by merge: " + transientEntityName + "[" + transientEntity + "]" ); } throw new TransientObjectException( "one or more objects is an unsaved transient instance - save transient instance(s) before merging: " + transientEntityNames ); }
for ( Iterator iter = list.iterator(); iter.hasNext(); ) { Object element = iter.next(); Integer l = ( Integer ) items.get( tmpSession.getEntityName( element ) ); if ( l == null ) { l = new Integer( 0 ); } l = new Integer( l.intValue() + 1 ); items.put( tmpSession.getEntityName( element ), l ); System.out.println( "Data left: " + element ); } fail( "Data is left in the database: " + items.toString() );
Clone fragments detected by clone detection tool
File path: /hibernate-distribution-3.3.2.GA/project/core/src/main/java/org/hibernate/event/def/DefaultMergeEventListener.java File path: /hibernate-distribution-3.3.2.GA/project/testing/src/main/java/org/hibernate/junit/functional/FunctionalTestCase.java
Method name: void onMerge(MergeEvent) Method name: void assertAllDataRemoved()
Number of AST nodes: 10 Number of AST nodes: 9
1
retryMergeTransientEntities( event, transientCopyCache, copyCache );
2
			// find any entities that are still transient after retry
3
			transientCopyCache = getTransientCopyCache(event, copyCache );
4
			if ( transientCopyCache.size() > 0 ) {
5
				Set transientEntityNames = new HashSet();
6
				for( Iterator it=transientCopyCache.keySet().iterator(); it.hasNext(); ) {
1
for ( Iterator iter = list.iterator(); iter.hasNext(); ) {
7
					Object transientEntity = it.next();
2
					Object element = iter.next();
8
					String transientEntityName = event.getSession().guessEntityName( transientEntity );
3
					Integer l = ( Integer ) items.get( tmpSession.getEntityName( element ) );
9
					transientEntityNames.add( transientEntityName );
4
					
10
					log.trace( "transient instance could not be processed by merge: " +
11
							transientEntityName + "[" + transientEntity + "]"
5
if ( l == null ) {
6
						l = new Integer( 0 );
7
					}
8
					l = new Integer( l.intValue() + 1 );
9
					items.put( tmpSession.getEntityName( element ), l );
12
 );
10
					System.out.println( "Data left: " + element );
13
				}
11
				}
14
				throw new TransientObjectException(
12
				
15
					"one or more objects is an unsaved transient instance - save transient instance(s) before merging: " +
16
					transientEntityNames );
17
			}
13
fail( "Data is left in the database: " + items.toString() );
Summary
Number of common nesting structure subtrees0
Number of refactorable cases0
Number of non-refactorable cases0
Time elapsed for finding largest common nesting structure subtrees (ms)0.2
Clones locationClones are in different classes
Number of node comparisons1