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

Reply via email to