package org.zstack.search; import org.zstack.header.apimediator.ApiMessageInterceptionException; import org.zstack.header.apimediator.GlobalApiMessageInterceptor; import org.zstack.header.errorcode.ErrorCode; import org.zstack.header.message.APIMessage; import org.zstack.header.search.APISearchMessage; import org.zstack.header.search.APISearchMessage.NOLTriple; import org.zstack.header.search.APISearchMessage.NOVTriple; import org.zstack.header.search.SearchOp; import org.zstack.utils.Utils; import org.zstack.utils.logging.CLogger; import java.util.List; public class SearchMsgValidator implements GlobalApiMessageInterceptor { private static final CLogger logger = Utils.getLogger(SearchMsgValidator.class); @Override public APIMessage intercept(APIMessage msg) throws ApiMessageInterceptionException{ if (msg instanceof APISearchMessage) { APISearchMessage smsg = (APISearchMessage)msg; try { for (NOLTriple t : smsg.getNameOpListTriples()) { SearchOp.valueOf(t.getOp()); } for (NOVTriple t : smsg.getNameOpValueTriples()) { SearchOp.valueOf(t.getOp()); } } catch (IllegalArgumentException e) { logger.warn("", e); //ErrorCode err = ErrorCodeFacade.generateErrorCode(ErrorCodeFacade.BuiltinErrors.INVALID_ARGRUMENT.toString(), e.getMessage()); throw new ApiMessageInterceptionException(new ErrorCode()); } } return msg; } @Override public List<Class> getMessageClassToIntercept() { return null; } @Override public InterceptorPosition getPosition() { return InterceptorPosition.FRONT; } }