01: //$Id: DefaultDirtyCheckEventListener.java 7785 2005-08-08 23:24:44Z oneovthafew $
02: package org.hibernate.event.def;
03:
04: import org.hibernate.HibernateException;
05: import org.hibernate.event.DirtyCheckEvent;
06: import org.hibernate.event.DirtyCheckEventListener;
07: import org.apache.commons.logging.Log;
08: import org.apache.commons.logging.LogFactory;
09:
10: /**
11: * Defines the default dirty-check event listener used by hibernate for
12: * checking the session for dirtiness in response to generated dirty-check
13: * events.
14: *
15: * @author Steve Ebersole
16: */
17: public class DefaultDirtyCheckEventListener extends
18: AbstractFlushingEventListener implements
19: DirtyCheckEventListener {
20:
21: private static final Log log = LogFactory
22: .getLog(DefaultDirtyCheckEventListener.class);
23:
24: /** Handle the given dirty-check event.
25: *
26: * @param event The dirty-check event to be handled.
27: * @throws HibernateException
28: */
29: public void onDirtyCheck(DirtyCheckEvent event)
30: throws HibernateException {
31:
32: int oldSize = event.getSession().getActionQueue()
33: .numberOfCollectionRemovals();
34:
35: try {
36: flushEverythingToExecutions(event);
37: boolean wasNeeded = event.getSession().getActionQueue()
38: .hasAnyQueuedActions();
39: log
40: .debug(wasNeeded ? "session dirty"
41: : "session not dirty");
42: event.setDirty(wasNeeded);
43: } finally {
44: event.getSession().getActionQueue()
45: .clearFromFlushNeededCheck(oldSize);
46: }
47:
48: }
49: }
|