private void executeAction(
      String action, HttpServletRequest request, ResponsePayload responsePayload)
      throws AWInvalidParameterException, AWNoSuchEntityException, AWInvalidResourceIdException {
    Object payload = ServletUtils.getNoResponsePayload();
    boolean includeMetadata = ServletUtils.getIncludeMetadataParameter(request);
    Integer offset = ServletUtils.getOffsetParameter(request);
    Integer limit = ServletUtils.getLimitParameter(request);

    switch (action) {
      case ServletConstants.REQ_PARAM_SELECT_ACTION_ALL:
        ValidatorUtils.validateRequest(
            ServletUtils.getPagingRequestParams(offset, limit), responsePayload, mRequestValidator);

        if (!responsePayload.hasErrors()) {
          payload = mFactorController.getFactors(offset, limit, responsePayload, includeMetadata);
        }
        break;
      case ServletConstants.REQ_PARAM_SELECT_ACTION_SEL_ID:
        Long factorId =
            ServletUtils.getParseResourceId(ServletUtils.getSelectEntityIdParameter(request));
        payload = mFactorController.getFactor(factorId);
        break;
      case ServletConstants.REQ_PARAM_SELECT_ACTION_LIKE:
        String like = ServletUtils.getSelectLikeParameter(request);
        ValidatorUtils.validateRequest(
            ServletUtils.getPagingRequestParams(offset, limit), responsePayload, mRequestValidator);

        if (!responsePayload.hasErrors()) {
          payload =
              mFactorController.getFactorsLike(
                  like, offset, limit, responsePayload, includeMetadata);
        }
        break;
      default:
        payload = ServletUtils.getNoResponsePayload();
        break;
    }

    responsePayload.setData(payload);
  }