/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 2010 Heng Sin Low *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
*****************************************************************************/
package org.adempiere.base.event;
import org.adempiere.base.event.annotations.BaseEventHandler;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
/**
* Interface for global event manager
* @author hengsin
*/
public interface IEventManager {
public static final String EVENT_CONTEXT = "event.context";
public static final String EVENT_DATA = "event.data";
public static final String EVENT_ERROR_MESSAGES = "event.errorMessages";
public static final String IMPORT_TABLE_NAME_PROPERTY = "importTableName";
public static final String TABLE_NAME_PROPERTY = "tableName";
public static final String PROCESS_UID_PROPERTY = "processUUID";
public static final String CLASS_NAME_PROPERTY = "className";
public static final String PROCESS_CLASS_NAME_PROPERTY = "processClassName";
/**
* Initiate asynchronous delivery of an event. This method returns to the
* caller before delivery of the event is completed.
*
* @param event The event to send to all listeners which subscribe to the
* topic of the event.
*
* @throws SecurityException If the caller does not have
* TopicPermission[topic,PUBLISH] for the topic
* specified in the event.
*/
public abstract boolean postEvent(Event event);
/**
* Initiate synchronous delivery of an event. This method does not return to
* the caller until delivery of the event is completed.
*
* @param event The event to send to all listeners which subscribe to the
* topic of the event.
*
* @throws SecurityException If the caller does not have
* TopicPermission[topic,PUBLISH] for the topic
* specified in the event.
*/
public abstract boolean sendEvent(Event event);
/**
* register a new event handler
* @param topic
* @param eventHandler
* @return true if registration is successful, false otherwise
*/
public abstract boolean register(String topic, EventHandler eventHandler);
/**
* register a new event handler
* @param topics
* @param eventHandler
* @return true if registration is successful, false otherwise
*/
public abstract boolean register(String[] topics, EventHandler eventHandler);
/**
* register a new event handler
* @param topic
* @param filter
* @param eventHandler
* @return true if registration is successful, false otherwise
*/
public abstract boolean register(String topic, String filter,
EventHandler eventHandler);
/**
* register a new event handler
* @param topics
* @param filter
* @param eventHandler
* @return true if registration is successful, false otherwise
*/
public abstract boolean register(String[] topics, String filter,
EventHandler eventHandler);
/**
* un-register an event handler
* @param eventHandler
* @return true if unregistration is done, false otherwise
*/
public abstract boolean unregister(EventHandler eventHandler);
/**
*
* @param eventHandler
* @return
*/
public default boolean register(BaseEventHandler eventHandler) {
return register(eventHandler.getTopics(), eventHandler.getFilter(), eventHandler);
}
}