001/* 002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 * 009 * Contributors: 010 * bstefanescu 011 */ 012package org.nuxeo.ecm.automation.core.events; 013 014import java.util.List; 015 016import org.nuxeo.ecm.core.event.Event; 017import org.nuxeo.ecm.core.event.EventBundle; 018import org.nuxeo.ecm.core.event.PostCommitFilteringEventListener; 019import org.nuxeo.runtime.api.Framework; 020 021/** 022 * @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a> 023 */ 024public class PostCommitOperationEventListener implements PostCommitFilteringEventListener { 025 026 @Override 027 public boolean acceptEvent(Event event) { 028 EventHandlerRegistry registry = Framework.getLocalService(EventHandlerRegistry.class); 029 if (!registry.getPostCommitEventNames().contains(event.getName())) { 030 return false; 031 } 032 List<EventHandler> handlers = registry.getPostCommitEventHandlers(event.getName()); 033 return registry.acceptEvent(event, handlers); 034 } 035 036 @Override 037 public void handleEvent(EventBundle events) { 038 EventHandlerRegistry registry = Framework.getLocalService(EventHandlerRegistry.class); 039 boolean processEvents = false; 040 for (String name : registry.getPostCommitEventNames()) { 041 if (events.containsEventName(name)) { 042 processEvents = true; 043 break; 044 } 045 } 046 if (!processEvents) { 047 return; 048 } 049 for (Event event : events) { 050 List<EventHandler> handlers = registry.getPostCommitEventHandlers(event.getName()); 051 registry.handleEvent(event, handlers, true); 052 } 053 } 054 055}