package com.alibaba.doris.dataserver.action;
import com.alibaba.doris.dataserver.DataServerException;
import com.alibaba.doris.dataserver.action.data.ActionData;
import com.alibaba.doris.dataserver.core.Request;
import com.alibaba.doris.dataserver.core.RequestFilter;
import com.alibaba.doris.dataserver.core.RequestFilterChian;
import com.alibaba.doris.dataserver.core.Response;
/**
* @author ajun Email:jack.yuj@alibaba-inc.com
*/
public class ActionExecutorFilter implements RequestFilter {
public void doFilter(Request request, Response response, RequestFilterChian filterChain) {
ActionData actionData = request.getActionData();
if (null != actionData) {
Action action = ActionFactory.getAction(actionData.getActionType());
if (null == action) {
throw new DataServerException("Couldn't find the action for command :"
+ actionData.getActionType().getName());
}
try {
action.execute(request, response);
} catch (Throwable e) {
ActionExecuteException exception = new ActionExecuteException(e);
exception.setAction(action);
exception.setActionType(actionData.getActionType());
throw exception;
}
} else {
;// ???
}
filterChain.doFilter(request, response);
}
}