Added support for crashed client.
[vamsas.git] / src / uk / ac / vamsas / client / simpleclient / EventGeneratorThread.java
index ded388f..311c825 100644 (file)
@@ -49,13 +49,13 @@ public class EventGeneratorThread {
     if (clientfile==null) {
       log.debug("Initializing clientfile Watcher");
       clientfile = session.getClientWatcherElement();
-      clientfile.setHandler(new WatcherCallBack() {
+     // handler is set in the Vamsas session
+/* clientfile.setHandler(new WatcherCallBack() {
 
             public boolean handleWatchEvent(WatcherElement watcher, Lock lock) {
-              // TODO Auto-generated method stub
               return clientListChanged(watcher, lock);
             }        
-      });
+      });*/
       watchThread.addElement(clientfile);
     }
     final EventGeneratorThread evgen=this;
@@ -87,7 +87,11 @@ public class EventGeneratorThread {
     PropertyChangeSupport h = (PropertyChangeSupport) handlers.get(handlerEvent);
     if (h!=null) {
       log.debug("Triggering:"+handlerEvent);
-      h.firePropertyChange(property, oldval, newval);
+      try {
+        h.firePropertyChange(property, oldval, newval);
+      } catch (Exception e) {
+        log.warn("Client Exception during handling of "+handlerEvent, e);
+      }
       log.debug("Finished  :"+handlerEvent);
     } else
       log.debug("No handlers for raised "+handlerEvent);
@@ -109,8 +113,12 @@ public class EventGeneratorThread {
     boolean continueWatching=true;
     if (!block_document_updates) {
       session.vamArchive.fileLock=doclock;
+      if (client.pickmanager!=null)
+        client.pickmanager.setPassThru(false);
       // TODO: decide if individual object update handlers are called as well as overall event handler
       _raise(Events.DOCUMENT_UPDATE, client.getSessionUrn(), null, client);
+      if (client.pickmanager!=null)
+        client.pickmanager.setPassThru(true);
       if (log.isDebugEnabled()) {
         log.debug("Finished handling a documentChanged event. Document is "+(client.cdocument==null ? "closed" : "open"));
       }
@@ -126,6 +134,7 @@ public class EventGeneratorThread {
   }
   boolean ownsf = false;
   /**
+   * Moved to SimpleClientSessionManager
    * scans all watchers and fires changeEvents if necessary
    * @return number of events generated.
    */