public EventServiceImpl() { listenerDescriptors = new EventListenerList(); postCommitExec = new PostCommitEventExecutor(); asyncExec = new AsyncEventExecutor(); }
protected EventListenerDescriptor mergeDescriptor(EventListenerDescriptor descriptor) { EventListenerDescriptor existingDesc = getDescriptor(descriptor.getName()); removeDescriptor(existingDesc); existingDesc.merge(descriptor); return existingDesc; }
@Override public void setProperties(Map<String, Serializable> properties) { // preserve Category/Comment from transparent override String comment = getComment(); String category = getCategory(); super.setProperties(properties); if (getComment() == null) { setComment(comment); } if (getCategory() == null) { setCategory(category); } }
public String getCategory() { Serializable data = getProperty(CATEGORY_PROPERTY_KEY); if (data instanceof String) { return (String) data; } return null; }
@Override public Event newEvent(String name, int flags) { return new EventImpl(name, this, flags); }
@Override public void fireEventBundleSync(EventBundle event) { for (EventListenerDescriptor desc : listenerDescriptors.getEnabledSyncPostCommitListenersDescriptors()) { desc.asPostCommitListener().handleEvent(event); } for (EventListenerDescriptor desc : listenerDescriptors.getEnabledAsyncPostCommitListenersDescriptors()) { desc.asPostCommitListener().handleEvent(event); } }
private void scheduleListeners(final List<EventListenerDescriptor> listeners, EventBundle bundle) { for (EventListenerDescriptor listener : listeners) { EventBundle filtered = listener.filterBundle(bundle); if (filtered.isEmpty()) { continue; } // This may be called in a transaction if event.isCommitEvent() is true or at transaction commit // in other cases. If the transaction has been marked rollback-only, then scheduling must discard // so we schedule "after commit" getWorkManager().schedule(new ListenerWork(listener, filtered), true); } }
@Override public void removeEventListener(EventListenerDescriptor listener) { listenerDescriptors.removeDescriptor(listener); log.debug("Unregistered event listener: " + listener.getName()); }
@Override public void setCoreSession(CoreSession session) { this.session = session; updateRepositoryName(); }
public InlineEventContext(CoreSession session, NuxeoPrincipal principal, Map<String, Serializable> properties) { super(session, principal); setProperties(properties); boundToCoreSession = session != null; }
@Override public Event newEvent(String name) { int flags = boundToCoreSession ? Event.FLAG_NONE : Event.FLAG_INLINE; return newEvent(name, flags); }
public UnboundEventContext(CoreSession session, NuxeoPrincipal principal, Map<String, Serializable> properties) { super(session, principal); setProperties(properties); boundToCoreSession = session != null; }
@Override protected CompositeEventBundle initialValue() { return new CompositeEventBundle(); } };
@Override public boolean waitForCompletion(long timeoutMillis) throws InterruptedException { return asyncExec.waitForCompletion(timeoutMillis); } }
@Override public int getActiveThreadsCount() { return asyncExec.getActiveCount(); }
@Override public Event newEvent(String name) { int flags = boundToCoreSession ? Event.FLAG_NONE : Event.FLAG_IMMEDIATE; return newEvent(name, flags); }
public String getComment() { Serializable data = getProperty(COMMENT_PROPERTY_KEY); if (data instanceof String) { return (String) data; } return null; }
public EventContextImpl(CoreSession session, NuxeoPrincipal principal) { this.session = session; this.principal = principal; args = EMPTY; updateRepositoryName(); }