package org.jdiameter.server.impl.app.sh; import org.jdiameter.api.app.AppEvent; import org.jdiameter.api.app.StateEvent; public class Event implements StateEvent { enum Type { RECEIVE_USER_DATA_REQUEST, RECEIVE_PROFILE_UPDATE_REQUEST, RECEIVE_SUBSCRIBE_NOTIFICATIONS_REQUEST, RECEIVE_PUSH_NOTIFICATION_ANSWER, SEND_PUSH_NOTIFICATION_REQUEST, SEND_USER_DATA_ANSWER, SEND_PROFILE_UPDATE_ANSWER, SEND_SUBSCRIBE_NOTIFICATIONS_ANSWER, TIMEOUT_EXPIRES, //Add this to allow app to respond, and in case of app error not to leave it behind TX_TIMER_EXPIRED; } Type type; AppEvent request; AppEvent answer; Event(Type type, AppEvent request, AppEvent answer) { this.type = type; this.answer = answer; this.request=request; } public <E> E encodeType(Class<E> eClass) { return eClass == Type.class ? (E) type : null; } public Enum getType() { return type; } public AppEvent getRequest() { return request; } public AppEvent getAnswer() { return answer; } public int compareTo(Object o) { return 0; } public Object getData() { return request != null ? request : answer; } public void setData(Object data) { // FIXME: What should we do here?! Is it request or answer? } }