From e919823112240e31676d569f95e91ef85b914e1c Mon Sep 17 00:00:00 2001 From: Nieraj Singh Date: Thu, 5 Nov 2020 16:23:45 -0800 Subject: [PATCH] Further implementation of metrics in live hovers Live hovers now show basic metrics --- ...SpringProcessLiveDataExtractorOverJMX.java | 19 ++++++++++++++----- .../RequestMappingHoverProvider.java | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessLiveDataExtractorOverJMX.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessLiveDataExtractorOverJMX.java index 6da80bc1a..72cc440c5 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessLiveDataExtractorOverJMX.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessLiveDataExtractorOverJMX.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2019 Pivotal, Inc. + * Copyright (c) 2019, 2020 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -134,9 +134,18 @@ public class SpringProcessLiveDataExtractorOverJMX { } tags.add("uri:" + rm.getSplitPath()[0]); if (!rm.getRequestMethods().isEmpty()) { - tags.add("methods:" + String.join(",", rm.getRequestMethods())); + tags.add("method:" + String.join(",", rm.getRequestMethods())); } - Object metricsData = getActuatorDataFromOperation(connection, getObjectName(domain, "type=Endpoint,name=Metrics"), "metric", "http.server.requests", tags); + + Object[] params = new Object[] {"http.server.requests", tags}; + String[] signature = new String[] {String.class.getName(), List.class.getName()}; + + Object metricsData = getActuatorDataFromOperation(connection, + getObjectName(domain, "type=Endpoint,name=Metrics"), + "metric", + params, + signature); + if (metricsData instanceof String) { return RequestMappingMetrics.parse((String) metricsData); } else { @@ -410,10 +419,10 @@ public class SpringProcessLiveDataExtractorOverJMX { return null; } - private Object getActuatorDataFromOperation(MBeanServerConnection connection, ObjectName objectName, String operation, Object... parameters) throws Exception { + private Object getActuatorDataFromOperation(MBeanServerConnection connection, ObjectName objectName, String operation, Object[] parameters, String[] tags) throws Exception { if (objectName != null) { try { - return connection.invoke(objectName, operation, parameters, null); + return connection.invoke(objectName, operation, parameters, tags); } catch (InstanceNotFoundException|IOException e) { return null; diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java index b53597330..466c4933f 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java @@ -281,7 +281,7 @@ public class RequestMappingHoverProvider implements HoverProvider { RequestMappingMetrics metrics = liveData.getLiveMterics().getRequestMappingMetrics(requestMapping); if (metrics != null) { - Renderable metricsRenderable = Renderables.bold("Count: " + metrics.getCallsCount() + " Total Time: " + metrics.getTotalTime()); + Renderable metricsRenderable = Renderables.concat(Renderables.bold("Count: " + metrics.getCallsCount() + ", Total Time: " + metrics.getTotalTime()), Renderables.text("\n\n")); urlRenderables = Renderables.concat(urlRenderables, Renderables.text("\n\n"), metricsRenderable); }