Search in sources :

Example 1 with InternalEventListener

use of org.apache.jackrabbit.jcr2spi.observation.InternalEventListener in project jackrabbit by apache.

the class WorkspaceManager method onEventReceived.

//--------------------------------------------------------------------------
/**
     * Called when local or external events occurred. This method is called after
     * changes have been applied to the repository.
     *
     * @param eventBundles the event bundles generated by the repository service
     *                     as the effect of an local or external change.
     * @param lstnrs Array of internal event listeners
     * @throws InterruptedException if this thread is interrupted while waiting
     *                              for the {@link #updateSync}.
     */
private void onEventReceived(EventBundle[] eventBundles, InternalEventListener[] lstnrs) throws InterruptedException {
    if (log.isDebugEnabled()) {
        log.debug("received {} event bundles.", eventBundles.length);
        for (EventBundle eventBundle : eventBundles) {
            log.debug("IsLocal:  {}", eventBundle.isLocal());
            for (Iterator<Event> it = eventBundle.getEvents(); it.hasNext(); ) {
                Event e = it.next();
                String type;
                switch(e.getType()) {
                    case Event.NODE_ADDED:
                        type = "NodeAdded";
                        break;
                    case Event.NODE_REMOVED:
                        type = "NodeRemoved";
                        break;
                    case Event.PROPERTY_ADDED:
                        type = "PropertyAdded";
                        break;
                    case Event.PROPERTY_CHANGED:
                        type = "PropertyChanged";
                        break;
                    case Event.PROPERTY_REMOVED:
                        type = "PropertyRemoved";
                        break;
                    case Event.NODE_MOVED:
                        type = "NodeMoved";
                        break;
                    case Event.PERSIST:
                        type = "Persist";
                        break;
                    default:
                        type = "Unknown";
                }
                log.debug("  {}; {}", e.getPath(), type);
            }
        }
    }
    // do not deliver events while an operation executes
    updateSync.acquire();
    try {
        // notify listener
        for (EventBundle eventBundle : eventBundles) {
            for (InternalEventListener lstnr : lstnrs) {
                try {
                    lstnr.onEvent(eventBundle);
                } catch (Exception e) {
                    log.warn("Exception in event polling thread: " + e);
                    log.debug("Dump:", e);
                }
            }
        }
    } finally {
        updateSync.release();
    }
}
Also used : InternalEventListener(org.apache.jackrabbit.jcr2spi.observation.InternalEventListener) Event(org.apache.jackrabbit.spi.Event) EventBundle(org.apache.jackrabbit.spi.EventBundle) ItemExistsException(javax.jcr.ItemExistsException) NoSuchWorkspaceException(javax.jcr.NoSuchWorkspaceException) ItemNotFoundException(javax.jcr.ItemNotFoundException) AccessDeniedException(javax.jcr.AccessDeniedException) PathNotFoundException(javax.jcr.PathNotFoundException) LockException(javax.jcr.lock.LockException) NoSuchNodeTypeException(javax.jcr.nodetype.NoSuchNodeTypeException) InvalidQueryException(javax.jcr.query.InvalidQueryException) ConstraintViolationException(javax.jcr.nodetype.ConstraintViolationException) VersionException(javax.jcr.version.VersionException) InvalidItemStateException(javax.jcr.InvalidItemStateException) ReferentialIntegrityException(javax.jcr.ReferentialIntegrityException) RepositoryException(javax.jcr.RepositoryException) MergeException(javax.jcr.MergeException) NamespaceException(javax.jcr.NamespaceException) UnsupportedRepositoryOperationException(javax.jcr.UnsupportedRepositoryOperationException)

Aggregations

AccessDeniedException (javax.jcr.AccessDeniedException)1 InvalidItemStateException (javax.jcr.InvalidItemStateException)1 ItemExistsException (javax.jcr.ItemExistsException)1 ItemNotFoundException (javax.jcr.ItemNotFoundException)1 MergeException (javax.jcr.MergeException)1 NamespaceException (javax.jcr.NamespaceException)1 NoSuchWorkspaceException (javax.jcr.NoSuchWorkspaceException)1 PathNotFoundException (javax.jcr.PathNotFoundException)1 ReferentialIntegrityException (javax.jcr.ReferentialIntegrityException)1 RepositoryException (javax.jcr.RepositoryException)1 UnsupportedRepositoryOperationException (javax.jcr.UnsupportedRepositoryOperationException)1 LockException (javax.jcr.lock.LockException)1 ConstraintViolationException (javax.jcr.nodetype.ConstraintViolationException)1 NoSuchNodeTypeException (javax.jcr.nodetype.NoSuchNodeTypeException)1 InvalidQueryException (javax.jcr.query.InvalidQueryException)1 VersionException (javax.jcr.version.VersionException)1 InternalEventListener (org.apache.jackrabbit.jcr2spi.observation.InternalEventListener)1 Event (org.apache.jackrabbit.spi.Event)1 EventBundle (org.apache.jackrabbit.spi.EventBundle)1