예제 #1
0
  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());
  }
예제 #2
0
 public List<PostCommitEventListener> getAsyncPostCommitListeners() {
   List<PostCommitEventListener> listeners = new ArrayList<PostCommitEventListener>();
   for (EventListenerDescriptor desc : getEnabledAsyncPostCommitListenersDescriptors()) {
     listeners.add(desc.asPostCommitListener());
   }
   return listeners;
 }
예제 #3
0
 public List<EventListener> getInLineListeners() {
   List<EventListener> listeners = new ArrayList<EventListener>();
   for (EventListenerDescriptor desc : getEnabledInlineListenersDescriptors()) {
     listeners.add(desc.asEventListener());
   }
   return listeners;
 }
예제 #4
0
 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());
   }
 }
예제 #5
0
 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;
 }
예제 #6
0
 protected EventListenerDescriptor mergeDescriptor(EventListenerDescriptor descriptor) {
   EventListenerDescriptor existingDesc = getDescriptor(descriptor.getName());
   removeDescriptor(existingDesc);
   existingDesc.merge(descriptor);
   return existingDesc;
 }