class Dispatcher {
public void run() {
while (dispatch) {
try {
ResourceEvent event = queue.getNextEvent();
if (queue.debug)
System.out.println("[QUEUE] : getNextEvent()");
Object src = event.getSource();
ResourceReference rr = null;
try {
FramedResource source = null;
if (src instanceof ResourceReference) {
rr = (ResourceReference)src;
Resource res = rr.lock();
if (res instanceof FramedResource)
source = (FramedResource) res;
else
source = null;
} else if (src instanceof FramedResource) {
source = (FramedResource) src;
}
if (source != null) {
if (queue.debug)
System.out.println("[QUEUE] : processEvent "+
event);
source.processEvent(event);
}
} catch (InvalidResourceException ex) {
if (queue.debug) {
System.err.println("Exception occurred "+
"in EventDispatcher:");
ex.printStackTrace();
}
} finally {
if (rr != null)
rr.unlock();
}
} catch (ThreadDeath death) {
return;
} catch (Throwable e) {
if (queue.debug) {
System.err.println("Exception occurred "+
"during event dispatching:");
e.printStackTrace();
}
}
}
}
}
|