private void onOpen( final FileEvent event, final DtoFactory dtoFactory, final TextDocumentServiceClient serviceClient, final LanguageServerRegistry lsRegistry) { event .getFile() .getContent() .then( text -> { TextDocumentItem documentItem = dtoFactory.createDto(TextDocumentItem.class); documentItem.setUri(event.getFile().getLocation().toString()); documentItem.setVersion(LanguageServerEditorConfiguration.INITIAL_DOCUMENT_VERSION); documentItem.setText(text); documentItem.setLanguageId( lsRegistry.getLanguageDescription(event.getFile()).getLanguageId()); DidOpenTextDocumentParams openEvent = dtoFactory.createDto(DidOpenTextDocumentParams.class); openEvent.setTextDocument(documentItem); openEvent.getTextDocument().setUri(event.getFile().getLocation().toString()); openEvent.setText(text); serviceClient.didOpen(openEvent); }); }
public String getLine(TextDocumentItem textDocumentItem, Position position) { String text = textDocumentItem.getText(); String[] lines = text.split("\\r?\\n", position.getLine() + 2); if (lines.length >= position.getLine() + 1) { return lines[position.getLine()]; } return null; }
/** * @param textDocumentItem * @param line * @return Currently returns the first from Camel Node ignoring the exact position * @throws Exception */ public Node getCorrespondingCamelNodeForCompletion(TextDocumentItem textDocumentItem, int line) throws Exception { if (hasElementFromCamelNamespace(textDocumentItem)) { Document parseXml = XmlLineNumberParser.parseXml(new ByteArrayInputStream(textDocumentItem.getText().getBytes(StandardCharsets.UTF_8))); Element documentElement = parseXml.getDocumentElement(); return findElementAtLine(line, documentElement); } else { return null; } }
private boolean hasElementFromCamelNamespace(TextDocumentItem textDocumentItem) throws SAXException, IOException, ParserConfigurationException { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); Document xmlParsed = dbf.newDocumentBuilder().parse(new ByteArrayInputStream(textDocumentItem.getText().getBytes(StandardCharsets.UTF_8))); for (String camelNodeTag : CAMEL_NODES_TAG) { if(hasElementFromCamelNameSpaces(xmlParsed.getElementsByTagName(camelNodeTag))){ return true; } } return false; }
@Override public void didChange(DidChangeTextDocumentParams params) { LOGGER.info("didChange: " + params.getTextDocument()); List<TextDocumentContentChangeEvent> contentChanges = params.getContentChanges(); TextDocumentItem textDocumentItem = openedDocuments.get(params.getTextDocument().getUri()); if (!contentChanges.isEmpty()) { textDocumentItem.setText(contentChanges.get(0).getText()); } }
private void openDocument(ICompilationUnit cu, String content, int version) { DidOpenTextDocumentParams openParms = new DidOpenTextDocumentParams(); TextDocumentItem textDocument = new TextDocumentItem(); textDocument.setLanguageId("java"); textDocument.setText(content); textDocument.setUri(JDTUtils.toURI(cu)); textDocument.setVersion(version); openParms.setTextDocument(textDocument); lifeCycleHandler.didOpen(openParms); }
public String getCamelComponentUri(TextDocumentItem textDocumentItem, Position position) { return getCamelComponentUri(getLine(textDocumentItem, position), position.getCharacter()); }
public CamelEndpointCompletionProcessor(TextDocumentItem textDocumentItem, CompletableFuture<CamelCatalog> camelCatalog) { this.textDocumentItem = textDocumentItem; this.camelCatalog = camelCatalog; }
@Override public CompletableFuture<Either<List<CompletionItem>, CompletionList>> completion(TextDocumentPositionParams completionRequest) { LOGGER.info("completion: " + completionRequest.getTextDocument().getUri()); TextDocumentItem textDocumentItem = openedDocuments.get(completionRequest.getTextDocument().getUri()); return new CamelEndpointCompletionProcessor(textDocumentItem, camelCatalog).getCompletions(completionRequest.getPosition()).thenApply(Either::forLeft); }
@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 void didOpen(DidOpenTextDocumentParams params) { TextDocumentItem textDocument = params.getTextDocument(); LOGGER.info("didOpen: {0}", textDocument); openedDocuments.put(textDocument.getUri(), textDocument); }
public HoverProcessor(TextDocumentItem textDocumentItem, CompletableFuture<CamelCatalog> camelCatalog) { this.textDocumentItem = textDocumentItem; this.camelCatalog = camelCatalog; }
private TextDocumentItem createTestTextDocument(String text) { return new TextDocumentItem(DUMMY_URI, CamelLanguageServer.LANGUAGE_ID, 0, text); }
public DidOpenTextDocumentParams(@NonNull final TextDocumentItem textDocument) { this.textDocument = textDocument; }
@Deprecated public DidOpenTextDocumentParams(@NonNull final TextDocumentItem textDocument, final String text) { this(textDocument); this.text = text; }
/** * The document that was opened. */ @Pure @NonNull public TextDocumentItem getTextDocument() { return this.textDocument; }
/** * The document that was opened. */ public void setTextDocument(@NonNull final TextDocumentItem textDocument) { this.textDocument = textDocument; }