Java 类org.eclipse.lsp4j.CompletionList 实例源码

项目:camel-language-server    文件:CamelTextDocumentServiceTest.java   
@Test
public void testChangeEventUpdatesStoredText() throws Exception {
    CamelLanguageServer camelLanguageServer = initializeLanguageServer("<to uri=\"\" xmlns=\"http://camel.apache.org/schema/blueprint\"></to>\n");

    DidChangeTextDocumentParams changeEvent = new DidChangeTextDocumentParams();
    VersionedTextDocumentIdentifier textDocument = new VersionedTextDocumentIdentifier();
    textDocument.setUri(DUMMY_URI);
    changeEvent.setTextDocument(textDocument);
    TextDocumentContentChangeEvent contentChange = new TextDocumentContentChangeEvent("<to xmlns=\"http://camel.apache.org/schema/blueprint\" uri=\"\"></to>\n");
    changeEvent.setContentChanges(Collections.singletonList(contentChange));
    camelLanguageServer.getTextDocumentService().didChange(changeEvent);

    //check old position doesn't provide completion
    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completionsAtOldPosition = getCompletionFor(camelLanguageServer, new Position(0, 11));
    assertThat(completionsAtOldPosition.get().getLeft()).isEmpty();

    //check new position provides completion
    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completionsAtNewPosition = getCompletionFor(camelLanguageServer, new Position(0, 58));
    assertThat(completionsAtNewPosition.get().getLeft()).isNotEmpty();

}
项目:eclipse.jdt.ls    文件:CompletionHandler.java   
Either<List<CompletionItem>, CompletionList> completion(TextDocumentPositionParams position,
        IProgressMonitor monitor) {
    List<CompletionItem> completionItems = null;
    try {
        ICompilationUnit unit = JDTUtils.resolveCompilationUnit(position.getTextDocument().getUri());
        completionItems = this.computeContentAssist(unit,
                position.getPosition().getLine(),
                position.getPosition().getCharacter(), monitor);
    } catch (OperationCanceledException ignorable) {
        // No need to pollute logs when query is cancelled
        monitor.setCanceled(true);
    } catch (Exception e) {
        JavaLanguageServerPlugin.logException("Problem with codeComplete for " +  position.getTextDocument().getUri(), e);
        monitor.setCanceled(true);
    }
    CompletionList $ = new CompletionList();
    if (monitor.isCanceled()) {
        $.setIsIncomplete(true);
        completionItems = null;
        JavaLanguageServerPlugin.logInfo("Completion request cancelled");
    } else {
        JavaLanguageServerPlugin.logInfo("Completion request completed");
    }
    $.setItems(completionItems == null ? Collections.emptyList() : completionItems);
    return Either.forRight($);
}
项目:eclipse.jdt.ls    文件:JDTLanguageServer.java   
@Override
public CompletableFuture<Either<List<CompletionItem>, CompletionList>> completion(TextDocumentPositionParams position) {
    logInfo(">> document/completion");
    CompletionHandler handler = new CompletionHandler();
    final IProgressMonitor[] monitors = new IProgressMonitor[1];
    CompletableFuture<Either<List<CompletionItem>, CompletionList>> result = computeAsync((cc) -> {
        monitors[0] = toMonitor(cc);
        if (Boolean.getBoolean(JAVA_LSP_JOIN_ON_COMPLETION)) {
            try {
                Job.getJobManager().join(DocumentLifeCycleHandler.DOCUMENT_LIFE_CYCLE_JOBS, monitors[0]);
            } catch (OperationCanceledException ignorable) {
                // No need to pollute logs when query is cancelled
            } catch (InterruptedException e) {
                JavaLanguageServerPlugin.logException(e.getMessage(), e);
            }
        }
        return handler.completion(position, monitors[0]);
    });
    result.join();
    if (monitors[0].isCanceled()) {
        result.cancel(true);
    }
    return result;
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_import_package() throws JavaModelException{
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "import java.sq \n" +
                    "public class Foo {\n"+
                    "   void foo() {\n"+
                    "   }\n"+
            "}\n");

    int[] loc = findCompletionLocation(unit, "java.sq");

    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();

    assertNotNull(list);
    assertEquals(1, list.getItems().size());
    CompletionItem item = list.getItems().get(0);
    // Check completion item
    assertNull(item.getInsertText());
    assertEquals("java.sql",item.getLabel());
    assertEquals(CompletionItemKind.Module, item.getKind() );
    assertEquals("999999215", item.getSortText());
    assertNull(item.getTextEdit());


    CompletionItem resolvedItem = server.resolveCompletionItem(item).join();
    assertNotNull(resolvedItem);
    TextEdit te = item.getTextEdit();
    assertNotNull(te);
    assertEquals("java.sql.*;",te.getNewText());
    assertNotNull(te.getRange());
    Range range = te.getRange();
    assertEquals(0, range.getStart().getLine());
    assertEquals(7, range.getStart().getCharacter());
    assertEquals(0, range.getEnd().getLine());
    //Not checking the range end character
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
public void testCompletion_plainTextDoc() throws Exception{
    ICompilationUnit unit = getWorkingCopy(
            //@formatter:off
            "src/java/Foo.java",
            "import java.sq \n" +
            "public class Foo {\n"+
            "   void foo() {\n"+
            "      zz\n"+
            "   }\n\"   }\\n\"+"+
            "\n"+
            "/** This should be <bold>plain</bold>.*/\n" +
            "   void zzz() {}\n"+
            "}\n");
            //@formatter:off
    int[] loc = findCompletionLocation(unit, "   zz");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    assertFalse("No proposals were found", list.getItems().isEmpty());
    CompletionItem item = list.getItems().get(0);
    assertEquals("zzz() : void", item.getLabel());

    CompletionItem resolvedItem = server.resolveCompletionItem(item).join();
    assertEquals("This should be plain.", resolvedItem.getDocumentation());
}
项目:xtext-core    文件:LanguageServerImpl.java   
protected Either<List<CompletionItem>, CompletionList> completion(final CancelIndicator origialCancelIndicator, final TextDocumentPositionParams params) {
  final LanguageServerImpl.BufferedCancelIndicator cancelIndicator = new LanguageServerImpl.BufferedCancelIndicator(origialCancelIndicator);
  final URI uri = this._uriExtensions.toUri(params.getTextDocument().getUri());
  final IResourceServiceProvider resourceServiceProvider = this.languagesRegistry.getResourceServiceProvider(uri);
  ContentAssistService _get = null;
  if (resourceServiceProvider!=null) {
    _get=resourceServiceProvider.<ContentAssistService>get(ContentAssistService.class);
  }
  final ContentAssistService contentAssistService = _get;
  if ((contentAssistService == null)) {
    CompletionList _completionList = new CompletionList();
    return Either.<List<CompletionItem>, CompletionList>forRight(_completionList);
  }
  final Function2<Document, XtextResource, CompletionList> _function = (Document document, XtextResource resource) -> {
    return contentAssistService.createCompletionList(document, resource, params, cancelIndicator);
  };
  final CompletionList completionList = this.workspaceManager.<CompletionList>doRead(uri, _function);
  return Either.<List<CompletionItem>, CompletionList>forRight(completionList);
}
项目:lsp4j    文件:LauncherTest.java   
@Test public void testRequest() throws Exception {

    TextDocumentPositionParams p = new TextDocumentPositionParams();
    p.setPosition(new Position(1,1));
    p.setTextDocument(new TextDocumentIdentifier("test/foo.txt"));

    CompletionList result = new CompletionList();
    result.setIsIncomplete(true);
    result.setItems(new ArrayList<>());

    CompletionItem item = new CompletionItem();
    item.setDetail("test");
    item.setDocumentation("doc");
    item.setFilterText("filter");
    item.setInsertText("insert");
    item.setKind(CompletionItemKind.Field);
    result.getItems().add(item);

    server.expectedRequests.put("textDocument/completion", new Pair<>(p, result));
    CompletableFuture<Either<List<CompletionItem>, CompletionList>> future = clientLauncher.getRemoteProxy().getTextDocumentService().completion(p);
    Assert.assertEquals(Either.forRight(result).toString(), future.get(TIMEOUT, TimeUnit.MILLISECONDS).toString());
    client.joinOnEmpty();
}
项目:camel-language-server    文件:CamelLanguageServerTest.java   
@Test
public void testProvideCompletionForCamelBlueprintNamespace() throws Exception {
    CamelLanguageServer camelLanguageServer = initializeLanguageServer("<from uri=\"\" xmlns=\"http://camel.apache.org/schema/blueprint\"></from>\n");

    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completions = getCompletionFor(camelLanguageServer, new Position(0, 11));

    assertThat(completions.get().getLeft()).contains(expectedAhcCompletioncompletionItem);
}
项目:camel-language-server    文件:CamelLanguageServerTest.java   
@Test
public void testProvideCompletionForToCamelBlueprintNamespace() throws Exception {
    CamelLanguageServer camelLanguageServer = initializeLanguageServer("<to uri=\"\" xmlns=\"http://camel.apache.org/schema/blueprint\"></to>\n");

    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completions = getCompletionFor(camelLanguageServer, new Position(0, 9));

    assertThat(completions.get().getLeft()).contains(expectedAhcCompletioncompletionItem);
}
项目:camel-language-server    文件:CamelLanguageServerTest.java   
@Test
public void testProvideCompletionForCamelSpringNamespace() throws Exception {
    CamelLanguageServer camelLanguageServer = initializeLanguageServer("<from uri=\"\" xmlns=\"http://camel.apache.org/schema/spring\"></from>\n");

    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completions = getCompletionFor(camelLanguageServer, new Position(0, 11));

    assertThat(completions.get().getLeft()).contains(expectedAhcCompletioncompletionItem);
}
项目:camel-language-server    文件:CamelLanguageServerTest.java   
@Test
public void testProvideCompletionforMultiline() throws Exception {
    CamelLanguageServer camelLanguageServer = initializeLanguageServer(
            "<camelContext xmlns=\"http://camel.apache.org/schema/spring\">\n" + 
            "<to uri=\"\" ></to>\n" + 
            "</camelContext>");

    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completions = getCompletionFor(camelLanguageServer, new Position(1, 9));

    assertThat(completions.get().getLeft()).contains(expectedAhcCompletioncompletionItem);
}
项目:camel-language-server    文件:CamelLanguageServerTest.java   
@Test
public void testDONTProvideCompletionForNotCamelnamespace() throws Exception {
    CamelLanguageServer camelLanguageServer = initializeLanguageServer("<from uri=\"\"></from>\n");

    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completions = getCompletionFor(camelLanguageServer, new Position(0, 11));

    assertThat(completions.get().getLeft()).isEmpty();
    assertThat(completions.get().getRight()).isNull();
}
项目:camel-language-server    文件:CamelLanguageServerTest.java   
@Test
public void testDONTProvideCompletionWhenNotAfterURIEqualQuote() throws Exception {
    CamelLanguageServer camelLanguageServer = initializeLanguageServer("<from uri=\"\" xmlns=\"http://camel.apache.org/schema/spring\"></from>\n");

    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completions = getCompletionFor(camelLanguageServer, new Position(0, 6));

    assertThat(completions.get().getLeft()).isEmpty();
    assertThat(completions.get().getRight()).isNull();
}
项目:camel-language-server    文件:CamelComponentOptionBooleanValuesTest.java   
private void testProvideCamelOptions(String textTotest, int line, int character) throws URISyntaxException, InterruptedException, ExecutionException {
    CamelLanguageServer camelLanguageServer = initializeLanguageServer(textTotest);

    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completions = getCompletionFor(camelLanguageServer, new Position(line, character));

    assertThat(completions.get().getLeft()).contains(
            new CompletionItem("true"),
            new CompletionItem("false"));
}
项目:camel-language-server    文件:CamelLanguageServerCompletionPositionTest.java   
@Test
public void testProvideCompletionForCamelBlueprintNamespace() throws Exception {
    CamelLanguageServer camelLanguageServer = initializeLanguageServer(textToTest);

    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completions = getCompletionFor(camelLanguageServer, new Position(line, character));

    if(shouldHaveCompletion) {
        assertThat(completions.get().getLeft()).contains(expectedAhcCompletioncompletionItem);
    } else {
        assertThat(completions.get().getLeft()).doesNotContain(expectedAhcCompletioncompletionItem);
        assertThat(completions.get().getRight()).isNull();
    }
}
项目:camel-language-server    文件:CamelComponentOptionEnumerationValuesTest.java   
private void testProvideCamelOptions(String textTotest, int line, int character) throws URISyntaxException, InterruptedException, ExecutionException {
    CamelLanguageServer camelLanguageServer = initializeLanguageServer(textTotest);

    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completions = getCompletionFor(camelLanguageServer, new Position(line, character));

    assertThat(completions.get().getLeft()).contains(
            new CompletionItem("InOnly"),
            new CompletionItem("RobustInOnly"),
            new CompletionItem("InOut"),
            new CompletionItem("InOptionalOut"),
            new CompletionItem("OutOnly"),
            new CompletionItem("RobustOutOnly"),
            new CompletionItem("OutIn"),
            new CompletionItem("OutOptionalIn"));
}
项目:camel-language-server    文件:AbstractCamelLanguageServerTest.java   
protected CompletableFuture<Either<List<CompletionItem>, CompletionList>> getCompletionFor(CamelLanguageServer camelLanguageServer, Position position) {
    TextDocumentService textDocumentService = camelLanguageServer.getTextDocumentService();

    TextDocumentPositionParams dummyCompletionPositionRequest = new TextDocumentPositionParams(new TextDocumentIdentifier(DUMMY_URI), position);
    CompletableFuture<Either<List<CompletionItem>, CompletionList>> completions = textDocumentService.completion(dummyCompletionPositionRequest);
    return completions;
}
项目:SOMns-vscode    文件:SomLanguageServer.java   
@Override
public CompletableFuture<Either<List<CompletionItem>, CompletionList>> completion(
    final TextDocumentPositionParams position) {
  CompletionList result = som.getCompletions(
      position.getTextDocument().getUri(), position.getPosition().getLine(),
      position.getPosition().getCharacter());
  return CompletableFuture.completedFuture(Either.forRight(result));
}
项目:SOMns-vscode    文件:SomAdapter.java   
public CompletionList getCompletions(final String docUri, final int line,
    final int character) {
  CompletionList result = new CompletionList();
  result.setIsIncomplete(true);

  SomStructures probe = getProbe(docUri);
  if (probe == null) {
    return result;
  }

  // TODO: this expects that this can be parsed without issues...
  // +1 to get to one based index, - 1 to get back into the element
  ExpressionNode node = probe.getElementAt(line + 1, Math.max(character - 1, 0));
  if (node == null) {
    return result;
  }

  SSymbol sym = null;
  if (node instanceof Send) {
    sym = ((Send) node).getSelector();
  } else {
    if (ServerLauncher.DEBUG) {
      reportError("GET COMPLETIONS, unsupported node: " + node.getClass().getSimpleName());
    }
  }

  if (sym != null) {
    Set<CompletionItem> completion = new HashSet<>();
    Collection<SomStructures> probes = getProbes();

    for (SomStructures s : probes) {
      s.getCompletions(sym, completion);
    }
    result.setItems(new ArrayList<>(completion));
  }

  return result;
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_javadoc() throws Exception {
    IJavaProject javaProject = JavaCore.create(project);
    ICompilationUnit unit = (ICompilationUnit) javaProject.findElement(new Path("org/sample/TestJavadoc.java"));
    unit.becomeWorkingCopy(null);
    String joinOnCompletion = System.getProperty(JDTLanguageServer.JAVA_LSP_JOIN_ON_COMPLETION);
    try {
        System.setProperty(JDTLanguageServer.JAVA_LSP_JOIN_ON_COMPLETION, "true");
        int[] loc = findCompletionLocation(unit, "inner.");
        TextDocumentPositionParams position = JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]));
        String source = unit.getSource();
        changeDocument(unit, source, 3);
        Job.getJobManager().join(DocumentLifeCycleHandler.DOCUMENT_LIFE_CYCLE_JOBS, new NullProgressMonitor());
        changeDocument(unit, source, 4);
        CompletionList list = server.completion(position).join().getRight();
        for (CompletionItem item : list.getItems()) {
            server.resolveCompletionItem(item);
        }
        CompletionItem resolved = list.getItems().get(0);
        assertEquals("Test ", resolved.getDocumentation());
    } finally {
        unit.discardWorkingCopy();
        if (joinOnCompletion == null) {
            System.clearProperty(JDTLanguageServer.JAVA_LSP_JOIN_ON_COMPLETION);
        } else {
            System.setProperty(JDTLanguageServer.JAVA_LSP_JOIN_ON_COMPLETION, joinOnCompletion);
        }
    }
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_object() throws Exception{
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "   void foo() {\n"+
                    "       Objec\n"+
                    "   }\n"+
            "}\n");
    int[] loc = findCompletionLocation(unit, "Objec");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    assertFalse("No proposals were found",list.getItems().isEmpty());

    List<CompletionItem> items = list.getItems();
    for ( CompletionItem item : items) {
        assertTrue(isNotBlank(item.getLabel()));
        assertNotNull(item.getKind() );
        assertTrue(isNotBlank(item.getSortText()));
        //text edits are not set during calls to "completion"
        assertNull(item.getTextEdit());
        assertTrue(isNotBlank(item.getInsertText()));
        assertNotNull(item.getFilterText());
        assertFalse(item.getFilterText().contains(" "));
        assertTrue(item.getLabel().startsWith(item.getFilterText()));
        //Check contains data used for completionItem resolution
        @SuppressWarnings("unchecked")
        Map<String,String> data = (Map<String, String>) item.getData();
        assertNotNull(data);
        assertTrue(isNotBlank(data.get(CompletionResolveHandler.DATA_FIELD_URI)));
        assertTrue(isNotBlank(data.get(CompletionResolveHandler.DATA_FIELD_PROPOSAL_ID)));
        assertTrue(isNotBlank(data.get(CompletionResolveHandler.DATA_FIELD_REQUEST_ID)));
    }
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_constructor() throws Exception{
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "   void foo() {\n"+
                    "       Object o = new O\n"+
                    "   }\n"+
            "}\n");
    int[] loc = findCompletionLocation(unit, "new O");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    assertFalse("No proposals were found",list.getItems().isEmpty());

    List<CompletionItem> items = new ArrayList<>(list.getItems());
    Comparator<CompletionItem> comparator = (CompletionItem a, CompletionItem b) -> a.getSortText().compareTo(b.getSortText());
    Collections.sort(items, comparator);
    CompletionItem ctor = items.get(0);
    assertEquals("Object()", ctor.getLabel());
    assertEquals("Object", ctor.getInsertText());

    CompletionItem resolvedItem = server.resolveCompletionItem(ctor).join();
    assertNotNull(resolvedItem);
    TextEdit te = resolvedItem.getTextEdit();
    assertNotNull(te);
    assertEquals("Object()",te.getNewText());
    assertNotNull(te.getRange());
    Range range = te.getRange();
    assertEquals(2, range.getStart().getLine());
    assertEquals(17, range.getStart().getCharacter());
    assertEquals(2, range.getEnd().getLine());
    assertEquals(18, range.getEnd().getCharacter());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_method_withLSPV2() throws JavaModelException{
    mockLSP2Client();

    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "   void foo() {\n"+
                    "System.out.print(\"Hello\");\n" +
                    "System.out.println(\" World!\");\n"+
                    "HashMap<String, String> map = new HashMap<>();\n"+
                    "map.pu\n" +
                    "   }\n"+
            "}\n");

    int[] loc = findCompletionLocation(unit, "map.pu");

    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter( item->  item.getLabel().matches("put\\(String \\w+, String \\w+\\) : String"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("put", ci.getInsertText());
    assertEquals(CompletionItemKind.Function, ci.getKind());
    assertEquals("999999019", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(5, 4, 6, "put", resolvedItem.getTextEdit());
    assertNotNull(resolvedItem.getAdditionalTextEdits());
    List<TextEdit> edits = resolvedItem.getAdditionalTextEdits();
    assertEquals(3, edits.size());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_method_withLSPV3() throws JavaModelException{
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "   void foo() {\n"+
                    "System.out.print(\"Hello\");\n" +
                    "System.out.println(\" World!\");\n"+
                    "HashMap<String, String> map = new HashMap<>();\n"+
                    "map.pu\n" +
                    "   }\n"+
            "}\n");

    int[] loc = findCompletionLocation(unit, "map.pu");

    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter( item->  item.getLabel().matches("put\\(String \\w+, String \\w+\\) : String"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("put", ci.getInsertText());
    assertEquals(CompletionItemKind.Function, ci.getKind());
    assertEquals("999999019", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    try {
        assertTextEdit(5, 4, 6, "put(${1:key}, ${2:value})", resolvedItem.getTextEdit());
    } catch (ComparisonFailure e) {
        //In case the JDK has no sources
        assertTextEdit(5, 4, 6, "put(${1:arg0}, ${2:arg1})", resolvedItem.getTextEdit());
    }
    assertNotNull(resolvedItem.getAdditionalTextEdits());
    List<TextEdit> edits = resolvedItem.getAdditionalTextEdits();
    assertEquals(3, edits.size());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_field() throws JavaModelException{
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "import java.sq \n" +
                    "public class Foo {\n"+
                    "private String myTestString;\n"+
                    "   void foo() {\n"+
                    "   this.myTestS\n"+
                    "   }\n"+
            "}\n");

    int[] loc = findCompletionLocation(unit, "this.myTestS");

    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();

    assertNotNull(list);
    assertEquals(1, list.getItems().size());
    CompletionItem item = list.getItems().get(0);
    assertEquals(CompletionItemKind.Field, item.getKind());
    assertEquals("myTestString", item.getInsertText());
    assertNull(item.getAdditionalTextEdits());
    assertNull(item.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(item).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(4,8,15,"myTestString",resolvedItem.getTextEdit());
    //Not checking the range end character
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_import_type() throws JavaModelException{
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "import java.sq \n" +
                    "public class Foo {\n"+
                    "   void foo() {\n"+
                    "   java.util.Ma\n"+
                    "   }\n"+
            "}\n");

    int[] loc = findCompletionLocation(unit, "java.util.Ma");

    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();

    assertNotNull(list);
    assertEquals(1, list.getItems().size());
    CompletionItem item = list.getItems().get(0);
    assertEquals(CompletionItemKind.Class, item.getKind());
    assertEquals("Map", item.getInsertText());
    assertNull(item.getAdditionalTextEdits());
    assertNull(item.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(item).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(3,3,15,"java.util.Map",resolvedItem.getTextEdit());
    //Not checking the range end character
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_noPackage() throws Exception{
    ICompilationUnit unit = getWorkingCopy(
            "src/NoPackage.java",
            "public class NoPackage {\n"
                    + "    NoP"
                    +"}\n");
    int[] loc = findCompletionLocation(unit, "    NoP");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    assertFalse("No proposals were found", list.getItems().isEmpty());
    assertEquals("NoPackage", list.getItems().get(0).getLabel());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_package() throws JavaModelException{
    ClientPreferences mockCapabilies = Mockito.mock(ClientPreferences.class);
    Mockito.when(preferenceManager.getClientPreferences()).thenReturn(mockCapabilies);

    ICompilationUnit unit = getWorkingCopy(
            "src/org/sample/Baz.java",
            "package o"+
                    "public class Baz {\n"+
            "}\n");

    int[] loc = findCompletionLocation(unit, "package o");

    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();

    assertNotNull(list);
    List<CompletionItem> items = new ArrayList<>(list.getItems());
    assertTrue(items.size() > 1);
    items.sort((i1, i2) -> i1.getSortText().compareTo(i2.getSortText()));

    CompletionItem item = items.get(0);
    // current package should appear 1st
    assertEquals("org.sample",item.getLabel());

    CompletionItem resolvedItem = server.resolveCompletionItem(item).join();
    assertNotNull(resolvedItem);
    TextEdit te = item.getTextEdit();
    assertNotNull(te);
    assertEquals("org.sample", te.getNewText());
    assertNotNull(te.getRange());
    Range range = te.getRange();
    assertEquals(0, range.getStart().getLine());
    assertEquals(8, range.getStart().getCharacter());
    assertEquals(0, range.getEnd().getLine());
    assertEquals(15, range.getEnd().getCharacter());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_methodOverrideWithParams() throws Exception {
    ICompilationUnit unit = getWorkingCopy(
            //@formatter:off
            "src/org/sample/Test.java",
            "package org.sample;\n\n"+
            "public class Test extends Baz {\n"+
            "    getP" +
            "}\n");
            //@formatter:on
    int[] loc = findCompletionLocation(unit, " getP");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    List<CompletionItem> filtered = list.getItems().stream().filter((item)->{
        return item.getDetail() != null && item.getDetail().startsWith("Override method in");
    }).collect(Collectors.toList());
    assertEquals("No override proposals", filtered.size(), 1);
    CompletionItem oride = filtered.get(0);
    assertEquals("getParent", oride.getInsertText());
    assertNull(oride.getTextEdit());
    oride = server.resolveCompletionItem(oride).join();
    assertNotNull(oride.getTextEdit());
    String text = oride.getTextEdit().getNewText();

    String expectedText = "@Override\n"+
            "protected File getParent(File file, int depth) {\n" +
            "\t${0:return super.getParent(file, depth);}\n"+
            "}";

    assertEquals(expectedText, text);
    assertEquals("Missing required imports", 4, oride.getAdditionalTextEdits().size());

    assertTextEdit(0, 19, 19, "\n\n", oride.getAdditionalTextEdits().get(0));
    assertTextEdit(0, 19, 19, "import java.io.File;", oride.getAdditionalTextEdits().get(1));
    assertTextEdit(0, 19, 19, "\n\n", oride.getAdditionalTextEdits().get(2));
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_methodOverrideWithException() throws Exception {
    ICompilationUnit unit = getWorkingCopy(
            //@formatter:off
            "src/org/sample/Test.java",
            "package org.sample;\n\n"+
            "public class Test extends Baz {\n"+
            "    dele"+
            "}\n");
            //@formatter:on
    int[] loc = findCompletionLocation(unit, " dele");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    List<CompletionItem> filtered = list.getItems().stream().filter((item)->{
        return item.getDetail() != null && item.getDetail().startsWith("Override method in");
    }).collect(Collectors.toList());
    assertEquals("No override proposals", filtered.size(), 1);
    CompletionItem oride = filtered.get(0);
    assertEquals("deleteSomething", oride.getInsertText());
    assertNull(oride.getTextEdit());
    oride = server.resolveCompletionItem(oride).join();
    assertNotNull(oride.getTextEdit());
    String text = oride.getTextEdit().getNewText();

    String expectedText = "@Override\n"+
            "protected void deleteSomething() throws IOException {\n" +
            "\t${0:super.deleteSomething();}\n"+
            "}";

    assertEquals(expectedText, text);
    assertEquals("Missing required imports", 4, oride.getAdditionalTextEdits().size());

    assertTextEdit(0, 19, 19, "\n\n", oride.getAdditionalTextEdits().get(0));
    assertTextEdit(0, 19, 19, "import java.io.IOException;", oride.getAdditionalTextEdits().get(1));
    assertTextEdit(0, 19, 19, "\n\n", oride.getAdditionalTextEdits().get(2));
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_getter() throws Exception {

    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "    private String strField;\n" +
                    "    get" +
            "}\n");

    int[] loc = findCompletionLocation(unit, "get");


    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter(item -> item.getLabel().startsWith("getStrField() : String"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("getStrField", ci.getInsertText());
    assertEquals(CompletionItemKind.Function, ci.getKind());
    assertEquals("999999979", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(2, 4, 7, "/**\n" +
             " * @return the strField\n" +
             " */\n" +
            "public String getStrField() {\n" +
            "   return strField;\n" +
            "}", resolvedItem.getTextEdit());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_booleangetter() throws Exception {

    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "    private boolean boolField;\n" +
                    "    is\n" +
            "}\n");

    int[] loc = findCompletionLocation(unit, "is");


    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter(item -> item.getLabel().startsWith("isBoolField() : boolean"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("isBoolField", ci.getInsertText());
    assertEquals(CompletionItemKind.Function, ci.getKind());
    assertEquals("999999979", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(2, 4, 6, "/**\n" +
             " * @return the boolField\n" +
             " */\n" +
            "public boolean isBoolField() {\n" +
            "   return boolField;\n" +
            "}", resolvedItem.getTextEdit());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_setter() throws Exception {
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "    private String strField;\n" +
                    "    set" +
            "}\n");

    int[] loc = findCompletionLocation(unit, "set");


    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter(item -> item.getLabel().startsWith("setStrField(String strField) : void"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("setStrField", ci.getInsertText());
    assertEquals(CompletionItemKind.Function, ci.getKind());
    assertEquals("999999979", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(2, 4, 7, "/**\n" +
            " * @param strField the strField to set\n" +
             " */\n" +
            "public void setStrField(String strField) {\n" +
            "   this.strField = strField;\n" +
            "}", resolvedItem.getTextEdit());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_AnonymousType() throws Exception {
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "    public static void main(String[] args) {\n" +
                    "        IFoo foo = new \n" +
                    "    } \n" +
                    "    interface IFoo {\n"+
                    "        String getName();\n"+
                    "    }\n"+
            "}\n");
    waitForBackgroundJobs();
    int[] loc = findCompletionLocation(unit, "new ");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter(item -> item.getLabel().startsWith("Foo.IFoo()  Anonymous Inner Type"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("Foo.IFoo", ci.getInsertText());
    assertEquals(CompletionItemKind.Constructor, ci.getKind());
    assertEquals("999998684", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(2, 23, 23, "IFoo(){\n" +
            "\n" +
            "       @Override\n" +
            "       public String getName() {\n" +
            "           ${0:return null;}\n" +
            "       }\n" +
            "};", resolvedItem.getTextEdit());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_AnonymousTypeMoreMethods() throws Exception {
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "    public static void main(String[] args) {\n" +
                    "        IFoo foo = new \n" +
                    "    } \n" +
                    "    interface IFoo {\n"+
                    "        String getName();\n"+
                    "        void setName(String name);\n"+
                    "    }\n"+
            "}\n");
    waitForBackgroundJobs();
    int[] loc = findCompletionLocation(unit, "new ");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter(item -> item.getLabel().startsWith("Foo.IFoo()  Anonymous Inner Type"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("Foo.IFoo", ci.getInsertText());
    assertEquals(CompletionItemKind.Constructor, ci.getKind());
    assertEquals("999998684", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(2, 23, 23, "IFoo(){\n" +
            "\n     @Override\n" +
            "       public void setName(String name) {\n" +
            "           ${0}\n" +
            "       }\n" +
            "\n     @Override\n" +
            "       public String getName() {\n" +
            "           return null;\n" +
            "       }\n" +
            "};", resolvedItem.getTextEdit());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_AnonymousDeclarationType() throws Exception {
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "    public static void main(String[] args) {\n" +
                    "        new Runnable()\n" +
                    "    }\n" +
            "}\n");
    waitForBackgroundJobs();
    int[] loc = findCompletionLocation(unit, "Runnable(");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter(item -> item.getLabel().startsWith("Runnable()  Anonymous Inner Type"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("Runnable", ci.getInsertText());
    assertEquals(CompletionItemKind.Class, ci.getKind());
    assertEquals("999999372", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(2, 20, 22, "(){\n" +
            "\n" +
            "   @Override\n" +
            "   public void run() {\n" +
            "       ${0}\n" +
            "   }\n" +
            "}", resolvedItem.getTextEdit());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_AnonymousDeclarationType2() throws Exception {
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "    public static void main(String[] args) {\n" +
                    "        new Runnable(  )\n" +
                    "    }\n" +
            "}\n");
    waitForBackgroundJobs();
    int[] loc = findCompletionLocation(unit, "Runnable( ");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter(item -> item.getLabel().startsWith("Runnable()  Anonymous Inner Type"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("Runnable", ci.getInsertText());
    assertEquals(CompletionItemKind.Class, ci.getKind());
    assertEquals("999999372", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(2, 20, 24, "(){\n" +
            "\n" +
            "   @Override\n" +
            "   public void run() {\n" +
            "       ${0}\n" +
            "   }\n" +
            "}", resolvedItem.getTextEdit());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_AnonymousDeclarationType3() throws Exception {
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "    public static void main(String[] args) {\n" +
                    "        run(\"name\", new Runnable(, 1);\n" +
                    "    }\n" +
                    "    void run(String name, Runnable runnable, int i) {\n" +
                    "    }\n" +
            "}\n");
    waitForBackgroundJobs();
    int[] loc = findCompletionLocation(unit, "Runnable(");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter(item -> item.getLabel().startsWith("Runnable()  Anonymous Inner Type"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("Runnable", ci.getInsertText());
    assertEquals(CompletionItemKind.Class, ci.getKind());
    assertEquals("999999372", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(2, 32, 33, "(){\n" +
            "\n" +
            "   @Override\n" +
            "   public void run() {\n" +
            "       ${0}\n" +
            "   }\n" +
            "}", resolvedItem.getTextEdit());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_AnonymousDeclarationType4() throws Exception {
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "    public static void main(String[] args) {\n" +
                    "        run(\"name\", new Runnable(\n" +
                    "        , 1);\n" +
                    "    }\n" +
                    "    void run(String name, Runnable runnable, int i) {\n" +
                    "    }\n" +
            "}\n");
    waitForBackgroundJobs();
    int[] loc = findCompletionLocation(unit, "Runnable(");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter(item -> item.getLabel().startsWith("Runnable()  Anonymous Inner Type"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("Runnable", ci.getInsertText());
    assertEquals(CompletionItemKind.Class, ci.getKind());
    assertEquals("999999372", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(2, 32, 33, "(){\n" +
            "\n" +
            "   @Override\n" +
            "   public void run() {\n" +
            "       ${0}\n" +
            "   }\n" +
            "}", resolvedItem.getTextEdit());
}
项目:eclipse.jdt.ls    文件:CompletionHandlerTest.java   
@Test
public void testCompletion_AnonymousDeclarationType5() throws Exception {
    ICompilationUnit unit = getWorkingCopy(
            "src/java/Foo.java",
            "public class Foo {\n"+
                    "    public static void main(String[] args) {\n" +
                    "        run(\"name\", new Runnable(");
    waitForBackgroundJobs();
    int[] loc = findCompletionLocation(unit, "Runnable(");
    CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
    assertNotNull(list);
    CompletionItem ci = list.getItems().stream()
            .filter(item -> item.getLabel().startsWith("Runnable()  Anonymous Inner Type"))
            .findFirst().orElse(null);
    assertNotNull(ci);

    assertEquals("Runnable", ci.getInsertText());
    assertEquals(CompletionItemKind.Class, ci.getKind());
    assertEquals("999999372", ci.getSortText());
    assertNull(ci.getTextEdit());

    CompletionItem resolvedItem = server.resolveCompletionItem(ci).join();
    assertNotNull(resolvedItem.getTextEdit());
    assertTextEdit(2, 33, 33, "(){\n" +
            "\n" +
            "   @Override\n" +
            "   public void run() {\n" +
            "       ${0}\n" +
            "   }\n" +
            "}", resolvedItem.getTextEdit());
}