/
area/
classes/net/sourceforge/pain/logic/
classes/net/sourceforge/pain/logic/event/
classes/net/sourceforge/pain/logic/fn/util/
classes/net/sourceforge/pain/network/console/
classes/net/sourceforge/pain/plugin/
classes/net/sourceforge/pain/plugin/reset/
classes/net/sourceforge/pain/plugin/shutdown/
classes/net/sourceforge/pain/plugin/social/
classest/net/sourceforge/pain/db/data/
doc/
doc/paindb/resources/
src/net/sourceforge/pain/logic/
src/net/sourceforge/pain/logic/event/
src/net/sourceforge/pain/logic/fn/util/
src/net/sourceforge/pain/network/console/
src/net/sourceforge/pain/network/console/telnet/
src/net/sourceforge/pain/plugin/
src/net/sourceforge/pain/plugin/command/
src/net/sourceforge/pain/plugin/reset/
src/net/sourceforge/pain/plugin/shutdown/
src/net/sourceforge/pain/plugin/social/
src/net/sourceforge/pain/util/
tests/
tests/net/sourceforge/pain/db/data/
package net.sourceforge.pain.logic;

import net.sourceforge.pain.*;
import net.sourceforge.pain.db.*;

/**
 * AbstractEvent is a base class for any Event, this class is a first reloadable class in Events hierarchy
 */
public abstract class AbstractEvent implements Event {

	public Object processEvent(final Object param) throws Exception {
		final DbTransaction t = new DbTransaction() {
			public Object execute(Object[] params) throws Exception {
				return AbstractEvent.this.execute(param);
			}
		};
		Core.getDB().execute(t);
		return null;
	}

	public AbstractEvent() {
		// debug check
		ClassLoader loader = Core.getLogicLoader().getActiveClassLoader();
		if (loader != getClass().getClassLoader()) {
			throw new RuntimeException("BUG: all Act subclasses MUST be loaded via Core.createAct() method!");
		}
	}

	public abstract Object execute(Object param) throws Exception;

}