use of com.tvd12.ezyfoxserver.support.exception.EzyUserRequestException in project ezyfox-server by youngmonkeys.
the class EzyUserRequestSingletonController method handle.
public void handle(C context, E event) {
EzyArray data = event.getData();
String cmd = data.get(0, String.class);
EzyUserRequestHandler handler = requestHandlers.get(cmd);
if (handler == null) {
prototypeController.handle(context, event);
return;
}
Object handlerData = data.get(1, EzyData.class, null);
Class requestDataType = handler.getDataType();
if (requestDataType != null) {
handlerData = unmarshaller.unmarshal(handlerData, requestDataType);
}
try {
preHandle(context, event, cmd, handlerData);
handler.handle(context, event, handlerData);
postHandle(context, event, cmd, handlerData);
} catch (Exception e) {
postHandle(context, event, cmd, handlerData, e);
if (e instanceof EzyBadRequestException) {
EzyBadRequestException ex = (EzyBadRequestException) e;
if (ex.isSendToClient()) {
EzyData errorData = newErrorData(ex);
responseError(context, event, errorData);
}
logger.debug("request cmd: {} by session: {} with data: {} error", cmd, event.getSession().getName(), data, e);
} else {
EzyUncaughtExceptionHandler exceptionHandler = getExceptionHandler(e.getClass());
if (exceptionHandler == null) {
throw new EzyUserRequestException(cmd, handlerData, e);
}
try {
exceptionHandler.handleException(context, event, cmd, handlerData, e);
} catch (Exception ex) {
throw new EzyUserRequestException(cmd, handlerData, ex);
}
}
}
}
Aggregations