Ori Liel has uploaded a new change for review. Change subject: restapi: List Possible Enum Values For Bad Input ......................................................................
restapi: List Possible Enum Values For Bad Input Change-Id: I87c0d2cd125ac1f58684ce6b0cbd84e48746d138 Signed-off-by: Ori Liel <[email protected]> --- M backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/EnumValidator.java M backend/manager/modules/restapi/interface/common/jaxrs/src/test/java/org/ovirt/engine/api/common/util/EnumValidatorTest.java 2 files changed, 12 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/7703/1 diff --git a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/EnumValidator.java b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/EnumValidator.java index 25a7ec5..edef281 100644 --- a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/EnumValidator.java +++ b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/EnumValidator.java @@ -66,10 +66,19 @@ try { return Enum.valueOf(clz, toUppercase ? name.toUpperCase() : name); } catch (IllegalArgumentException e) { + detail = detail + getPossibleValues(clz); throw new WebApplicationException(response(reason, MessageFormat.format(detail, name, clz.getSimpleName()))); } } + private static <E extends Enum<E>> String getPossibleValues(Class<E> clz) { + StringBuilder builder = new StringBuilder(". Possible values for " + clz.getSimpleName() + " are:"); + for (E enumValue : clz.getEnumConstants()) { + builder.append(" ").append(enumValue.name().toLowerCase()).append(","); + } + return builder.toString().substring(0, builder.toString().length() - 1); + } + private static Response response(String reason, String detail) { return Response.status(INVALID_ENUM_STATUS).entity(fault(reason, detail)).build(); } diff --git a/backend/manager/modules/restapi/interface/common/jaxrs/src/test/java/org/ovirt/engine/api/common/util/EnumValidatorTest.java b/backend/manager/modules/restapi/interface/common/jaxrs/src/test/java/org/ovirt/engine/api/common/util/EnumValidatorTest.java index 318b7aa..b2a3f64 100644 --- a/backend/manager/modules/restapi/interface/common/jaxrs/src/test/java/org/ovirt/engine/api/common/util/EnumValidatorTest.java +++ b/backend/manager/modules/restapi/interface/common/jaxrs/src/test/java/org/ovirt/engine/api/common/util/EnumValidatorTest.java @@ -47,6 +47,8 @@ Fault fault = (Fault)wae.getResponse().getEntity(); assertNotNull(fault); assertEquals("Invalid value", fault.getReason()); - assertEquals(value + " is not a member of " + typeName, fault.getDetail()); + assertEquals(value + " is not a member of " + typeName + + ". Possible values for State are: new, runnable, blocked, waiting, timed_waiting, terminated", + fault.getDetail()); } } -- To view, visit http://gerrit.ovirt.org/7703 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I87c0d2cd125ac1f58684ce6b0cbd84e48746d138 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ori Liel <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
