From f19a4e0bfa7714cdded514673affba3667b857e4 Mon Sep 17 00:00:00 2001
From: BoykoAlex
Date: Mon, 21 Nov 2016 16:49:08 -0500
Subject: [PATCH] HoverInfo -> Renderable refactoring
---
.../metadata/hints/StsValueHint.java | 35 ++++----
.../metadata/types/TypedProperty.java | 14 ++-
.../hover/HoverInfoProvider.java | 3 +-
.../hover/VscodeHoverEngineAdapter.java | 5 +-
.../commons/commons-util/pom.xml | 6 ++
.../ide/vscode/commons/util/HtmlBuffer.java | 4 -
.../ide/vscode/commons}/util/IOUtil.java | 2 +-
.../ide/vscode/commons/util/Renderable.java} | 6 +-
.../ide/vscode/commons/util/Renderables.java} | 90 ++++++++++---------
.../completion/TopLevelAssistContext.java | 8 +-
.../yaml/completion/YTypeAssistContext.java | 8 +-
.../yaml/completion/YamlAssistContext.java | 8 +-
.../yaml/hover/YPropertyHoverInfo.java | 18 ++--
.../yaml/hover/YamlHoverInfoProvider.java | 8 +-
.../commons/yaml/schema/YTypeFactory.java | 12 +--
.../commons/yaml/schema/YTypedProperty.java | 4 +-
.../ApplicationYamlAssistContext.java | 14 +--
.../manifest/yaml/ManifestYmlSchema.java | 10 +--
.../manifest/yaml/ManifestYmlSchemaTest.java | 6 +-
19 files changed, 133 insertions(+), 128 deletions(-)
rename vscode-extensions/commons/{commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml => commons-util/src/main/java/org/springframework/ide/vscode/commons}/util/IOUtil.java (97%)
rename vscode-extensions/commons/{commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/HoverInfo.java => commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Renderable.java} (85%)
rename vscode-extensions/commons/{commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/util/DescriptionProviders.java => commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Renderables.java} (69%)
diff --git a/vscode-extensions/commons/application-properties-metadata/src/main/java/org/springframework/ide/vscode/application/properties/metadata/hints/StsValueHint.java b/vscode-extensions/commons/application-properties-metadata/src/main/java/org/springframework/ide/vscode/application/properties/metadata/hints/StsValueHint.java
index adbb8af6f..03b6a5e66 100644
--- a/vscode-extensions/commons/application-properties-metadata/src/main/java/org/springframework/ide/vscode/application/properties/metadata/hints/StsValueHint.java
+++ b/vscode-extensions/commons/application-properties-metadata/src/main/java/org/springframework/ide/vscode/application/properties/metadata/hints/StsValueHint.java
@@ -7,13 +7,16 @@ import org.springframework.ide.vscode.application.properties.metadata.util.Depre
import org.springframework.ide.vscode.commons.java.IJavaElement;
import org.springframework.ide.vscode.commons.java.IJavaProject;
import org.springframework.ide.vscode.commons.java.IType;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
import org.springframework.ide.vscode.commons.util.Assert;
import org.springframework.ide.vscode.commons.util.HtmlBuffer;
import org.springframework.ide.vscode.commons.util.HtmlSnippet;
import org.springframework.ide.vscode.commons.util.Log;
+import org.springframework.ide.vscode.commons.util.Renderable;
+import org.springframework.ide.vscode.commons.util.Renderables;
import org.springframework.ide.vscode.commons.util.StringUtil;
-import org.springframework.ide.vscode.commons.yaml.util.DescriptionProviders;
+
+import com.google.common.base.Supplier;
+import com.google.common.base.Suppliers;
/**
* Sts version of {@link ValueHint} contains similar data, but accomoates
@@ -29,7 +32,7 @@ public class StsValueHint {
private final String value;
- private final HoverInfo description;
+ private final Renderable description;
private final Deprecation deprecation;
/**
@@ -38,7 +41,7 @@ public class StsValueHint {
* This constructor is private. Use one of the provided
* static 'create' methods instead.
*/
- private StsValueHint(String value, HoverInfo description, Deprecation deprecation) {
+ private StsValueHint(String value, Renderable description, Deprecation deprecation) {
this.value = value==null?"null":value.toString();
Assert.isLegal(!this.value.startsWith("StsValueHint"));
this.description = description;
@@ -58,7 +61,7 @@ public class StsValueHint {
}
public static StsValueHint create(String value) {
- return new StsValueHint(value, DescriptionProviders.NO_DESCRIPTION, null);
+ return new StsValueHint(value, Renderables.NO_DESCRIPTION, null);
}
public static StsValueHint create(ValueHint hint) {
@@ -92,46 +95,46 @@ public class StsValueHint {
/**
* Create a html snippet from a text snippet.
*/
- private static HoverInfo textSnippet(String description) {
+ private static Renderable textSnippet(String description) {
if (StringUtil.hasText(description)) {
- return DescriptionProviders.text(description);
+ return Renderables.text(description);
}
- return DescriptionProviders.NO_DESCRIPTION;
+ return Renderables.NO_DESCRIPTION;
}
public String getValue() {
return value;
}
- public HoverInfo getDescription() {
+ public Renderable getDescription() {
return description;
}
- public HoverInfo getDescriptionProvider() {
+ public Renderable getDescriptionProvider() {
return description;
}
- public static HoverInfo javaDocSnippet(IJavaElement je) {
+ private static Renderable javaDocSnippet(IJavaElement je) {
try {
- HtmlSnippet jdoc = je.getJavaDoc();
+ Supplier jdoc = Suppliers.memoize(() -> je.getJavaDoc());
if (jdoc != null) {
- return new HoverInfo() {
+ return new Renderable() {
@Override
public void renderAsMarkdown(StringBuilder buffer) {
// TODO not correct md
- buffer.append(jdoc.toString());
+ buffer.append(jdoc.get().toString());
}
@Override
public void renderAsHtml(HtmlBuffer buffer) {
- buffer.raw(jdoc.toHtml());
+ buffer.raw(jdoc.get().toHtml());
}
};
}
} catch (Exception e) {
Log.log(e);
}
- return DescriptionProviders.NO_DESCRIPTION;
+ return Renderables.NO_DESCRIPTION;
}
@Override
diff --git a/vscode-extensions/commons/application-properties-metadata/src/main/java/org/springframework/ide/vscode/application/properties/metadata/types/TypedProperty.java b/vscode-extensions/commons/application-properties-metadata/src/main/java/org/springframework/ide/vscode/application/properties/metadata/types/TypedProperty.java
index 02e7f3df3..5e0da039d 100644
--- a/vscode-extensions/commons/application-properties-metadata/src/main/java/org/springframework/ide/vscode/application/properties/metadata/types/TypedProperty.java
+++ b/vscode-extensions/commons/application-properties-metadata/src/main/java/org/springframework/ide/vscode/application/properties/metadata/types/TypedProperty.java
@@ -1,11 +1,9 @@
package org.springframework.ide.vscode.application.properties.metadata.types;
-import javax.inject.Provider;
-
import org.springframework.boot.configurationmetadata.Deprecation;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
+import org.springframework.ide.vscode.commons.util.Renderable;
+import org.springframework.ide.vscode.commons.util.Renderables;
import org.springframework.ide.vscode.commons.yaml.schema.YTypedProperty;
-import org.springframework.ide.vscode.commons.yaml.util.DescriptionProviders;
/**
* Represents a property on a Type that can be accessed by name.
@@ -27,15 +25,15 @@ public class TypedProperty implements YTypedProperty {
/**
* Provides a description for this property.
*/
- private final HoverInfo descriptionProvider;
+ private final Renderable descriptionProvider;
private final Deprecation deprecation;
public TypedProperty(String name, Type type, Deprecation deprecation) {
- this(name, type, DescriptionProviders.NO_DESCRIPTION, deprecation);
+ this(name, type, Renderables.NO_DESCRIPTION, deprecation);
}
- public TypedProperty(String name, Type type, HoverInfo descriptionProvider, Deprecation deprecation) {
+ public TypedProperty(String name, Type type, Renderable descriptionProvider, Deprecation deprecation) {
this.name = name;
this.type = type;
this.descriptionProvider = descriptionProvider;
@@ -56,7 +54,7 @@ public class TypedProperty implements YTypedProperty {
}
@Override
- public HoverInfo getDescription() {
+ public Renderable getDescription() {
//TODO: real implementation that somehow gets this from somewhere (i.e. the JavaDoc)
// Note that presently the application.yml and application.properties editor do not actually
// use this description provider but produce hover infos in a different way (so this is only
diff --git a/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/HoverInfoProvider.java b/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/HoverInfoProvider.java
index a0e512692..43893c9b4 100644
--- a/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/HoverInfoProvider.java
+++ b/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/HoverInfoProvider.java
@@ -12,11 +12,12 @@ package org.springframework.ide.vscode.commons.languageserver.hover;
import org.springframework.ide.vscode.commons.languageserver.util.IDocument;
import org.springframework.ide.vscode.commons.languageserver.util.IRegion;
+import org.springframework.ide.vscode.commons.util.Renderable;
import reactor.util.function.Tuple2;
public interface HoverInfoProvider {
- Tuple2 getHoverInfo(IDocument document, int offset) throws Exception;
+ Tuple2 getHoverInfo(IDocument document, int offset) throws Exception;
}
diff --git a/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/VscodeHoverEngineAdapter.java b/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/VscodeHoverEngineAdapter.java
index d0fd9c942..6a12177f4 100644
--- a/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/VscodeHoverEngineAdapter.java
+++ b/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/VscodeHoverEngineAdapter.java
@@ -23,6 +23,7 @@ import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguage
import org.springframework.ide.vscode.commons.languageserver.util.SimpleTextDocumentService;
import org.springframework.ide.vscode.commons.languageserver.util.TextDocument;
import org.springframework.ide.vscode.commons.util.Futures;
+import org.springframework.ide.vscode.commons.util.Renderable;
import reactor.util.function.Tuple2;
@@ -49,9 +50,9 @@ public class VscodeHoverEngineAdapter implements VscodeHoverEngine {
if (doc!=null) {
int offset = doc.toOffset(params.getPosition());
- Tuple2 hoverTuple = hoverInfoProvider.getHoverInfo(doc, offset);
+ Tuple2 hoverTuple = hoverInfoProvider.getHoverInfo(doc, offset);
if (hoverTuple != null) {
- HoverInfo hoverInfo = hoverTuple.getT1();
+ Renderable hoverInfo = hoverTuple.getT1();
IRegion region = hoverTuple.getT2();
Range range = doc.toRange(region.getOffset(), region.getLength());
diff --git a/vscode-extensions/commons/commons-util/pom.xml b/vscode-extensions/commons/commons-util/pom.xml
index 0617ac842..91f40a713 100644
--- a/vscode-extensions/commons/commons-util/pom.xml
+++ b/vscode-extensions/commons/commons-util/pom.xml
@@ -21,6 +21,12 @@
javax.inject
1
+
+
+ com.kotcrab.remark
+ remark
+ 1.0.0
+
diff --git a/vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/HtmlBuffer.java b/vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/HtmlBuffer.java
index fd15969a4..3e037e869 100644
--- a/vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/HtmlBuffer.java
+++ b/vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/HtmlBuffer.java
@@ -113,10 +113,6 @@ public class HtmlBuffer {
raw("
");
}
- public void snippet(HtmlSnippet snippet) {
- snippet.render(this);
- }
-
public void bold(String string) {
raw("");
text(string);
diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/util/IOUtil.java b/vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/IOUtil.java
similarity index 97%
rename from vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/util/IOUtil.java
rename to vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/IOUtil.java
index bb0161cec..7dc09c5a9 100644
--- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/util/IOUtil.java
+++ b/vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/IOUtil.java
@@ -8,7 +8,7 @@
* Contributors:
* Pivotal Software, Inc. - initial API and implementation
*******************************************************************************/
-package org.springframework.ide.vscode.commons.yaml.util;
+package org.springframework.ide.vscode.commons.util;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
diff --git a/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/HoverInfo.java b/vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Renderable.java
similarity index 85%
rename from vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/HoverInfo.java
rename to vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Renderable.java
index f211d66a3..06195392f 100644
--- a/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/hover/HoverInfo.java
+++ b/vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Renderable.java
@@ -8,15 +8,13 @@
* Contributors:
* Pivotal, Inc. - initial API and implementation
*******************************************************************************/
-package org.springframework.ide.vscode.commons.languageserver.hover;
-
-import org.springframework.ide.vscode.commons.util.HtmlBuffer;
+package org.springframework.ide.vscode.commons.util;
/**
* Placeholder. Still need to figure out what exactly we should do with this in
* vscode. TODO: rename to Renderable
*/
-public interface HoverInfo {
+public interface Renderable {
void renderAsHtml(HtmlBuffer buffer);
diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/util/DescriptionProviders.java b/vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Renderables.java
similarity index 69%
rename from vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/util/DescriptionProviders.java
rename to vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Renderables.java
index a70d9ffe6..4429559eb 100644
--- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/util/DescriptionProviders.java
+++ b/vscode-extensions/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Renderables.java
@@ -8,20 +8,16 @@
* Contributors:
* Pivotal, Inc. - initial API and implementation
*******************************************************************************/
-package org.springframework.ide.vscode.commons.yaml.util;
+package org.springframework.ide.vscode.commons.util;
import java.io.InputStream;
import java.util.List;
-import javax.inject.Provider;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
-import org.springframework.ide.vscode.commons.util.HtmlBuffer;
-import org.springframework.ide.vscode.commons.util.HtmlSnippet;
import com.google.common.collect.ImmutableList;
+import com.overzealous.remark.Remark;
/**
* Static methods and convenience constants for creating some 'description
@@ -29,44 +25,50 @@ import com.google.common.collect.ImmutableList;
*
* @author Kris De Volder
*/
-public class DescriptionProviders {
+public class Renderables {
private static final String NO_DESCRIPTION_TEXT = "no description";
- final static Logger logger = LoggerFactory.getLogger(DescriptionProviders.class);
+ final static Logger logger = LoggerFactory.getLogger(Renderables.class);
- public static final HoverInfo NO_DESCRIPTION = italic(text(NO_DESCRIPTION_TEXT));
-
- public static Provider snippet(final HtmlSnippet snippet) {
- return new Provider() {
- @Override
- public String toString() {
- return snippet.toString();
- }
-
- @Override
- public HtmlSnippet get() {
- return snippet;
- }
- };
+ public static final Renderable NO_DESCRIPTION = italic(text(NO_DESCRIPTION_TEXT));
+
+ private static Remark getHtmlToMarkdownConverter() {
+ return new Remark();
}
- public static HoverInfo concat(HoverInfo... pieces) {
+ public static Renderable htmlBlob(String html) {
+ return new Renderable() {
+
+ @Override
+ public void renderAsHtml(HtmlBuffer buffer) {
+ buffer.raw(html);
+ }
+
+ @Override
+ public void renderAsMarkdown(StringBuilder buffer) {
+ buffer.append(getHtmlToMarkdownConverter().convert(html));
+ }
+
+ };
+ }
+
+ public static Renderable concat(Renderable... pieces) {
return concat(ImmutableList.copyOf(pieces));
}
- public static HoverInfo concat(List pieces) {
+ public static Renderable concat(List pieces) {
if (pieces == null || pieces.size() == 0) {
throw new IllegalArgumentException("At least one hover information is required for concat");
} else if (pieces.size() == 1) {
return pieces.get(0);
} else {
- return new ConcatHoverInfo(pieces);
+ return new ConcatRenderables(pieces);
}
}
- public static HoverInfo italic(HoverInfo text) {
- return new HoverInfo() {
+ public static Renderable italic(Renderable text) {
+ return new Renderable() {
@Override
public void renderAsMarkdown(StringBuilder buffer) {
@@ -84,8 +86,8 @@ public class DescriptionProviders {
};
}
- public static HoverInfo link(String text, String url) {
- return new HoverInfo() {
+ public static Renderable link(String text, String url) {
+ return new Renderable() {
@Override
public void renderAsMarkdown(StringBuilder buffer) {
@@ -110,8 +112,8 @@ public class DescriptionProviders {
};
}
- public static HoverInfo lineBreak() {
- return new HoverInfo() {
+ public static Renderable lineBreak() {
+ return new Renderable() {
@Override
public void renderAsMarkdown(StringBuilder buffer) {
@@ -125,9 +127,9 @@ public class DescriptionProviders {
};
}
- public static HoverInfo bold(HoverInfo text) {
+ public static Renderable bold(Renderable text) {
- return new HoverInfo() {
+ return new Renderable() {
@Override
public void renderAsMarkdown(StringBuilder buffer) {
@@ -145,8 +147,8 @@ public class DescriptionProviders {
};
}
- public static HoverInfo text(String text) {
- return new HoverInfo() {
+ public static Renderable text(String text) {
+ return new Renderable() {
@Override
public void renderAsMarkdown(StringBuilder buffer) {
// TODO: handle escaping
@@ -160,8 +162,8 @@ public class DescriptionProviders {
};
}
- public static HoverInfo fromClasspath(final Class> klass, final String resourcePath) {
- return new HoverInfo() {
+ public static Renderable fromClasspath(final Class> klass, final String resourcePath) {
+ return new Renderable() {
@Override
public void renderAsMarkdown(StringBuilder buffer) {
@@ -199,28 +201,28 @@ public class DescriptionProviders {
};
}
- private static class ConcatHoverInfo implements HoverInfo {
+ private static class ConcatRenderables implements Renderable {
- private HoverInfo[] pieces;
+ private Renderable[] pieces;
- ConcatHoverInfo(HoverInfo[] pieces) {
+ ConcatRenderables(Renderable[] pieces) {
this.pieces = pieces;
}
- public ConcatHoverInfo(List pieces) {
- this(pieces.toArray(new HoverInfo[pieces.size()]));
+ public ConcatRenderables(List pieces) {
+ this(pieces.toArray(new Renderable[pieces.size()]));
}
@Override
public void renderAsHtml(HtmlBuffer buffer) {
- for (HoverInfo hoverInfo : pieces) {
+ for (Renderable hoverInfo : pieces) {
hoverInfo.renderAsHtml(buffer);
}
}
@Override
public void renderAsMarkdown(StringBuilder buffer) {
- for (HoverInfo hoverInfo : pieces) {
+ for (Renderable hoverInfo : pieces) {
hoverInfo.renderAsMarkdown(buffer);
}
}
diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/TopLevelAssistContext.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/TopLevelAssistContext.java
index 3952e2e8e..1cb7f7daf 100644
--- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/TopLevelAssistContext.java
+++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/TopLevelAssistContext.java
@@ -14,8 +14,8 @@ import java.util.Collection;
import java.util.Collections;
import org.springframework.ide.vscode.commons.languageserver.completion.ICompletionProposal;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
import org.springframework.ide.vscode.commons.languageserver.util.DocumentRegion;
+import org.springframework.ide.vscode.commons.util.Renderable;
import org.springframework.ide.vscode.commons.yaml.path.YamlPathSegment;
import org.springframework.ide.vscode.commons.yaml.structure.YamlDocument;
import org.springframework.ide.vscode.commons.yaml.structure.YamlStructureParser.SNode;
@@ -52,17 +52,17 @@ public abstract class TopLevelAssistContext implements YamlAssistContext {
}
@Override
- public HoverInfo getHoverInfo() {
+ public Renderable getHoverInfo() {
return null;
}
@Override
- public HoverInfo getHoverInfo(YamlPathSegment lastSegment) {
+ public Renderable getHoverInfo(YamlPathSegment lastSegment) {
return null;
}
@Override
- public HoverInfo getValueHoverInfo(YamlDocument doc, DocumentRegion documentRegion) {
+ public Renderable getValueHoverInfo(YamlDocument doc, DocumentRegion documentRegion) {
return null;
}
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 1506003fd..f732599ad 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
@@ -22,10 +22,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ide.vscode.commons.languageserver.completion.DocumentEdits;
import org.springframework.ide.vscode.commons.languageserver.completion.ICompletionProposal;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
import org.springframework.ide.vscode.commons.languageserver.util.DocumentRegion;
import org.springframework.ide.vscode.commons.util.CollectionUtil;
import org.springframework.ide.vscode.commons.util.FuzzyMatcher;
+import org.springframework.ide.vscode.commons.util.Renderable;
import org.springframework.ide.vscode.commons.yaml.hover.YPropertyHoverInfo;
import org.springframework.ide.vscode.commons.yaml.path.YamlPath;
import org.springframework.ide.vscode.commons.yaml.path.YamlPathSegment;
@@ -219,7 +219,7 @@ public class YTypeAssistContext extends AbstractYamlAssistContext {
@Override
- public HoverInfo getHoverInfo() {
+ public Renderable getHoverInfo() {
if (parent!=null) {
return parent.getHoverInfo(contextPath.getLastSegment());
}
@@ -231,7 +231,7 @@ public class YTypeAssistContext extends AbstractYamlAssistContext {
}
@Override
- public HoverInfo getHoverInfo(YamlPathSegment lastSegment) {
+ public Renderable getHoverInfo(YamlPathSegment lastSegment) {
//Hoverinfo is only attached to YTypedProperties so...
switch (lastSegment.getType()) {
case VAL_AT_KEY:
@@ -247,7 +247,7 @@ public class YTypeAssistContext extends AbstractYamlAssistContext {
}
@Override
- public HoverInfo getValueHoverInfo(YamlDocument doc, DocumentRegion documentRegion) {
+ public Renderable getValueHoverInfo(YamlDocument doc, DocumentRegion documentRegion) {
//By default we don't provide value-specific hover, so just show the same hover
// as the assistContext the value is in. This is likely more interesting than showing nothing at all.
return getHoverInfo();
diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YamlAssistContext.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YamlAssistContext.java
index 23b831731..549684387 100644
--- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YamlAssistContext.java
+++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YamlAssistContext.java
@@ -13,8 +13,8 @@ package org.springframework.ide.vscode.commons.yaml.completion;
import java.util.Collection;
import org.springframework.ide.vscode.commons.languageserver.completion.ICompletionProposal;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
import org.springframework.ide.vscode.commons.languageserver.util.DocumentRegion;
+import org.springframework.ide.vscode.commons.util.Renderable;
import org.springframework.ide.vscode.commons.yaml.path.YamlNavigable;
import org.springframework.ide.vscode.commons.yaml.path.YamlPathSegment;
import org.springframework.ide.vscode.commons.yaml.structure.YamlDocument;
@@ -28,8 +28,8 @@ public interface YamlAssistContext extends YamlNavigable {
//TODO: conceptually... the right thing would be to only implement the second of these
// two methods and get rid of the first one.
- HoverInfo getHoverInfo();
- HoverInfo getHoverInfo(YamlPathSegment lastSegment);
+ Renderable getHoverInfo();
+ Renderable getHoverInfo(YamlPathSegment lastSegment);
- HoverInfo getValueHoverInfo(YamlDocument doc, DocumentRegion documentRegion);
+ Renderable getValueHoverInfo(YamlDocument doc, DocumentRegion documentRegion);
}
diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/hover/YPropertyHoverInfo.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/hover/YPropertyHoverInfo.java
index fa7a07f82..7eaae4287 100644
--- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/hover/YPropertyHoverInfo.java
+++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/hover/YPropertyHoverInfo.java
@@ -10,13 +10,13 @@
*******************************************************************************/
package org.springframework.ide.vscode.commons.yaml.hover;
-import static org.springframework.ide.vscode.commons.yaml.util.DescriptionProviders.bold;
-import static org.springframework.ide.vscode.commons.yaml.util.DescriptionProviders.concat;
-import static org.springframework.ide.vscode.commons.yaml.util.DescriptionProviders.lineBreak;
-import static org.springframework.ide.vscode.commons.yaml.util.DescriptionProviders.link;
-import static org.springframework.ide.vscode.commons.yaml.util.DescriptionProviders.text;
+import static org.springframework.ide.vscode.commons.util.Renderables.bold;
+import static org.springframework.ide.vscode.commons.util.Renderables.concat;
+import static org.springframework.ide.vscode.commons.util.Renderables.lineBreak;
+import static org.springframework.ide.vscode.commons.util.Renderables.link;
+import static org.springframework.ide.vscode.commons.util.Renderables.text;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
+import org.springframework.ide.vscode.commons.util.Renderable;
import org.springframework.ide.vscode.commons.util.StringUtil;
import org.springframework.ide.vscode.commons.yaml.schema.YType;
import org.springframework.ide.vscode.commons.yaml.schema.YTypedProperty;
@@ -31,9 +31,9 @@ import com.google.common.collect.ImmutableList.Builder;
*/
public class YPropertyHoverInfo {
- public static HoverInfo create(String contextProperty, YType contextType, YTypedProperty prop) {
+ public static Renderable create(String contextProperty, YType contextType, YTypedProperty prop) {
- Builder html = ImmutableList.builder();
+ Builder html = ImmutableList.builder();
if (StringUtil.hasText(contextProperty)) {
html.add(text(contextProperty));
html.add(text("."));
@@ -48,7 +48,7 @@ public class YPropertyHoverInfo {
html.add(link(type.toString(), /* no URL */ null));
}
- HoverInfo description = prop.getDescription();
+ Renderable description = prop.getDescription();
if (description != null) {
html.add(lineBreak());
html.add(description);
diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/hover/YamlHoverInfoProvider.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/hover/YamlHoverInfoProvider.java
index 11a8e7fcc..1ee8d0d22 100644
--- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/hover/YamlHoverInfoProvider.java
+++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/hover/YamlHoverInfoProvider.java
@@ -12,13 +12,13 @@ package org.springframework.ide.vscode.commons.yaml.hover;
import java.util.List;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfoProvider;
import org.springframework.ide.vscode.commons.languageserver.util.DocumentRegion;
import org.springframework.ide.vscode.commons.languageserver.util.IDocument;
import org.springframework.ide.vscode.commons.languageserver.util.IRegion;
import org.springframework.ide.vscode.commons.languageserver.util.Region;
import org.springframework.ide.vscode.commons.util.Assert;
+import org.springframework.ide.vscode.commons.util.Renderable;
import org.springframework.ide.vscode.commons.yaml.ast.NodeRef;
import org.springframework.ide.vscode.commons.yaml.ast.YamlASTProvider;
import org.springframework.ide.vscode.commons.yaml.ast.YamlFileAST;
@@ -59,7 +59,7 @@ public class YamlHoverInfoProvider implements HoverInfoProvider {
}
@Override
- public Tuple2 getHoverInfo(IDocument doc, int offset) throws Exception {
+ public Tuple2 getHoverInfo(IDocument doc, int offset) throws Exception {
YamlFileAST ast = getAst(doc);
if (ast != null) {
IRegion region = getHoverRegion(ast, offset);
@@ -82,10 +82,10 @@ public class YamlHoverInfoProvider implements HoverInfoProvider {
assistContext = assistPath.traverse(assistContext);
if (assistContext != null) {
if (path.pointsAtValue()) {
- HoverInfo info = assistContext.getValueHoverInfo(ymlDoc, new DocumentRegion(doc, region));
+ Renderable info = assistContext.getValueHoverInfo(ymlDoc, new DocumentRegion(doc, region));
return Tuples.of(info, region);
}
- HoverInfo info = assistContext.getHoverInfo();
+ Renderable info = assistContext.getHoverInfo();
return Tuples.of(info, region);
}
}
diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/schema/YTypeFactory.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/schema/YTypeFactory.java
index 5f517b395..ff74604d0 100644
--- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/schema/YTypeFactory.java
+++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/schema/YTypeFactory.java
@@ -21,10 +21,10 @@ import java.util.Set;
import javax.inject.Provider;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
import org.springframework.ide.vscode.commons.util.EnumValueParser;
+import org.springframework.ide.vscode.commons.util.Renderable;
+import org.springframework.ide.vscode.commons.util.Renderables;
import org.springframework.ide.vscode.commons.util.ValueParser;
-import org.springframework.ide.vscode.commons.yaml.util.DescriptionProviders;
/**
* Static utility method for creating YType objects representing either
@@ -193,7 +193,7 @@ public class YTypeFactory {
propertyList.add(p);
}
- public void addProperty(String name, YType type, HoverInfo description) {
+ public void addProperty(String name, YType type, Renderable description) {
YTypedPropertyImpl prop;
addProperty(prop = new YTypedPropertyImpl(name, type));
prop.setDescriptionProvider(description);
@@ -314,7 +314,7 @@ public class YTypeFactory {
final private String name;
final private YType type;
- private HoverInfo description = DescriptionProviders.NO_DESCRIPTION;
+ private Renderable description = Renderables.NO_DESCRIPTION;
private YTypedPropertyImpl(String name, YType type) {
this.name = name;
@@ -337,11 +337,11 @@ public class YTypeFactory {
}
@Override
- public HoverInfo getDescription() {
+ public Renderable getDescription() {
return description;
}
- public void setDescriptionProvider(HoverInfo description) {
+ public void setDescriptionProvider(Renderable description) {
this.description = description;
}
}
diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/schema/YTypedProperty.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/schema/YTypedProperty.java
index 3945dd37c..a29908405 100644
--- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/schema/YTypedProperty.java
+++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/schema/YTypedProperty.java
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.springframework.ide.vscode.commons.yaml.schema;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
+import org.springframework.ide.vscode.commons.util.Renderable;
/**
* @author Kris De Volder
@@ -18,5 +18,5 @@ import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
public interface YTypedProperty {
String getName();
YType getType();
- HoverInfo getDescription();
+ Renderable getDescription();
}
diff --git a/vscode-extensions/vscode-application-yaml/src/main/java/org/springframework/ide/vscode/application/yaml/completions/ApplicationYamlAssistContext.java b/vscode-extensions/vscode-application-yaml/src/main/java/org/springframework/ide/vscode/application/yaml/completions/ApplicationYamlAssistContext.java
index 8f516333f..3d03e724e 100644
--- a/vscode-extensions/vscode-application-yaml/src/main/java/org/springframework/ide/vscode/application/yaml/completions/ApplicationYamlAssistContext.java
+++ b/vscode-extensions/vscode-application-yaml/src/main/java/org/springframework/ide/vscode/application/yaml/completions/ApplicationYamlAssistContext.java
@@ -38,11 +38,11 @@ import org.springframework.ide.vscode.commons.languageserver.completion.IComplet
import org.springframework.ide.vscode.commons.languageserver.completion.LazyProposalApplier;
import org.springframework.ide.vscode.commons.languageserver.completion.ProposalApplier;
import org.springframework.ide.vscode.commons.languageserver.completion.ScoreableProposal;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
import org.springframework.ide.vscode.commons.languageserver.util.DocumentRegion;
import org.springframework.ide.vscode.commons.util.CollectionUtil;
import org.springframework.ide.vscode.commons.util.FuzzyMatcher;
import org.springframework.ide.vscode.commons.util.Log;
+import org.springframework.ide.vscode.commons.util.Renderable;
import org.springframework.ide.vscode.commons.util.StringUtil;
import org.springframework.ide.vscode.commons.yaml.completion.AbstractYamlAssistContext;
import org.springframework.ide.vscode.commons.yaml.completion.TopLevelAssistContext;
@@ -376,19 +376,19 @@ public abstract class ApplicationYamlAssistContext extends AbstractYamlAssistCon
@Override
- public HoverInfo getHoverInfo(YamlPathSegment lastSegment) {
+ public Renderable getHoverInfo(YamlPathSegment lastSegment) {
// TODO Auto-generated method stub
return null;
}
@Override
- public HoverInfo getValueHoverInfo(YamlDocument doc, DocumentRegion documentRegion) {
+ public Renderable getValueHoverInfo(YamlDocument doc, DocumentRegion documentRegion) {
// TODO Auto-generated method stub
return null;
}
@Override
- public HoverInfo getHoverInfo() {
+ public Renderable getHoverInfo() {
// TODO Auto-generated method stub
return null;
}
@@ -504,19 +504,19 @@ public abstract class ApplicationYamlAssistContext extends AbstractYamlAssistCon
}
@Override
- public HoverInfo getHoverInfo() {
+ public Renderable getHoverInfo() {
// TODO Auto-generated method stub
return null;
}
@Override
- public HoverInfo getHoverInfo(YamlPathSegment lastSegment) {
+ public Renderable getHoverInfo(YamlPathSegment lastSegment) {
// TODO Auto-generated method stub
return null;
}
@Override
- public HoverInfo getValueHoverInfo(YamlDocument doc, DocumentRegion documentRegion) {
+ public Renderable getValueHoverInfo(YamlDocument doc, DocumentRegion documentRegion) {
// TODO Auto-generated method stub
return null;
}
diff --git a/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlSchema.java b/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlSchema.java
index a13fe80ca..5aaa0de7f 100644
--- a/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlSchema.java
+++ b/vscode-extensions/vscode-manifest-yaml/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlSchema.java
@@ -15,7 +15,8 @@ import java.util.Set;
import javax.inject.Provider;
-import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfo;
+import org.springframework.ide.vscode.commons.util.Renderable;
+import org.springframework.ide.vscode.commons.util.Renderables;
import org.springframework.ide.vscode.commons.yaml.schema.YType;
import org.springframework.ide.vscode.commons.yaml.schema.YTypeFactory;
import org.springframework.ide.vscode.commons.yaml.schema.YTypeFactory.YAtomicType;
@@ -24,7 +25,6 @@ import org.springframework.ide.vscode.commons.yaml.schema.YTypeFactory.YTypedPro
import org.springframework.ide.vscode.commons.yaml.schema.YTypeUtil;
import org.springframework.ide.vscode.commons.yaml.schema.YValueHint;
import org.springframework.ide.vscode.commons.yaml.schema.YamlSchema;
-import org.springframework.ide.vscode.commons.yaml.util.DescriptionProviders;
import com.google.common.collect.ImmutableSet;
@@ -106,11 +106,11 @@ public class ManifestYmlSchema implements YamlSchema {
}
}
- private HoverInfo descriptionFor(String propName) {
- return DescriptionProviders.fromClasspath(this.getClass(), "/description-by-prop-name/"+propName);
+ private Renderable descriptionFor(String propName) {
+ return Renderables.fromClasspath(this.getClass(), "/description-by-prop-name/"+propName);
}
- private HoverInfo descriptionFor(YTypedPropertyImpl prop) {
+ private Renderable descriptionFor(YTypedPropertyImpl prop) {
return descriptionFor(prop.getName());
}
diff --git a/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlSchemaTest.java b/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlSchemaTest.java
index 97ec0d2b1..cc4222a3e 100644
--- a/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlSchemaTest.java
+++ b/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlSchemaTest.java
@@ -19,11 +19,11 @@ import java.util.List;
import java.util.Map;
import org.junit.Test;
+import org.springframework.ide.vscode.commons.util.Renderables;
import org.springframework.ide.vscode.commons.util.StringUtil;
import org.springframework.ide.vscode.commons.yaml.schema.YTypedProperty;
import org.springframework.ide.vscode.commons.yaml.schema.YTypeFactory.YBeanType;
import org.springframework.ide.vscode.commons.yaml.schema.YTypeFactory.YSeqType;
-import org.springframework.ide.vscode.commons.yaml.util.DescriptionProviders;
import org.springframework.ide.vscode.manifest.yaml.ManifestYmlSchema;
import com.google.common.collect.ImmutableSet;
@@ -113,14 +113,14 @@ public class ManifestYmlSchemaTest {
private void assertHasRealDescription(YTypedProperty p) {
{
- String noDescriptionText = DescriptionProviders.NO_DESCRIPTION.toHtml();
+ String noDescriptionText = Renderables.NO_DESCRIPTION.toHtml();
String actual = p.getDescription().toHtml();
String msg = "Description missing for '"+p.getName()+"'";
assertTrue(msg, StringUtil.hasText(actual));
assertFalse(msg, noDescriptionText.equals(actual));
}
{
- String noDescriptionText = DescriptionProviders.NO_DESCRIPTION.toMarkdown();
+ String noDescriptionText = Renderables.NO_DESCRIPTION.toMarkdown();
String actual = p.getDescription().toMarkdown();
String msg = "Description missing for '"+p.getName()+"'";
assertTrue(msg, StringUtil.hasText(actual));