@Override public CompletableFuture<List<? extends CodeLens>> codeLens(CodeLensParams params) { LOGGER.info("codeLens: " + params.getTextDocument()); return CompletableFuture.completedFuture(Collections.emptyList()); }
@Override public CompletableFuture<List<? extends CodeLens>> codeLens(CodeLensParams params) { logInfo(">> document/codeLens"); CodeLensHandler handler = new CodeLensHandler(preferenceManager); return computeAsync((cc) -> { IProgressMonitor monitor = toMonitor(cc); try { Job.getJobManager().join(DocumentLifeCycleHandler.DOCUMENT_LIFE_CYCLE_JOBS, monitor); } catch (OperationCanceledException ignorable) { // No need to pollute logs when query is cancelled } catch (InterruptedException e) { JavaLanguageServerPlugin.logException(e.getMessage(), e); } return handler.getCodeLensSymbols(params.getTextDocument().getUri(), monitor); }); }
@Test public void testGetCodeLensSymbols() throws Exception { String payload = createCodeLensSymbolsRequest("src/java/Foo.java"); CodeLensParams codeLensParams = getParams(payload); String uri = codeLensParams.getTextDocument().getUri(); assertFalse(uri.isEmpty()); //when List<CodeLens> result = handler.getCodeLensSymbols(uri, monitor); //then assertEquals("Found " + result, 3, result.size()); CodeLens cl = result.get(0); Range r = cl.getRange(); //CodeLens on main method assertRange(7, 20, 24, r); cl = result.get(1); r = cl.getRange(); // CodeLens on foo method assertRange(14, 13, 16, r); cl = result.get(2); r = cl.getRange(); //CodeLens on Foo type assertRange(5, 13, 16, r); }
@Test public void testDisableCodeLensSymbols() throws Exception { Preferences noCodeLenses = Preferences.createFrom(Collections.singletonMap(Preferences.REFERENCES_CODE_LENS_ENABLED_KEY, "false")); Mockito.reset(preferenceManager); when(preferenceManager.getPreferences()).thenReturn(noCodeLenses); handler = new CodeLensHandler(preferenceManager); String payload = createCodeLensSymbolsRequest("src/java/IFoo.java"); CodeLensParams codeLensParams = getParams(payload); String uri = codeLensParams.getTextDocument().getUri(); assertFalse(uri.isEmpty()); //when List<CodeLens> result = handler.getCodeLensSymbols(uri, monitor); //then assertEquals(0, result.size()); }
@Test public void testEnableImplementationsCodeLensSymbols() throws Exception { Preferences implementationsCodeLenses = Preferences.createFrom(Collections.singletonMap(Preferences.IMPLEMENTATIONS_CODE_LENS_ENABLED_KEY, "true")); Mockito.reset(preferenceManager); when(preferenceManager.getPreferences()).thenReturn(implementationsCodeLenses); handler = new CodeLensHandler(preferenceManager); String payload = createCodeLensSymbolsRequest("src/java/IFoo.java"); CodeLensParams codeLensParams = getParams(payload); String uri = codeLensParams.getTextDocument().getUri(); assertFalse(uri.isEmpty()); //when List<CodeLens> result = handler.getCodeLensSymbols(uri, monitor); //then assertEquals(2, result.size()); CodeLens lens = result.get(1); @SuppressWarnings("unchecked") List<Object> data = (List<Object>) lens.getData(); String type = (String) data.get(2); assertEquals(type, "implementations"); }
@Test public void testDisableImplementationsCodeLensSymbols() throws Exception { Preferences noImplementationsCodeLenses = Preferences.createFrom(Collections.singletonMap(Preferences.IMPLEMENTATIONS_CODE_LENS_ENABLED_KEY, "false")); Mockito.reset(preferenceManager); when(preferenceManager.getPreferences()).thenReturn(noImplementationsCodeLenses); Preferences noReferencesCodeLenses = Preferences.createFrom(Collections.singletonMap(Preferences.REFERENCES_CODE_LENS_ENABLED_KEY, "false")); Mockito.reset(preferenceManager); when(preferenceManager.getPreferences()).thenReturn(noReferencesCodeLenses); handler = new CodeLensHandler(preferenceManager); String payload = createCodeLensSymbolsRequest("src/java/IFoo.java"); CodeLensParams codeLensParams = getParams(payload); String uri = codeLensParams.getTextDocument().getUri(); assertFalse(uri.isEmpty()); //when List<CodeLens> result = handler.getCodeLensSymbols(uri, monitor); //then assertEquals(0, result.size()); }
@Override public CompletableFuture<List<? extends CodeLens>> codeLens(final CodeLensParams params) { final Function1<CancelIndicator, List<? extends CodeLens>> _function = (CancelIndicator cancelIndicator) -> { final URI uri = this._uriExtensions.toUri(params.getTextDocument().getUri()); final IResourceServiceProvider resourceServiceProvider = this.languagesRegistry.getResourceServiceProvider(uri); ICodeLensService _get = null; if (resourceServiceProvider!=null) { _get=resourceServiceProvider.<ICodeLensService>get(ICodeLensService.class); } final ICodeLensService codeLensService = _get; if ((codeLensService == null)) { return CollectionLiterals.<CodeLens>emptyList(); } final Function2<Document, XtextResource, List<? extends CodeLens>> _function_1 = (Document document, XtextResource resource) -> { final List<? extends CodeLens> result = codeLensService.computeCodeLenses(document, resource, params, cancelIndicator); this.installURI(result, uri.toString()); return result; }; return this.workspaceManager.<List<? extends CodeLens>>doRead(uri, _function_1); }; return this.requestManager.<List<? extends CodeLens>>runRead(_function); }
@Test public void testGetCodeLensSymbolsForClass() throws Exception { Preferences implementationsCodeLenses = Preferences.createFrom(Collections.singletonMap(Preferences.IMPLEMENTATIONS_CODE_LENS_ENABLED_KEY, "true")); Mockito.reset(preferenceManager); when(preferenceManager.getPreferences()).thenReturn(implementationsCodeLenses); handler = new CodeLensHandler(preferenceManager); String uriString = ClassFileUtil.getURI(project, "java.lang.Runnable"); String payload = createCodeLensSymbolRequest(new URI(uriString)); CodeLensParams codeLensParams = getParams(payload); String uri = codeLensParams.getTextDocument().getUri(); assertFalse(uri.isEmpty()); List<CodeLens> lenses = handler.getCodeLensSymbols(uri, monitor); assertEquals("Found " + lenses, 3, lenses.size()); }
@Test public void testGetCodeLenseBoundaries() { List<CodeLens> result = handler.getCodeLensSymbols(null, monitor); assertNotNull(result); assertEquals(0, result.size()); String payload = createCodeLensSymbolsRequest("src/java/Missing.java"); CodeLensParams codeLensParams = getParams(payload); String uri = codeLensParams.getTextDocument().getUri(); result = handler.getCodeLensSymbols(uri, monitor); assertEquals(0, result.size()); }
@Test public void testIgnoreLombokCodeLensSymbols() throws Exception { String payload = createCodeLensSymbolsRequest("src/java/Bar.java"); CodeLensParams codeLensParams = getParams(payload); String uri = codeLensParams.getTextDocument().getUri(); assertFalse(uri.isEmpty()); //when List<CodeLens> result = handler.getCodeLensSymbols(uri, monitor); //then assertEquals("Found " + result, 4, result.size()); //CodeLens on constructor CodeLens cl = result.get(0); assertRange(7, 11, 14, cl.getRange()); //CodeLens on somethingFromJPAModelGen cl = result.get(1); assertRange(16, 16, 40, cl.getRange()); // CodeLens on foo cl = result.get(2); assertRange(22, 16, 19, cl.getRange()); //CodeLens on Bar type cl = result.get(3); assertRange(5, 13, 16, cl.getRange()); }
@Override public CompletableFuture<ICodeLens[]> provideCodeLenses(ICodeLensContext context, IProgressMonitor monitor) { ITextEditor textEditor = ((IEditorCodeLensContext) context).getTextEditor(); LSPDocumentInfo info = null; Collection<LSPDocumentInfo> infos = LanguageServiceAccessor.getLSPDocumentInfosFor( LSPEclipseUtils.getDocument((ITextEditor) textEditor), capabilities -> capabilities.getCodeLensProvider() != null); if (!infos.isEmpty()) { info = infos.iterator().next(); } else { info = null; } if (info != null) { CodeLensParams param = new CodeLensParams(new TextDocumentIdentifier(info.getFileUri().toString())); final CompletableFuture<List<? extends CodeLens>> codeLens = info.getLanguageClient() .getTextDocumentService().codeLens(param); return codeLens.thenApply(lens -> { List<ICodeLens> lenses = new ArrayList<>(); for (CodeLens cl : lens) { lenses.add(new LSPCodeLens(cl)); } return lenses.toArray(new ICodeLens[lenses.size()]); }); // try { // // // // List<ICodeLens> lenses = new ArrayList<>(); // List<? extends CodeLens> lens = codeLens.get(5000, TimeUnit.MILLISECONDS); // for (CodeLens cl : lens) { // lenses.add(new LSPCodeLens(cl)); // } // return lenses.toArray(new ICodeLens[lenses.size()]); // } catch (Exception e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } } return null; }
@Override public CompletableFuture<List<? extends CodeLens>> codeLens(final CodeLensParams params) { List<CodeLens> result = new ArrayList<>(); som.getCodeLenses(result, params.getTextDocument().getUri()); return CompletableFuture.completedFuture(result); }
@Override public CompletableFuture<List<? extends CodeLens>> codeLens(CodeLensParams params) { throw new UnsupportedOperationException(); }
@Override public CompletableFuture<List<? extends CodeLens>> codeLens(CodeLensParams params) { return null; }
/** * The code lens request is sent from the client to the server to compute * code lenses for a given text document. * * Registration Options: CodeLensRegistrationOptions */ @JsonRequest CompletableFuture<List<? extends CodeLens>> codeLens(CodeLensParams params);
/** * compute code lenses for the given context. */ public abstract List<? extends CodeLens> computeCodeLenses(final Document document, final XtextResource resource, final CodeLensParams params, final CancelIndicator indicator);