@Override
public ClusterCreateRequest deserialize(JsonElement json, Type type, JsonDeserializationContext context)
throws JsonParseException {
JsonObject jsonObj = json.getAsJsonObject();
return ClusterCreateRequest.builder()
.setName(context.<String>deserialize(jsonObj.get("name"), String.class))
.setDescription(context.<String>deserialize(jsonObj.get("description"), String.class))
.setClusterTemplateName(context.<String>deserialize(jsonObj.get("clusterTemplate"), String.class))
.setNumMachines(context.<Integer>deserialize(jsonObj.get("numMachines"), Integer.class))
.setProviderName(context.<String>deserialize(jsonObj.get("provider"), String.class))
.setHardwareTypeName(context.<String>deserialize(jsonObj.get("hardwaretype"), String.class))
.setImageTypeName(context.<String>deserialize(jsonObj.get("imagetype"), String.class))
.setInitialLeaseDuration(context.<Long>deserialize(jsonObj.get("initialLeaseDuration"), Long.class))
.setDNSSuffix(context.<String>deserialize(jsonObj.get("dnsSuffix"), String.class))
.setConfig(context.<JsonObject>deserialize(jsonObj.get("config"), JsonObject.class))
.setServiceNames(context.<Set<String>>deserialize(
jsonObj.get("services"), new TypeToken<Set<String>>() { }.getType()))
.setProviderFields(context.<Map<String, Object>>deserialize(
jsonObj.get("providerFields"), new TypeToken<Map<String, Object>>() { }.getType()))
.build();
}
}