@Override
    public void didChange(DidChangeTextDocumentParams params) {
        var document = params.getTextDocument();
        SchemaDocumentScheduler scheduler = eventContextCreator.scheduler;

        var contentChanges = params.getContentChanges();
        for (int i = 0; i < contentChanges.size(); i++) {
            String fileURI = FileUtils.decodeURL(document.getUri());
            try {
                scheduler.updateFile(fileURI, contentChanges.get(i).getText());
            } catch(Exception e) {
                logger.error("Updating file " + fileURI + " failed with error: " + ClientLogger.errorToString(e));
            }
        }
    }
SchemaTextDocumentService handles incomming requests from the client.
integration/schema-language-server/language-server/src/main/java/ai/vespa/schemals/SchemaTextDocumentService.java