public void add(EventListenerDescriptor descriptor) throws Exception { enabledFilteringDone = false; // merge if necessary if (listenerNames.contains(descriptor.getName())) { descriptor = mergeDescriptor(descriptor); } // checkListener descriptor.initListener(); if (descriptor.isPostCommit) { if (descriptor.isAsync) { 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()); } listenerNames.add(descriptor.getName()); }
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; }
public void removeDescriptor(EventListenerDescriptor descriptor) { enabledFilteringDone = false; if (listenerNames.contains(descriptor.getName())) { if (descriptor.isPostCommit) { if (descriptor.isAsync) { asyncPostCommitListenersDescriptors.remove(descriptor); } else { syncPostCommitListenersDescriptors.remove(descriptor); } } else { inlineListenersDescriptors.remove(descriptor); } listenerNames.remove(descriptor.getName()); } }
public EventListenerDescriptor getDescriptor(String listenerName) { if (!listenerNames.contains(listenerName)) { return null; } for (EventListenerDescriptor desc : inlineListenersDescriptors) { if (desc.getName().equals(listenerName)) { return desc; } } for (EventListenerDescriptor desc : syncPostCommitListenersDescriptors) { if (desc.getName().equals(listenerName)) { return desc; } } for (EventListenerDescriptor desc : asyncPostCommitListenersDescriptors) { if (desc.getName().equals(listenerName)) { return desc; } } return null; }
protected EventListenerDescriptor mergeDescriptor(EventListenerDescriptor descriptor) { EventListenerDescriptor existingDesc = getDescriptor(descriptor.getName()); removeDescriptor(existingDesc); existingDesc.merge(descriptor); return existingDesc; }