public void notifyListeners(InstanceEvent event) { if (event.getType() == InstanceEventType.INSTANCE_ABOUT_TO_TRANSITION) { fireInstanceAboutToTransition(event); } else { eventsToFire.add(event); synchronized (eventsToFire) { eventsToFire.notify(); } } }
public void run() { while (InstanceEventManager.this.isListenerAttached()) { if (eventsToFire != null) { if (eventsToFire.isEmpty()) { synchronized (eventsToFire) { try { eventsToFire.wait(); } catch (InterruptedException e) { } } } if (!eventsToFire.isEmpty()) { InstanceEvent[] array = eventsToFire.toArray(new InstanceEvent[eventsToFire.size()]); InstanceEvent e = array[0]; switch (e.getType()) { case INSTANCE_CREATED: fireInstanceCreated(e); break; case INSTANCE_DELETED: fireInstanceDeleted(e); break; case INSTANCE_LOADED: fireInstanceLoaded(e); break; case INSTANCE_UNLOADED: fireInstanceUnloaded(e); break; case INSTANCE_UPDATED: fireInstanceUpdated(e); break; case INSTANCE_TRANSITIONED: fireInstanceTransitioned(e); break; } eventsToFire.remove(e); } } } }