From 6285c063f2fbf1bb2ebc3e51abd7290587bbf9fd Mon Sep 17 00:00:00 2001 From: Pierre Delagrave Date: Wed, 26 Jun 2019 11:59:50 -0400 Subject: [PATCH] fix(cf): Task and CreateTask JSON deserialization issues (#3818) * fix(cf): Task and CreateTask JSON deserialization issues * Using a builder for consistency --- .../clouddriver/cloudfoundry/client/Tasks.java | 2 +- .../client/model/v3/CreateTask.java | 12 ++++++++++-- .../cloudfoundry/client/model/v3/Task.java | 18 +++++++++++++----- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/Tasks.java b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/Tasks.java index 5c67b46e5b9..4e15172fc03 100644 --- a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/Tasks.java +++ b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/Tasks.java @@ -28,7 +28,7 @@ public class Tasks { private final TaskService api; public Task createTask(String applicationGuid, String command, String name) { - CreateTask createTask = new CreateTask(name, command); + CreateTask createTask = CreateTask.builder().command(command).name(name).build(); return safelyCall(() -> api.createTask(applicationGuid, createTask)) .orElseThrow(ResourceNotFoundException::new); diff --git a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/CreateTask.java b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/CreateTask.java index eea4e58d304..ccc673a8774 100644 --- a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/CreateTask.java +++ b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/CreateTask.java @@ -16,11 +16,19 @@ package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v3; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; import javax.annotation.Nullable; +import lombok.Builder; import lombok.Value; @Value +@JsonDeserialize(builder = CreateTask.CreateTaskBuilder.class) +@Builder public class CreateTask { - @Nullable private final String name; - private final String command; + @Nullable private String name; + private String command; + + @JsonPOJOBuilder(withPrefix = "") + public static class CreateTaskBuilder {} } diff --git a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/Task.java b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/Task.java index b6ca06c75c9..bbe34665d4a 100644 --- a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/Task.java +++ b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/Task.java @@ -16,20 +16,28 @@ package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v3; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; import java.time.ZonedDateTime; +import lombok.Builder; import lombok.Value; @Value +@JsonDeserialize(builder = Task.TaskBuilder.class) +@Builder public class Task { - private final String guid; - private final String name; - private final State state; - private final ZonedDateTime createdAt; - private final ZonedDateTime updatedAt; + private String guid; + private String name; + private State state; + private ZonedDateTime createdAt; + private ZonedDateTime updatedAt; public enum State { SUCCEEDED, RUNNING, FAILED } + + @JsonPOJOBuilder(withPrefix = "") + public static class TaskBuilder {} }