Skip to content

Commit

Permalink
Add telemetry/event support
Browse files Browse the repository at this point in the history
Fix #430


Signed-off-by: azerr <[email protected]>
  • Loading branch information
angelozerr committed Jun 28, 2019
1 parent 7d2d324 commit 58aab06
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
import org.eclipse.lsp4j.services.WorkspaceService;
import org.eclipse.lsp4xml.commons.ModelTextDocument;
import org.eclipse.lsp4xml.commons.ParentProcessWatcher.ProcessLanguageServer;
import org.eclipse.lsp4xml.commons.telemetry.TelemetryData;
import org.eclipse.lsp4xml.commons.telemetry.TelemetryManager;
import org.eclipse.lsp4xml.customservice.AutoCloseTagResponse;
import org.eclipse.lsp4xml.customservice.XMLCustomService;
import org.eclipse.lsp4xml.dom.DOMDocument;
Expand All @@ -55,6 +57,7 @@
import org.eclipse.lsp4xml.settings.capabilities.ServerCapabilitiesInitializer;
import org.eclipse.lsp4xml.settings.capabilities.XMLCapabilityManager;
import org.eclipse.lsp4xml.utils.FilesUtils;
import org.eclipse.lsp4xml.utils.VersionHelper;

/**
* XML language server.
Expand All @@ -72,7 +75,8 @@ public class XMLLanguageServer
private final ScheduledExecutorService delayer;
private Integer parentProcessId;
public XMLCapabilityManager capabilityManager;

private TelemetryManager telemetryManager;

public XMLLanguageServer() {
xmlLanguageService = new XMLLanguageService();
xmlLanguageService.setDocumentProvider(this);
Expand All @@ -83,20 +87,34 @@ public XMLLanguageServer() {

@Override
public CompletableFuture<InitializeResult> initialize(InitializeParams params) {
long s = System.currentTimeMillis();
try {
LOGGER.info("Initializing LSP4XML server " + getVersion() + " with " + System.getProperty("java.home"));
this.parentProcessId = params.getProcessId();

long start = System.currentTimeMillis();
// Update XML language service extensions with InitializeParams
xmlLanguageService.initializeParams(params);

System.err.println("initializeParams ->" + (start - System.currentTimeMillis()));

start = System.currentTimeMillis();
capabilityManager.setClientCapabilities(params.getCapabilities());
updateSettings(InitializationOptionsSettings.getSettings(params));
System.err.println("updateSettings ->" + (start - System.currentTimeMillis()));

start = System.currentTimeMillis();
xmlTextDocumentService.updateClientCapabilities(capabilityManager.getClientCapabilities().capabilities);
ServerCapabilities nonDynamicServerCapabilities = ServerCapabilitiesInitializer.getNonDynamicServerCapabilities(
capabilityManager.getClientCapabilities(), xmlTextDocumentService.isIncrementalSupport());
System.err.println("updateClientCapabilities ->" + (start - System.currentTimeMillis()));



return CompletableFuture.completedFuture(new InitializeResult(nonDynamicServerCapabilities));
}finally {
System.err.println("FINAL->" + (s - System.currentTimeMillis()));
}
}

/*
Expand All @@ -110,7 +128,12 @@ public CompletableFuture<InitializeResult> initialize(InitializeParams params) {
*/
@Override
public void initialized(InitializedParams params) {
long start = System.currentTimeMillis();
capabilityManager.initializeCapabilities();
TelemetryData data = new TelemetryData();
data.setServerVersion(VersionHelper.getVersion());
telemetryManager.telemetryEvent(data);
System.err.println("initializeCapabilities ->" + (start - System.currentTimeMillis()));
}

/**
Expand Down Expand Up @@ -207,6 +230,7 @@ public WorkspaceService getWorkspaceService() {
public void setClient(LanguageClient languageClient) {
this.languageClient = languageClient;
capabilityManager = new XMLCapabilityManager(this.languageClient, xmlTextDocumentService);
telemetryManager = new TelemetryManager(languageClient);
}

public LanguageClient getLanguageClient() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*******************************************************************************
* Copyright (c) 2019 Red Hat Inc. and others.
* All rights reserved. This program and the accompanying materials
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Red Hat Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.lsp4xml.commons.telemetry;

/**
* Telemetry data to collect.
*
* <ul>
* <li>Server Version</li>
* <li>JVM Version</li>
* <li>Memory</li>
* </ul>
*
* @author Angelo ZERR
*
*/
public class TelemetryData {

private String serverVersion;

private String jvmVersion;

private String memory;

public String getServerVersion() {
return serverVersion;
}

public void setServerVersion(String serverVersion) {
this.serverVersion = serverVersion;
}

public String getJvmVersion() {
return jvmVersion;
}

public void setJvmVersion(String jvmVersion) {
this.jvmVersion = jvmVersion;
}

public String getMemory() {
return memory;
}

public void setMemory(String memory) {
this.memory = memory;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.eclipse.lsp4xml.commons.telemetry;

import org.eclipse.lsp4j.services.LanguageClient;

public class TelemetryManager {

private final LanguageClient languageClient;

public TelemetryManager(LanguageClient languageClient) {
this.languageClient = languageClient;
}

public void telemetryEvent(Object object) {
languageClient.telemetryEvent(object);
}
}

0 comments on commit 58aab06

Please sign in to comment.