package testapp.endpoint;
import act.controller.Controller;
import act.event.EventBus;
import act.event.SimpleEventListener;
import org.osgl.exception.UnexpectedException;
import org.osgl.mvc.annotation.GetAction;
import javax.inject.Singleton;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import static testapp.endpoint.SimpleEventListenerMarkerTestBed.MyEvent.USER_LOGGED_IN;
/**
* Support {@link act.event.SimpleEventListener.Marker} test
*/
@Singleton
public class SimpleEventListenerMarkerTestBed extends Controller.Util {
public enum MyEvent {
USER_LOGGED_IN,
USER_SIGNED_UP
}
@SimpleEventListener.Marker
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface OnMyEvent {
MyEvent value();
}
private MyEvent eventReceived;
@OnMyEvent(USER_LOGGED_IN)
public void userLoggedIn() {
eventReceived = USER_LOGGED_IN;
}
@GetAction("/event/custom_marker")
public void test(EventBus eventBus) {
eventReceived = null;
eventBus.trigger(USER_LOGGED_IN);
if (USER_LOGGED_IN == eventReceived) {
ok();
}
throw new UnexpectedException("failed");
}
}