From 64b92bab2faf1a3eb1c778399f26274fecd3a378 Mon Sep 17 00:00:00 2001 From: nsingh Date: Fri, 20 Jan 2017 13:10:29 -0800 Subject: [PATCH] Ensure that null CF hints are returned. The parser used by reconciler expects null if values cannot be resolved by the hints provider. --- .../yaml/ManifestYamlCFBuildpacksProvider.java | 11 +++++++---- .../manifest/yaml/ManifestYamlCFServicesProvider.java | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlCFBuildpacksProvider.java b/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlCFBuildpacksProvider.java index 533dea561..96e37eb71 100644 --- a/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlCFBuildpacksProvider.java +++ b/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlCFBuildpacksProvider.java @@ -28,11 +28,12 @@ public class ManifestYamlCFBuildpacksProvider extends AbstractCFHintsProvider { @Override public Collection getHints(List targets) throws Exception { - List hints = new ArrayList<>(); for (CFTarget cfTarget : targets) { List buildpacks = cfTarget.getBuildpacks(); - if (buildpacks != null) { + if (buildpacks != null && !buildpacks.isEmpty()) { + List hints = new ArrayList<>(); + for (CFBuildpack buildpack : buildpacks) { String name = buildpack.getName(); String label = getBuildpackLabel(cfTarget, buildpack); @@ -41,10 +42,12 @@ public class ManifestYamlCFBuildpacksProvider extends AbstractCFHintsProvider { hints.add(hint); } } + return hints; } } - - return hints; + // Return null if no hints an be resolved rather than empty list (seems to be + // what is expected for parsing for reconciler) + return null; } protected String getBuildpackLabel(CFTarget target, CFBuildpack buildpack) { diff --git a/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlCFServicesProvider.java b/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlCFServicesProvider.java index f8ab0a655..bf2939fe6 100644 --- a/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlCFServicesProvider.java +++ b/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlCFServicesProvider.java @@ -28,11 +28,12 @@ public class ManifestYamlCFServicesProvider extends AbstractCFHintsProvider { @Override public Collection getHints(List targets) throws Exception { - List hints = new ArrayList<>(); for (CFTarget cfTarget : targets) { List services = cfTarget.getServices(); - if (services != null) { + if (services != null && !services.isEmpty()) { + List hints = new ArrayList<>(); + for (CFServiceInstance service : services) { String name = service.getName(); String label = getServiceLabel(cfTarget, service); @@ -41,10 +42,12 @@ public class ManifestYamlCFServicesProvider extends AbstractCFHintsProvider { hints.add(hint); } } + return hints; } } - - return hints; + // Return null if no hints an be resolved rather than empty list (seems to be + // what is expected for parsing for reconciler) + return null; } private String getServiceLabel(CFTarget cfClientTarget, CFServiceInstance service) {