@Test public void testProvideDocumentationOnHover() throws Exception { CamelLanguageServer camelLanguageServer = initializeLanguageServer("<from uri=\"ahc:httpUri\" xmlns=\"http://camel.apache.org/schema/spring\"></from>\n"); TextDocumentPositionParams position = new TextDocumentPositionParams(new TextDocumentIdentifier(DUMMY_URI), new Position(0, 13)); CompletableFuture<Hover> hover = camelLanguageServer.getTextDocumentService().hover(position); assertThat(hover.get().getContents().get(0).getLeft()).isEqualTo(AHC_DOCUMENTATION); }
@Test public void testHover() throws Exception { //given //Hovers on the System.out String payload = createHoverRequest("src/java/Foo.java", 5, 15); TextDocumentPositionParams position = getParams(payload); //when Hover hover = handler.hover(position, monitor); //then assertNotNull(hover); assertNotNull(hover.getContents()); MarkedString signature = hover.getContents().get(0).getRight(); assertEquals("Unexpected hover " + signature, "java", signature.getLanguage()); assertEquals("Unexpected hover " + signature, "java.Foo", signature.getValue()); String doc = hover.getContents().get(1).getLeft(); assertEquals("Unexpected hover " + doc, "This is foo", doc); }
@Test public void testHoverStandalone() throws Exception { //given //Hovers on the System.out URI standalone = Paths.get("projects","maven","salut","src","main","java","java","Foo.java").toUri(); String payload = createHoverRequest(standalone, 10, 71); TextDocumentPositionParams position = getParams(payload); //when Hover hover = handler.hover(position, monitor); //then assertNotNull(hover); assertNotNull(hover.getContents()); MarkedString signature = hover.getContents().get(0).getRight(); assertEquals("Unexpected hover " + signature, "java", signature.getLanguage()); assertEquals("Unexpected hover " + signature, "java.Foo", signature.getValue()); String doc = hover.getContents().get(1).getLeft(); assertEquals("Unexpected hover "+doc, "This is foo", doc); }
@Test public void testHoverPackage() throws Exception { // given // Hovers on the java.internal package String payload = createHoverRequest("src/java/Baz.java", 2, 16); TextDocumentPositionParams position = getParams(payload); // when Hover hover = handler.hover(position, monitor); // then assertNotNull(hover); String signature = hover.getContents().get(0).getRight().getValue();// assertEquals("Unexpected signature ", "java.internal", signature); String result = hover.getContents().get(1).getLeft();// assertEquals("Unexpected hover ", "this is a **bold** package!", result); }
@Test public void testEmptyHover() throws Exception { //given //Hovers on the System.out URI standalone = Paths.get("projects","maven","salut","src","main","java","java","Foo.java").toUri(); String payload = createHoverRequest(standalone, 1, 2); TextDocumentPositionParams position = getParams(payload); //when Hover hover = handler.hover(position, monitor); //then assertNotNull(hover); assertNotNull(hover.getContents()); assertEquals(1, hover.getContents().size()); assertEquals("Should find empty hover for " + payload, "", hover.getContents().get(0).getLeft()); }
@Test public void testHoverVariable() throws Exception { //given //Hover on args parameter String argParam = createHoverRequest("src/java/Foo.java", 7, 37); TextDocumentPositionParams position = getParams(argParam); //when Hover hover = handler.hover(position, monitor); //then assertNotNull(hover); assertNotNull(hover.getContents()); MarkedString signature = hover.getContents().get(0).getRight(); assertEquals("Unexpected hover " + signature, "java", signature.getLanguage()); assertEquals("Unexpected hover " + signature, "String[] args - java.Foo.main(String[])", signature.getValue()); }
@Test public void testHoverOnPackageWithJavadoc() throws Exception { importProjects("maven/salut2"); project = WorkspaceHelper.getProject("salut2"); handler = new HoverHandler(preferenceManager); //given //Hovers on the org.apache.commons import String payload = createHoverRequest("src/main/java/foo/Bar.java", 2, 22); TextDocumentPositionParams position = getParams(payload); //when Hover hover = handler.hover(position, monitor); assertNotNull(hover); String result = hover.getContents().get(0).getRight().getValue();// assertEquals("Unexpected hover ", "org.apache.commons", result); assertEquals(logListener.getErrors().toString(), 0, logListener.getErrors().size()); }
@Test public void testHoverThrowable() throws Exception { String uriString = ClassFileUtil.getURI(project, "java.lang.Exception"); IClassFile classFile = JDTUtils.resolveClassFile(uriString); String contents = JavaLanguageServerPlugin.getContentProviderManager().getSource(classFile, monitor); IDocument document = new Document(contents); IRegion region = new FindReplaceDocumentAdapter(document).find(0, "Throwable", true, false, false, false); int offset = region.getOffset(); int line = document.getLineOfOffset(offset); int character = offset - document.getLineOffset(line); TextDocumentIdentifier textDocument = new TextDocumentIdentifier(uriString); Position position = new Position(line, character); TextDocumentPositionParams params = new TextDocumentPositionParams(textDocument, position); Hover hover = handler.hover(params, monitor); assertNotNull(hover); assertTrue("Unexpected hover ", !hover.getContents().isEmpty()); }
@Override public CompletableFuture<Hover> hover(final TextDocumentPositionParams params) { final Function1<CancelIndicator, Hover> _function = (CancelIndicator cancelIndicator) -> { final URI uri = this._uriExtensions.toUri(params.getTextDocument().getUri()); final IResourceServiceProvider resourceServiceProvider = this.languagesRegistry.getResourceServiceProvider(uri); IHoverService _get = null; if (resourceServiceProvider!=null) { _get=resourceServiceProvider.<IHoverService>get(IHoverService.class); } final IHoverService hoverService = _get; if ((hoverService == null)) { return IHoverService.EMPTY_HOVER; } final Function2<Document, XtextResource, Hover> _function_1 = (Document document, XtextResource resource) -> { return hoverService.hover(document, resource, params, cancelIndicator); }; return this.workspaceManager.<Hover>doRead(uri, _function_1); }; return this.requestManager.<Hover>runRead(_function); }
public CompletableFuture<Hover> getHover(Position position) { try { ParserFileHelper parserFileHelper = new ParserFileHelper(); if(parserFileHelper.getCorrespondingCamelNodeForCompletion(textDocumentItem, position.getLine()) != null){ String camelComponentUri = parserFileHelper.getCamelComponentUri(textDocumentItem, position); String componentName = StringUtils.asComponentName(camelComponentUri); if (componentName != null) { return camelCatalog.thenApply(new HoverFuture(componentName)); } } } catch (Exception e) { LOGGER.error("Error searching hover", e); } return CompletableFuture.completedFuture(null); }
@Override public Hover apply(CamelCatalog camelCatalog) { Hover hover = new Hover(); ComponentModel componentModel = ModelHelper.generateComponentModel(camelCatalog.componentJSonSchema(componentName), true); hover.setContents(Collections.singletonList((Either.forLeft(componentModel.getDescription())))); return hover; }
@Test public void testDontProvideDocumentationOnHoverForBadPlaces() throws Exception { CamelLanguageServer camelLanguageServer = initializeLanguageServer("<from uri=\"ahc:httpUri\" xmlns=\"http://camel.apache.org/schema/spring\"></from>\n"); TextDocumentPositionParams position = new TextDocumentPositionParams(new TextDocumentIdentifier(DUMMY_URI), new Position(0, 4)); CompletableFuture<Hover> hover = camelLanguageServer.getTextDocumentService().hover(position); assertThat(hover.get()).isNull(); }
public static Hover hoverText(Element el, Javadocs docs) { Optional<String> doc = docs.doc(el).map(Hovers::commentText).map(Javadocs::htmlToMarkdown); String sig = signature(el); String result = doc.map(text -> String.format("```java\n%s\n```\n%s", sig, text)).orElse(sig); return new Hover(Collections.singletonList(Either.forLeft(result)), null); }
public Hover hover(TextDocumentPositionParams position, IProgressMonitor monitor) { ITypeRoot unit = JDTUtils.resolveTypeRoot(position.getTextDocument().getUri()); List<Either<String, MarkedString>> content = null; if (unit != null && !monitor.isCanceled()) { content = computeHover(unit, position.getPosition().getLine(), position.getPosition().getCharacter(), monitor); } Hover $ = new Hover(); $.setContents(content); return $; }
@Test public void testHoverInheritedJavadoc() throws Exception { // given // Hovers on the overriding foo() String payload = createHoverRequest("src/java/Bar.java", 22, 19); TextDocumentPositionParams position = getParams(payload); // when Hover hover = handler.hover(position, monitor); // then assertNotNull(hover); String result = hover.getContents().get(1).getLeft();// assertEquals("Unexpected hover ", "This method comes from Foo", result); }
@Test public void testHoverOverNullElement() throws Exception { IPackageFragment pack1 = sourceFolder.createPackageFragment("test1", false, null); StringBuilder buf = new StringBuilder(); buf.append("package test1;\n"); buf.append("import javax.xml.bind.Binder;\n"); buf.append("public class E {}\n"); ICompilationUnit cu = pack1.createCompilationUnit("E.java", buf.toString(), false, null); Hover hover = getHover(cu, 1, 8); assertNotNull(hover); assertEquals(1, hover.getContents().size()); assertEquals("Unexpected hover ", "javax", hover.getContents().get(0).getRight().getValue()); }
@Test public void testHoverUnresolvedType() throws Exception { importProjects("eclipse/unresolvedtype"); project = WorkspaceHelper.getProject("unresolvedtype"); handler = new HoverHandler(preferenceManager); //given //Hovers on the IFoo String payload = createHoverRequest("src/pckg/Foo.java", 2, 31); TextDocumentPositionParams position = getParams(payload); // when Hover hover = handler.hover(position, monitor); assertNotNull(hover); assertTrue("Unexpected hover ", hover.getContents().isEmpty()); }
/** * @param cu * @return */ private String getTitleHover(ICompilationUnit cu, int line, int character) { // when Hover hover = getHover(cu, line, character); // then assertNotNull(hover); MarkedString result = hover.getContents().get(0).getRight(); return result.getValue(); }
protected String _toExpectation(final Hover it) { StringConcatenation _builder = new StringConcatenation(); String _expectation = this.toExpectation(it.getRange()); _builder.append(_expectation); _builder.newLineIfNotEmpty(); String _expectation_1 = this.toExpectation(it.getContents()); _builder.append(_expectation_1); _builder.newLineIfNotEmpty(); return _builder.toString(); }
protected Hover hover(final HoverContext context) { if ((context == null)) { return IHoverService.EMPTY_HOVER; } final List<Either<String, MarkedString>> contents = this.getContents(context); if ((contents == null)) { return IHoverService.EMPTY_HOVER; } final Range range = this.getRange(context); if ((range == null)) { return IHoverService.EMPTY_HOVER; } return new Hover(contents, range); }
@Test public void testEitherConversion() { Either<String, MarkedString> either1 = Either.forLeft("foobar"); Either<String, MarkedString> either2 = Either.forLeft("bar"); List<Either<String, MarkedString>> entries = Arrays.asList(either1, either2); Hover hover = new Hover(entries, new Range(new Position(0, 1), new Position(2, 3))); HoverDto originalDto = new HoverDto(hover); Assert.assertTrue(reflectionEquals(originalDto, hover)); String jsonString = originalDto.toJson(); HoverDto convertedDto = HoverDto.fromJson(jsonString); Assert.assertTrue(reflectionEquals(originalDto, convertedDto)); }
private String renderContent(Hover hover) { List<String> contents = new ArrayList<>(); for (Either<String, MarkedString> dto : hover.getContents()) { if (dto.isLeft()) { // plain markdown text contents.add(dto.getLeft()); } else { contents.add(dto.getRight().getLanguage()); contents.add(dto.getRight().getValue()); } } return Joiner.on("\n\n").join(contents); }
@Override public CompletableFuture<Hover> hover(TextDocumentPositionParams position) { LOGGER.info("hover: " + position.getTextDocument()); TextDocumentItem textDocumentItem = openedDocuments.get(position.getTextDocument().getUri()); return new HoverProcessor(textDocumentItem, camelCatalog).getHover(position.getPosition()); }
@Override public CompletableFuture<Hover> hover(final TextDocumentPositionParams position) { // TODO Auto-generated method stub return null; }
@Override public CompletableFuture<Hover> hover(TextDocumentPositionParams position) { logInfo(">> document/hover"); HoverHandler handler = new HoverHandler(this.preferenceManager); return computeAsync((cc) -> handler.hover(position, toMonitor(cc))); }
private Hover getHover(ICompilationUnit cu, int line, int character) { String payload = createHoverRequest(cu, line, character); TextDocumentPositionParams position = getParams(payload); return handler.hover(position, monitor); }
@Pure public Procedure1<? super Hover> getAssertHover() { return this.assertHover; }
public void setAssertHover(final Procedure1<? super Hover> assertHover) { this.assertHover = assertHover; }
@Override public Hover hover(final Document document, final XtextResource resource, final TextDocumentPositionParams params, final CancelIndicator cancelIndicator) { final int offset = document.getOffSet(params.getPosition()); final HoverContext context = this.createContext(document, resource, offset); return this.hover(context); }
@Override public CompletableFuture<Hover> hover(TextDocumentPositionParams position) { throw new UnsupportedOperationException(); }
@Override public CompletableFuture<Hover> hover(TextDocumentPositionParams position) { return null; }
/** * The hover request is sent from the client to the server to request hover * information at a given text document position. * * Registration Options: TextDocumentRegistrationOptions */ @JsonRequest CompletableFuture<Hover> hover(TextDocumentPositionParams position);
protected String toExpectation(final Object it) { if (it instanceof Integer) { return _toExpectation((Integer)it); } else if (it instanceof List) { return _toExpectation((List<?>)it); } else if (it instanceof DocumentHighlightKind) { return _toExpectation((DocumentHighlightKind)it); } else if (it instanceof String) { return _toExpectation((String)it); } else if (it == null) { return _toExpectation((Void)null); } else if (it instanceof Map) { return _toExpectation((Map<Object, Object>)it); } else if (it instanceof CodeLens) { return _toExpectation((CodeLens)it); } else if (it instanceof ColoringInformation) { return _toExpectation((ColoringInformation)it); } else if (it instanceof Command) { return _toExpectation((Command)it); } else if (it instanceof CompletionItem) { return _toExpectation((CompletionItem)it); } else if (it instanceof DocumentHighlight) { return _toExpectation((DocumentHighlight)it); } else if (it instanceof Hover) { return _toExpectation((Hover)it); } else if (it instanceof Location) { return _toExpectation((Location)it); } else if (it instanceof Position) { return _toExpectation((Position)it); } else if (it instanceof Range) { return _toExpectation((Range)it); } else if (it instanceof SignatureHelp) { return _toExpectation((SignatureHelp)it); } else if (it instanceof SymbolInformation) { return _toExpectation((SymbolInformation)it); } else if (it instanceof TextEdit) { return _toExpectation((TextEdit)it); } else if (it instanceof WorkspaceEdit) { return _toExpectation((WorkspaceEdit)it); } else if (it instanceof Either) { return _toExpectation((Either<?, ?>)it); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(it).toString()); } }
/** * callback for 'textDocument/hover' requests. */ public abstract Hover hover(final Document document, final XtextResource resource, final TextDocumentPositionParams params, final CancelIndicator cancelIndicator);
/** * GWT client implementation of {@link TextDocumentService#hover(TextDocumentPositionParams)} * * @param params * @return */ public Promise<Hover> hover(TextDocumentPositionParams params) { return transmitDtoAndReceiveDto(params, "textDocument/hover", Hover.class); }