@VisibleForTesting
  DefaultIssueFilter createIssueFilterResult(
      Map<String, String> params, boolean checkId, boolean checkUser) {
    String id = params.get(ID_PARAM);
    String name = params.get(NAME_PARAM);
    String description = params.get(DESCRIPTION_PARAM);
    String data = params.get("data");
    String user = params.get(USER_PARAM);
    Boolean sharedParam = RubyUtils.toBoolean(params.get("shared"));
    boolean shared = sharedParam != null ? sharedParam : false;

    if (checkId) {
      Validation.checkMandatoryParameter(id, ID_PARAM);
    }
    if (checkUser) {
      Validation.checkMandatoryParameter(user, USER_PARAM);
    }
    Validation.checkMandatorySizeParameter(name, NAME_PARAM, 100);
    checkOptionalSizeParameter(description, DESCRIPTION_PARAM, 4000);

    DefaultIssueFilter defaultIssueFilter =
        DefaultIssueFilter.create(name)
            .setDescription(description)
            .setShared(shared)
            .setUser(user)
            .setData(data);
    if (!Strings.isNullOrEmpty(id)) {
      defaultIssueFilter.setId(Long.valueOf(id));
    }
    return defaultIssueFilter;
  }
 static ComponentQuery toQuery(Map<String, Object> props) {
   ComponentQuery.Builder builder =
       ComponentQuery.builder()
           .keys(RubyUtils.toStrings(props.get("keys")))
           .names(RubyUtils.toStrings(props.get("names")))
           .qualifiers(RubyUtils.toStrings(props.get("qualifiers")))
           .pageSize(RubyUtils.toInteger(props.get("pageSize")))
           .pageIndex(RubyUtils.toInteger(props.get("pageIndex")));
   String sort = (String) props.get("sort");
   if (!Strings.isNullOrEmpty(sort)) {
     builder.sort(sort);
     builder.asc(RubyUtils.toBoolean(props.get("asc")));
   }
   return builder.build();
 }