public static <E extends Enum<E>> E validateEnum(Class<E> clz, String name) { return validateEnum(INVALID_ENUM_REASON, INVALID_ENUM_DETAIL, clz, name); }
private static Response response(String reason, String detail) { return Response.status(INVALID_ENUM_STATUS).entity(fault(reason, detail)).build(); }
public static <E extends Enum<E>> E validateEnum(String reason, String detail, Class<E> clz, String name) { try { return Enum.valueOf(clz, name); } catch (IllegalArgumentException e) { throw new WebApplicationException(response(reason, MessageFormat.format(detail, name, clz.getSimpleName()))); } }
validateParameters(dataCenter, "name", "storageType"); StorageType storageType = validateEnum(StorageType.class, dataCenter.getStorageType().toUpperCase());
validateParameters(action, "fenceType"); FenceType type = validateEnum(FenceType.class, action.getFenceType().toUpperCase());
StorageDomainType storageDomainType = validateEnum(StorageDomainType.class, storageDomain.getType().toUpperCase());
private StorageType validateAddParameters(StorageDomain storageDomain) { validateParameters(storageDomain, "host.id|name", "type", "storage.type"); Storage storage = storageDomain.getStorage(); StorageType storageType = validateEnum(StorageType.class, storage.getType().toUpperCase()); switch (storageType) { case NFS: validateParameters(storage, "address", "path"); break; case ISCSI: case FCP: // REVISIT: validate that a logical unit or volume group supplied for (LogicalUnit lu : storage.getLogicalUnits()) { validateParameters(lu, "id"); } if (storage.isSetVolumeGroup()) { validateParameters(storage.getVolumeGroup(), "id"); } break; default: assert false : storageType; break; } return storageType; }