From abc102e155297ec9dd02ecce8f3c7490282cc8fc Mon Sep 17 00:00:00 2001 From: Jammy Louie Date: Fri, 21 Jun 2019 09:14:32 -0400 Subject: [PATCH] fix(cf): allow environmentVars values to be deserializable to objects (#3804) --- .../cloudfoundry/client/Applications.java | 44 ++++++++++++++----- .../client/model/v2/ApplicationEnv.java | 2 +- .../model/CloudFoundryServerGroup.java | 2 +- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/Applications.java b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/Applications.java index 9c080640ead..5b56ed9a3bb 100644 --- a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/Applications.java +++ b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/Applications.java @@ -313,14 +313,17 @@ private CloudFoundryServerGroup map(Application application) { .build())) .collect(toList()); - Map environmentVars = + Map environmentVars = applicationEnv == null || applicationEnv.getEnvironmentJson() == null ? emptyMap() : applicationEnv.getEnvironmentJson(); final CloudFoundryBuildInfo buildInfo = getBuildInfoFromEnvVars(environmentVars); final ArtifactInfo artifactInfo = getArtifactInfoFromEnvVars(environmentVars); - final String pipelineId = environmentVars.get(ServerGroupMetaDataEnvVar.PipelineId.envVarName); + final String pipelineId = + Optional.ofNullable(environmentVars.get(ServerGroupMetaDataEnvVar.PipelineId.envVarName)) + .map(Object::toString) + .orElse(null); Arrays.asList(ServerGroupMetaDataEnvVar.values()) .forEach(envVar -> environmentVars.remove(envVar.envVarName)); @@ -375,19 +378,40 @@ private CloudFoundryServerGroup map(Application application) { .build(); } - private CloudFoundryBuildInfo getBuildInfoFromEnvVars(Map environmentVars) { + private CloudFoundryBuildInfo getBuildInfoFromEnvVars(Map environmentVars) { return CloudFoundryBuildInfo.builder() - .jobName(environmentVars.get(ServerGroupMetaDataEnvVar.JobName.envVarName)) - .jobNumber(environmentVars.get(ServerGroupMetaDataEnvVar.JobNumber.envVarName)) - .jobUrl(environmentVars.get(ServerGroupMetaDataEnvVar.JobUrl.envVarName)) + .jobName( + Optional.ofNullable(environmentVars.get(ServerGroupMetaDataEnvVar.JobName.envVarName)) + .map(Object::toString) + .orElse(null)) + .jobNumber( + Optional.ofNullable(environmentVars.get(ServerGroupMetaDataEnvVar.JobNumber.envVarName)) + .map(Object::toString) + .orElse(null)) + .jobUrl( + Optional.ofNullable(environmentVars.get(ServerGroupMetaDataEnvVar.JobUrl.envVarName)) + .map(Object::toString) + .orElse(null)) .build(); } - private ArtifactInfo getArtifactInfoFromEnvVars(Map environmentVars) { + private ArtifactInfo getArtifactInfoFromEnvVars(Map environmentVars) { return ArtifactInfo.builder() - .name(environmentVars.get(ServerGroupMetaDataEnvVar.ArtifactName.envVarName)) - .version(environmentVars.get(ServerGroupMetaDataEnvVar.ArtifactVersion.envVarName)) - .url(environmentVars.get(ServerGroupMetaDataEnvVar.ArtifactUrl.envVarName)) + .name( + Optional.ofNullable( + environmentVars.get(ServerGroupMetaDataEnvVar.ArtifactName.envVarName)) + .map(Object::toString) + .orElse(null)) + .version( + Optional.ofNullable( + environmentVars.get(ServerGroupMetaDataEnvVar.ArtifactVersion.envVarName)) + .map(Object::toString) + .orElse(null)) + .url( + Optional.ofNullable( + environmentVars.get(ServerGroupMetaDataEnvVar.ArtifactUrl.envVarName)) + .map(Object::toString) + .orElse(null)) .build(); } diff --git a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/ApplicationEnv.java b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/ApplicationEnv.java index da3137d85ff..5a694566496 100644 --- a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/ApplicationEnv.java +++ b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/ApplicationEnv.java @@ -24,7 +24,7 @@ @Data public class ApplicationEnv { private SystemEnv systemEnvJson; - private Map environmentJson; + private Map environmentJson; @Data public static class SystemEnv { diff --git a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/model/CloudFoundryServerGroup.java b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/model/CloudFoundryServerGroup.java index c9ebf084cc5..9372d34f21e 100644 --- a/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/model/CloudFoundryServerGroup.java +++ b/clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/model/CloudFoundryServerGroup.java @@ -93,7 +93,7 @@ public class CloudFoundryServerGroup extends CloudFoundryModel implements Server Long createdTime; @JsonView(Views.Cache.class) - Map env; + Map env; @Wither @JsonView(Views.Cache.class)