@Override public void addEventListener(EventListenerDescriptor listener) { listenerDescriptors.add(listener); log.debug("Registered event listener: " + listener.getName()); }
@Override public List<PostCommitEventListener> getPostCommitEventListeners() { List<PostCommitEventListener> result = new ArrayList<>(); result.addAll(listenerDescriptors.getSyncPostCommitListeners()); result.addAll(listenerDescriptors.getAsyncPostCommitListeners()); return result; }
protected EventListenerDescriptor mergeDescriptor(EventListenerDescriptor descriptor) { EventListenerDescriptor existingDesc = getDescriptor(descriptor.getName()); removeDescriptor(existingDesc); existingDesc.merge(descriptor); return existingDesc; }
@Override public void setListenerEnabledFlag(String listenerName, boolean enabled) { if (!listenerDescriptors.hasListener(listenerName)) { return; for (EventListenerDescriptor desc : listenerDescriptors.getAsyncPostCommitListenersDescriptors()) { if (desc.getName().equals(listenerName)) { desc.setEnabled(enabled); synchronized (this) { listenerDescriptors.recomputeEnabledListeners(); for (EventListenerDescriptor desc : listenerDescriptors.getSyncPostCommitListenersDescriptors()) { if (desc.getName().equals(listenerName)) { desc.setEnabled(enabled); synchronized (this) { listenerDescriptors.recomputeEnabledListeners(); for (EventListenerDescriptor desc : listenerDescriptors.getInlineListenersDescriptors()) { if (desc.getName().equals(listenerName)) { desc.setEnabled(enabled); synchronized (this) { listenerDescriptors.recomputeEnabledListeners();
@Override public void fireEventBundleSync(EventBundle event) { for (EventListenerDescriptor desc : listenerDescriptors.getEnabledSyncPostCommitListenersDescriptors()) { desc.asPostCommitListener().handleEvent(event); } for (EventListenerDescriptor desc : listenerDescriptors.getEnabledAsyncPostCommitListenersDescriptors()) { desc.asPostCommitListener().handleEvent(event); } }
public void add(EventListenerDescriptor descriptor) { flushCache(); // merge if necessary if (descriptors.containsKey(descriptor.getName())) { descriptor = mergeDescriptor(descriptor); } // checkListener descriptor.initListener(); if (descriptor.isPostCommit) { if (descriptor.getIsAsync()) { asyncPostCommitListenersDescriptors.add(descriptor); Collections.sort(asyncPostCommitListenersDescriptors, new EventListenerDescriptorComparator()); } else { syncPostCommitListenersDescriptors.add(descriptor); Collections.sort(syncPostCommitListenersDescriptors, new EventListenerDescriptorComparator()); } } else { inlineListenersDescriptors.add(descriptor); Collections.sort(inlineListenersDescriptors, new EventListenerDescriptorComparator()); } descriptors.put(descriptor.getName(), descriptor); }
public List<PostCommitEventListener> getAsyncPostCommitListeners() { List<PostCommitEventListener> listeners = new ArrayList<PostCommitEventListener>(); for (EventListenerDescriptor desc : getEnabledAsyncPostCommitListenersDescriptors()) { listeners.add(desc.asPostCommitListener()); } return listeners; }
public List<EventListener> getInLineListeners() { List<EventListener> listeners = new ArrayList<EventListener>(); for (EventListenerDescriptor desc : getEnabledInlineListenersDescriptors()) { listeners.add(desc.asEventListener()); } return listeners; }
@Override public EventListenerDescriptor getEventListener(String name) { return listenerDescriptors.getDescriptor(name); }
@Override public List<EventListener> getEventListeners() { return listenerDescriptors.getInLineListeners(); }
public List<PostCommitEventListener> getSyncPostCommitListeners() { List<PostCommitEventListener> listeners = new ArrayList<PostCommitEventListener>(); for (EventListenerDescriptor desc : getEnabledSyncPostCommitListenersDescriptors()) { listeners.add(desc.asPostCommitListener()); } return listeners; }
public void removeDescriptor(EventListenerDescriptor descriptor) { flushCache(); if (descriptors.containsKey(descriptor.getName())) { if (descriptor.isPostCommit) { if (descriptor.getIsAsync()) { asyncPostCommitListenersDescriptors.remove(descriptor); } else { syncPostCommitListenersDescriptors.remove(descriptor); } } else { inlineListenersDescriptors.remove(descriptor); } descriptors.remove(descriptor.getName()); } }
public EventServiceImpl() { listenerDescriptors = new EventListenerList(); postCommitExec = new PostCommitEventExecutor(); asyncExec = new AsyncEventExecutor(); }
@Override public void fireEventBundle(EventBundle event) { List<EventListenerDescriptor> postCommitSync = listenerDescriptors.getEnabledSyncPostCommitListenersDescriptors(); List<EventListenerDescriptor> postCommitAsync = listenerDescriptors.getEnabledAsyncPostCommitListenersDescriptors();
@Override protected boolean processEventBundles(List<EventBundle> bundles) { EventServiceAdmin eventService = Framework.getService(EventServiceAdmin.class);// EventListenerList listeners = eventService.getListenerList(); List<EventListenerDescriptor> postCommitAsync = listeners.getEnabledAsyncPostCommitListenersDescriptors(); // could introduce bulk mode for EventListeners for (EventBundle eventBundle : bundles) { asyncExec.run(postCommitAsync, eventBundle); } return true; }
for (EventListenerDescriptor desc : listenerDescriptors.getEnabledInlineListenersDescriptors()) { if (!desc.acceptEvent(ename)) { continue;