/**\r
* set this to false to stop the thread\r
*/\r
- private boolean watchForChange = true;\r
+ protected boolean watchForChange = true;\r
/**\r
* true when the handler is being called for this watcher\r
*/\r
* before returning. If no thread is running then it returns immediately.\r
*/\r
public void haltWatch() {\r
- if (log.isDebugEnabled())\r
- log.debug("haltWatch on "+watcher.getSubject());\r
// set the flag to skip this watch element.\r
watchForChange=false;\r
+ if (log.isDebugEnabled())\r
+ log.debug("haltWatch on "+watcher.getSubject());\r
endWatch();\r
- // watcher=null;\r
- \r
+ if (log.isDebugEnabled())\r
+ log.debug("haltWatch completed on "+watcher.getSubject());\r
}\r
/**\r
* called by haltWatch before \r
* enablewatch\r
*/\r
protected void enableWatch() {\r
+ if (log.isDebugEnabled())\r
+ log.debug("enableWatch on "+getSubject());\r
watchForChange=true;\r
initWatch();\r
if (log.isDebugEnabled())\r
}\r
if (doclock==null)\r
return false;\r
- handlerCalled=true;\r
+ /* handlerCalled=true;\r
if (log.isDebugEnabled())\r
log.debug("Triggering watchEvent for change on "+watcher.getSubject());\r
boolean finish=!handler.handleWatchEvent(this, doclock);\r
haltWatch();\r
else\r
enableWatch();\r
- handlerCalled=false;\r
+ handlerCalled=false;*/\r
+ this.callHandler(doclock);\r
return true;\r
}\r
\r
/**\r
+ * Calls the current eventhandler\r
+ * \r
+ * @param doclock the lock on the watch file \r
+ */\r
+ protected void callHandler(Lock doclock)\r
+ {\r
+ if (log.isDebugEnabled())\r
+ log.debug("Triggering watchEvent for change on "+watcher.getSubject());\r
+ boolean finish=!handler.handleWatchEvent(this, doclock);\r
+ doclock=null; // TODO: check that lock should really be released rather than dereferenced\r
+ if (finish)\r
+ haltWatch();\r
+ else\r
+ enableWatch();\r
+ handlerCalled=false;\r
+ }\r
+ \r
+ /**\r
* @return the handler\r
*/\r
public WatcherCallBack getHandler() {\r