private List<String> readMultiParamOrDefaultValue(String key, @Nullable WebService.Param definition) { checkArgument(definition != null, "BUG - parameter '%s' is undefined for action '%s'", key, action.key()); List<String> keyValues = readMultiParam(key); if (!keyValues.isEmpty()) { return keyValues; } String deprecatedKey = definition.deprecatedKey(); List<String> deprecatedKeyValues = deprecatedKey == null ? emptyList() : readMultiParam(deprecatedKey); if (!deprecatedKeyValues.isEmpty()) { return deprecatedKeyValues; } String defaultValue = definition.defaultValue(); return defaultValue == null ? emptyList() : singletonList(defaultValue); }
@CheckForNull @Override public List<String> paramAsStrings(String key) { WebService.Param definition = action.param(key); String value = defaultString(readParam(key, definition), definition.defaultValue()); if (value == null) { return null; } List<String> values = COMMA_SPLITTER.splitToList(value); return validateValues(values, definition); }
@Test public void verify_definition() { WebService.Action action = ws.getDef(); assertThat(action.since()).isEqualTo("6.3"); assertThat(action.isPost()).isFalse(); assertThat(action.isInternal()).isFalse(); assertThat(action.changelog()).extracting(Change::getVersion, Change::getDescription).containsExactlyInAnyOrder( tuple("7.6", "The use of 'BRC' as value for parameter 'qualifiers' is deprecated")); assertThat(action.responseExampleAsString()).isNotEmpty(); assertThat(action.params()).hasSize(6); WebService.Param pageSize = action.param("ps"); assertThat(pageSize.isRequired()).isFalse(); assertThat(pageSize.defaultValue()).isEqualTo("100"); assertThat(pageSize.maximumValue()).isEqualTo(500); assertThat(pageSize.description()).isEqualTo("Page size. Must be greater than 0 and less or equal than 500"); WebService.Param qualifiers = action.param("qualifiers"); assertThat(qualifiers.isRequired()).isTrue(); WebService.Param organization = action.param("organization"); assertThat(organization.isRequired()).isFalse(); assertThat(organization.description()).isEqualTo("Organization key"); assertThat(organization.isInternal()).isTrue(); assertThat(organization.exampleValue()).isEqualTo("my-org"); assertThat(organization.since()).isEqualTo("6.3"); }
@CheckForNull @Override public List<String> paramAsStrings(String key) { WebService.Param definition = action.param(key); String value = defaultString(readParam(key, definition), definition.defaultValue()); if (value == null) { return null; } List<String> values = COMMA_SPLITTER.splitToList(value); return validateValues(values, definition); }
assertThat(sort.defaultValue()).isEqualTo("name"); assertThat(sort.possibleValues()).containsExactlyInAnyOrder( "coverage", assertThat(asc.defaultValue()).isEqualTo("true"); assertThat(asc.possibleValues()).containsOnly("true", "false", "yes", "no"); assertThat(f.defaultValue()).isNull(); assertThat(f.possibleValues()).containsOnly("_all", "organizations", "analysisDate", "leakPeriodDate"); assertThat(facets.defaultValue()).isNull(); assertThat(facets.possibleValues()).containsOnly("ncloc", "duplicated_lines_density", "coverage", "sqale_rating", "reliability_rating", "security_rating", "alert_status", "languages", "tags", "new_reliability_rating", "new_security_rating", "new_maintainability_rating", "new_coverage", "new_duplicated_lines_density", "new_lines");
assertThat(qualifierParam.description()).isEqualTo("Comma-separated list of component qualifiers. Filter the results with the specified qualifiers"); assertThat(qualifierParam.possibleValues()).containsOnly("TRK", "VW", "APP"); assertThat(qualifierParam.defaultValue()).isEqualTo("TRK"); assertThat(pParam.defaultValue()).isEqualTo("1"); assertThat(pParam.description()).isEqualTo("1-based page number"); assertThat(psParam.defaultValue()).isEqualTo("100"); assertThat(psParam.description()).isEqualTo("Page size. Must be greater than 0 and less or equal than 500"); assertThat(onProvisionedOnly.defaultValue()).isEqualTo("false"); assertThat(onProvisionedOnly.since()).isEqualTo("6.6");
assertThat(severityParam.deprecatedKey()).isEqualTo("old-severity"); assertThat(severityParam.deprecatedKeySince()).isEqualTo("4.5"); assertThat(severityParam.defaultValue()).isEqualTo("MAJOR"); assertThat(severityParam.possibleValues()).containsOnly("INFO", "MAJOR", "BLOCKER"); assertThat(severityParam.maxValuesAllowed()).isEqualTo(10); assertThat(action.param("p").defaultValue()).isEqualTo("1"); assertThat(action.param("p").description()).isNotEmpty(); assertThat(action.param("ps").defaultValue()).isEqualTo("20"); assertThat(action.param("ps").description()).isNotEmpty(); assertThat(action.param("f").possibleValues()).containsOnly("name", "severity"); assertThat(action.param("s").possibleValues()).containsOnly("name", "severity", "updatedAt"); assertThat(action.param("s").description()).isNotEmpty(); assertThat(action.param("asc").defaultValue()).isEqualTo("false");
assertThat(organizations.defaultValue()).isNull(); assertThat(organizations.description()).isEqualTo("Comma-separated list of organization keys"); assertThat(organizations.exampleValue()).isEqualTo("my-org-1,foocorp"); assertThat(page.defaultValue()).isEqualTo("1"); assertThat(page.description()).isEqualTo("1-based page number"); assertThat(pageSize.defaultValue()).isEqualTo("100"); assertThat(pageSize.maximumValue()).isEqualTo(500); assertThat(pageSize.description()).isEqualTo("Page size. Must be greater than 0 and less or equal than 500"); assertThat(member.defaultValue()).isEqualTo(String.valueOf(false)); assertThat(member.isRequired()).isFalse();
@Test public void definition() { WebService.Action action = ws.getDef(); assertThat(action.description()).isNotEmpty(); assertThat(action.responseExampleAsString()).isNotEmpty(); assertThat(action.isPost()).isFalse(); assertThat(action.isInternal()).isFalse(); assertThat(action.params()).hasSize(3); WebService.Param query = action.param("q"); assertThat(query).isNotNull(); assertThat(query.isRequired()).isFalse(); assertThat(query.description()).isNotEmpty(); assertThat(query.exampleValue()).isNotEmpty(); WebService.Param pageSize = action.param("ps"); assertThat(pageSize).isNotNull(); assertThat(pageSize.isRequired()).isFalse(); assertThat(pageSize.defaultValue()).isEqualTo("10"); assertThat(pageSize.description()).isNotEmpty(); assertThat(pageSize.exampleValue()).isNotEmpty(); WebService.Param organization = action.param("organization"); assertThat(organization).isNotNull(); assertThat(organization.isRequired()).isFalse(); assertThat(organization.isInternal()).isTrue(); assertThat(organization.description()).isNotEmpty(); assertThat(organization.exampleValue()).isNotEmpty(); assertThat(organization.since()).isEqualTo("6.4"); }
assertThat(defaults.defaultValue()).isEqualTo("false"); assertThat(defaults.description()).isEqualTo("If set to true, return only the quality profiles marked as default for each language");
@Test public void should_define() { Action action = tester.getDef(); assertThat(action.description()).isNotEmpty(); assertThat(action.responseExampleAsString()).isNotEmpty(); assertThat(action.isPost()).isFalse(); assertThat(action.isInternal()).isTrue(); assertThat(action.handler()).isEqualTo(underTest); assertThat(action.params()).hasSize(3); Param query = action.param("componentUuid"); assertThat(query.isRequired()).isTrue(); assertThat(query.description()).isNotEmpty(); assertThat(query.exampleValue()).isNotEmpty(); Param createdAfter = action.param("createdAfter"); assertThat(createdAfter.isRequired()).isFalse(); assertThat(createdAfter.description()).isNotEmpty(); assertThat(createdAfter.exampleValue()).isNotEmpty(); Param pageSize = action.param("ps"); assertThat(pageSize.isRequired()).isFalse(); assertThat(pageSize.defaultValue()).isEqualTo("10"); assertThat(pageSize.description()).isNotEmpty(); assertThat(pageSize.exampleValue()).isNotEmpty(); }
@Test public void param_metadata_as_objects() { ((WebService) context -> { NewController newController = context.createController("api/rule"); NewAction create = newDefaultAction(newController, "create"); create.createParam("status") .setDefaultValue(RuleStatus.BETA) .setPossibleValues(RuleStatus.BETA, RuleStatus.READY) .setExampleValue(RuleStatus.BETA); create.createParam("max") .setDefaultValue(11) .setPossibleValues(11, 13, 17) .setExampleValue(17); newController.done(); }).define(context); WebService.Action action = context.controller("api/rule").action("create"); assertThat(action.param("status").defaultValue()).isEqualTo("BETA"); assertThat(action.param("status").possibleValues()).containsOnly("BETA", "READY"); assertThat(action.param("status").exampleValue()).isEqualTo("BETA"); assertThat(action.param("max").defaultValue()).isEqualTo("11"); assertThat(action.param("max").possibleValues()).containsOnly("11", "13", "17"); assertThat(action.param("max").exampleValue()).isEqualTo("17"); }
@Test public void verify_definition() { WebService.Action action = wsTester.getDef(); assertThat(action.key()).isEqualTo("set_root"); assertThat(action.isInternal()).isTrue(); assertThat(action.isPost()).isTrue(); assertThat(action.since()).isEqualTo("6.2"); assertThat(action.description()).isEqualTo("Make the specified user root.<br/>" + "Requires to be root."); assertThat(action.responseExample()).isNull(); assertThat(action.deprecatedKey()).isNull(); assertThat(action.deprecatedSince()).isNull(); assertThat(action.handler()).isSameAs(underTest); assertThat(action.params()).hasSize(1); WebService.Param param = action.param("login"); assertThat(param.isRequired()).isTrue(); assertThat(param.description()).isEqualTo("A user login"); assertThat(param.defaultValue()).isNull(); assertThat(param.deprecatedSince()).isNull(); assertThat(param.deprecatedKey()).isNull(); assertThat(param.exampleValue()).isEqualTo("admin"); }
@Test public void verify_definition() { WebService.Action action = wsTester.getDef(); assertThat(action.key()).isEqualTo("unset_root"); assertThat(action.isInternal()).isTrue(); assertThat(action.isPost()).isTrue(); assertThat(action.since()).isEqualTo("6.2"); assertThat(action.description()).isEqualTo("Make the specified user not root.<br/>" + "Requires to be root."); assertThat(action.responseExample()).isNull(); assertThat(action.deprecatedKey()).isNull(); assertThat(action.deprecatedSince()).isNull(); assertThat(action.handler()).isSameAs(underTest); assertThat(action.params()).hasSize(1); WebService.Param param = action.param("login"); assertThat(param.isRequired()).isTrue(); assertThat(param.description()).isEqualTo("A user login"); assertThat(param.defaultValue()).isNull(); assertThat(param.deprecatedSince()).isNull(); assertThat(param.deprecatedKey()).isNull(); assertThat(param.exampleValue()).isEqualTo("admin"); }
@Test public void test_definition() { Action action = ws.getDef(); assertThat(action.description()).isNotEmpty(); assertThat(action.responseExampleAsString()).isNotEmpty(); assertThat(action.isPost()).isTrue(); assertThat(action.isInternal()).isFalse(); assertThat(action.params()).hasSize(2); Param query = action.param("issue"); assertThat(query.isRequired()).isTrue(); assertThat(query.description()).isNotEmpty(); assertThat(query.exampleValue()).isNotEmpty(); Param pageSize = action.param("tags"); assertThat(pageSize.isRequired()).isFalse(); assertThat(pageSize.defaultValue()).isNull(); assertThat(pageSize.description()).isNotEmpty(); assertThat(pageSize.exampleValue()).isNotEmpty(); }
@Test public void test_definition() { WebService.Action action = ws.getDef(); assertThat(action.key()).isEqualTo("show"); assertThat(action.responseExampleAsString()).isNotEmpty(); assertThat(action.isPost()).isFalse(); assertThat(action.since()).isEqualTo("6.5"); WebService.Param profile = action.param("key"); assertThat(profile.isRequired()).isTrue(); assertThat(profile.isInternal()).isFalse(); assertThat(profile.description()).isNotEmpty(); WebService.Param compareToSonarWay = action.param("compareToSonarWay"); assertThat(compareToSonarWay.isRequired()).isFalse(); assertThat(compareToSonarWay.isInternal()).isTrue(); assertThat(compareToSonarWay.description()).isNotEmpty(); assertThat(compareToSonarWay.defaultValue()).isEqualTo("false"); assertThat(compareToSonarWay.possibleValues()).contains("true", "false"); }
@Test public void definition() { WebService.Action action = ws.getDef(); assertThat(action.key()).isEqualTo("search_members"); assertThat(action.params()).extracting(Param::key).containsOnly("q", "selected", "p", "ps", "organization"); assertThat(action.description()).isNotEmpty(); assertThat(action.responseExampleAsString()).isNotEmpty(); assertThat(action.since()).isEqualTo("6.4"); assertThat(action.isInternal()).isTrue(); assertThat(action.isPost()).isFalse(); assertThat(action.param("organization").isInternal()).isTrue(); Param selected = action.param("selected"); assertThat(selected.possibleValues()).containsOnly("selected", "deselected"); assertThat(selected.isInternal()).isTrue(); assertThat(selected.defaultValue()).isEqualTo("selected"); assertThat(action.param("ps").maximumValue()).isEqualTo(500); assertThat(action.param("q").minimumLength()).isEqualTo(2); }
@Override @CheckForNull public String param(String key) { WebService.Param definition = action.param(key); String rawValue = readParam(key, definition); String rawValueOrDefault = defaultString(rawValue, definition.defaultValue()); String value = rawValueOrDefault == null ? null : CharMatcher.WHITESPACE.trimFrom(rawValueOrDefault); validateRequiredValue(key, definition, rawValue); if (value == null) { return null; } validatePossibleValues(key, value, definition); validateMaximumLength(key, definition, rawValueOrDefault); validateMinimumLength(key, definition, rawValueOrDefault); validateMaximumValue(key, definition, value); return value; }
private static void writeParam(JsonWriter writer, WebService.Param param) { writer.beginObject(); writer.prop("key", param.key()); writer.prop("description", param.description()); writer.prop("since", param.since()); writer.prop("required", param.isRequired()); writer.prop("internal", param.isInternal()); writer.prop("defaultValue", param.defaultValue()); writer.prop("exampleValue", param.exampleValue()); writer.prop("deprecatedSince", param.deprecatedSince()); writer.prop("deprecatedKey", param.deprecatedKey()); writer.prop("deprecatedKeySince", param.deprecatedKeySince()); writer.prop("maxValuesAllowed", param.maxValuesAllowed()); ofNullable(param.possibleValues()).ifPresent(possibleValues -> writer.name("possibleValues").beginArray().values(possibleValues).endArray()); ofNullable(param.maximumLength()).ifPresent(maximumLength -> writer.prop("maximumLength", maximumLength)); ofNullable(param.minimumLength()).ifPresent(minimumLength -> writer.prop("minimumLength", minimumLength)); ofNullable(param.maximumValue()).ifPresent(maximumValue -> writer.prop("maximumValue", maximumValue)); writer.endObject(); }
@Test public void param_null_metadata() { ((WebService) context -> { NewController newController = context.createController("api/rule"); NewAction create = newDefaultAction(newController, "create"); create.createParam("status") .setDefaultValue(null) .setPossibleValues(Collections.emptyList()) .setExampleValue(null); create.createParam("max") .setPossibleValues((Object[]) null); newController.done(); }).define(context); WebService.Action action = context.controller("api/rule").action("create"); assertThat(action.param("status").defaultValue()).isNull(); assertThat(action.param("status").possibleValues()).isNull(); assertThat(action.param("status").exampleValue()).isNull(); assertThat(action.param("max").possibleValues()).isNull(); }