}
else if ( retrievalMethod == DatabaseRetrievalMethod.QUERY ) {
initializer = CriteriaObjectsInitializer.INSTANCE;
}
else {
throw new AssertionFailure( "Unknown " + DatabaseRetrievalMethod.class.getSimpleName() + "." + retrievalMethod );
}
if ( lookupMethod == ObjectLookupMethod.SKIP ) {
return initializer;
}
else if ( lookupMethod == ObjectLookupMethod.PERSISTENCE_CONTEXT ) {
return new PersistenceContextObjectsInitializer( initializer );
}
else if ( lookupMethod == ObjectLookupMethod.SECOND_LEVEL_CACHE ) {
//we want to check the PC first, that's cheaper
return new PersistenceContextObjectsInitializer( new SecondLevelCacheObjectsInitializer( initializer ) );
}
else {
throw new AssertionFailure( "Unknown " + ObjectLookupMethod.class.getSimpleName() + "." + lookupMethod );
}
//unreachable statement
}