Java tutorial
/******************************************************************************* * Copyright (c) 2014 Emerson Loureiro. * * All rights reserved. This program and the accompanying materials are made * available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html. * * Contributors: * Emerson Loureiro - initial API, implementation, and documentation *******************************************************************************/ package cf.janga.javafire.eventing.core; import java.lang.reflect.Method; import org.apache.commons.lang.UnhandledException; import cf.janga.javafire.annotations.Event.DuplicateResolution; import cf.janga.javafire.eventing.utils.EventingUtils; /** * Default implementation of {@link Event}. * * @author Emerson Loureiro */ class EventImpl implements Event { private final Object event; private final Method eventKeyMethod; public EventImpl(Object event) { this.event = event; this.eventKeyMethod = EventingUtils.getEventKeyMethods(this.event.getClass()).get(0); } @Override public String getKey() { try { return (String) this.eventKeyMethod.invoke(this.event); } catch (Exception e) { throw new UnhandledException("Error getting key for event " + this.event.getClass(), e); } } @Override public boolean isLastEventWins() { return EventingUtils.getEventAnnotation(this.event.getClass()) .duplicateResolution() == DuplicateResolution.LAST_WINS; } @Override public Object getWrappedEvent() { return this.event; } @Override public String getId() { return getKey() + "-" + this.event.getClass().getName(); } }