- public void onEvent(final EventIterator events) {
- Job job = new Job("JCR Events") {
- protected IStatus run(IProgressMonitor monitor) {
- //Display display = Display.getCurrent();
- //Display display = PlatformUI.getWorkbench().getDisplay();
+ /**
+ * Whether these events should be processed in the UI or skipped with no UI
+ * job created.
+ */
+ protected Boolean willProcessInUiThread(List<Event> events)
+ throws RepositoryException {
+ return true;
+ }
+
+ protected Log getLog() {
+ return logThis;
+ }
+
+ public final void onEvent(final EventIterator eventIterator) {
+ final List<Event> events = new ArrayList<Event>();
+ while (eventIterator.hasNext())
+ events.add(eventIterator.nextEvent());
+
+ if (logThis.isTraceEnabled())
+ logThis.trace("Received " + events.size() + " events");
+
+ try {
+ if (!willProcessInUiThread(events))
+ return;
+ } catch (RepositoryException e) {
+ throw new ArgeoException("Cannot test skip events " + events, e);
+ }
+
+// Job job = new Job("JCR Events") {
+// protected IStatus run(IProgressMonitor monitor) {
+// if (display.isDisposed()) {
+// logSuper.warn("Display is disposed cannot update UI");
+// return Status.CANCEL_STATUS;
+// }