diff --git a/vscode-extensions/commons/commons-cf/src/main/java/org/springframework/ide/vscode/commons/cloudfoundry/client/cftarget/CfCliParamsProvider.java b/vscode-extensions/commons/commons-cf/src/main/java/org/springframework/ide/vscode/commons/cloudfoundry/client/cftarget/CfCliParamsProvider.java index 6035cbed5..20ede362b 100644 --- a/vscode-extensions/commons/commons-cf/src/main/java/org/springframework/ide/vscode/commons/cloudfoundry/client/cftarget/CfCliParamsProvider.java +++ b/vscode-extensions/commons/commons-cf/src/main/java/org/springframework/ide/vscode/commons/cloudfoundry/client/cftarget/CfCliParamsProvider.java @@ -29,6 +29,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; */ public class CfCliParamsProvider implements ClientParamsProvider { + public static final String NO_CLI_TARGETS_FOUND_MESSAGE = "Unable to fetch information from Cloud Foundry. Please use cf CLI to configure and login to Cloud Foundry."; public static final String TARGET = "Target"; public static final String REFRESH_TOKEN = "RefreshToken"; public static final String ORGANIZATION_FIELDS = "OrganizationFields"; @@ -74,7 +75,7 @@ public class CfCliParamsProvider implements ClientParamsProvider { if (params.isEmpty()) { throw new NoTargetsException( - "Unable to fetch information from Cloud Foundry. Please use cf CLI to configure and login to Cloud Foundry."); + NO_CLI_TARGETS_FOUND_MESSAGE); } else { return params; } diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/CompletionFactory.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/CompletionFactory.java index e70a162da..b3079856c 100644 --- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/CompletionFactory.java +++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/CompletionFactory.java @@ -35,5 +35,5 @@ public interface CompletionFactory { * @param edits * @return non-null proposal */ - ICompletionProposal errorMessage(String message, String query, YType type, DocumentEdits edits); + ICompletionProposal errorMessage(String message, String query, YType type, DocumentEdits edits, YTypeUtil typeUtil); } diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/DefaultCompletionFactory.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/DefaultCompletionFactory.java index 5c583bb95..8a8157636 100644 --- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/DefaultCompletionFactory.java +++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/DefaultCompletionFactory.java @@ -136,6 +136,59 @@ public class DefaultCompletionFactory implements CompletionFactory { return null; } } + + public static final class ErrorProposal extends ScoreableProposal { + private final String value; + private final double score; + private final String label; + private DocumentEdits edits; + private YTypeUtil typeUtil; + private YType type; + + public ErrorProposal(String value, String label, YType type, double score, DocumentEdits edits, YTypeUtil typeUtil) { + this.value = value; + this.score = score; + this.label = label; + this.edits = edits; + this.typeUtil = typeUtil; + this.type = type; + } + + @Override + public DocumentEdits getTextEdit() { + return edits; + } + + @Override + public String getLabel() { + return label; + } + + @Override + public CompletionItemKind getKind() { + return CompletionItemKind.Value; + } + + @Override + public Renderable getDocumentation() { + return null; + } + + @Override + public double getBaseScore() { + return score; + } + + @Override + public String toString() { + return "ErrorProposal("+value+")"; + } + + @Override + public String getDetail() { + return typeUtil.niceTypeName(type); + } + } @Override public ICompletionProposal beanProperty(IDocument doc, String contextProperty, YType contextType, String query, YTypedProperty p, double score, DocumentEdits edits, YTypeUtil typeUtil) { @@ -148,42 +201,10 @@ public class DefaultCompletionFactory implements CompletionFactory { } @Override - public ICompletionProposal errorMessage(String message, String query, YType type, DocumentEdits edits) { - final String value = EMPTY_VALUE; // Empty value for the proposal. Purpose is to show a message with no value to fill in. + public ICompletionProposal errorMessage(String message, String query, YType type, DocumentEdits edits, YTypeUtil typeUtil) { final double score = ERROR_COMPLETION_SCORE; - final Renderable documentation = null; - final String niceDescription = message; - return new ScoreableProposal() { - - @Override - public DocumentEdits getTextEdit() { - return edits; - } - - @Override - public String getLabel() { - return value; - } - - @Override - public CompletionItemKind getKind() { - return CompletionItemKind.Value; - } - - @Override - public Renderable getDocumentation() { - return documentation; - } - - @Override - public String getDetail() { - return niceDescription; - } - - @Override - public double getBaseScore() { - return score; - } - }; + final String value = EMPTY_VALUE; + final String label = message; + return new ErrorProposal(value, label, type, score, edits, typeUtil); } } diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YTypeAssistContext.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YTypeAssistContext.java index 7920dff1d..e07c817ee 100644 --- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YTypeAssistContext.java +++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YTypeAssistContext.java @@ -155,7 +155,7 @@ public class YTypeAssistContext extends AbstractYamlAssistContext { values = typeUtil.getHintValues(type, getSchemaContext()); } catch (Exception e) { DocumentEdits edits = new DocumentEdits(doc.getDocument()); - return ImmutableList.of(completionFactory().errorMessage(ExceptionUtil.getMessage(e), query, type, edits)); + return ImmutableList.of(completionFactory().errorMessage(ExceptionUtil.getMessage(e), query, type, edits, typeUtil)); } if (values!=null) { ArrayList completions = new ArrayList<>(); diff --git a/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/AbstractCFHintsProvider.java b/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/AbstractCFHintsProvider.java index 9c58f498e..8a3daa3ef 100644 --- a/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/AbstractCFHintsProvider.java +++ b/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/AbstractCFHintsProvider.java @@ -41,9 +41,6 @@ public abstract class AbstractCFHintsProvider implements Callable call() throws Exception { Collection hints = new ArrayList<>(); - // TODO: Probably not the most ideal thing to do, but for now show any - // CF errors - // in the CA UI, as well as cases where there are no targets try { List targets = targetCache.getOrCreate(); Collection resolvedHints = getHints(targets); 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 4edb64408..533dea561 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 @@ -44,9 +44,6 @@ public class ManifestYamlCFBuildpacksProvider extends AbstractCFHintsProvider { } } - if (hints.isEmpty()) { - hints.add(new BasicYValueHint(EMPTY_VALUE, "No Cloud Foundry buildpacks found.")); - } return hints; } 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 2ea9593e7..f8ab0a655 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 @@ -44,9 +44,6 @@ public class ManifestYamlCFServicesProvider extends AbstractCFHintsProvider { } } - if (hints.isEmpty()) { - hints.add(new BasicYValueHint(EMPTY_VALUE, "No Cloud Foundry service instances available")); - } return hints; }