From 7fab9eb9cd8aa076f7b2d38ba004648efd95c983 Mon Sep 17 00:00:00 2001 From: Nieraj Singh Date: Thu, 12 Nov 2020 15:34:45 -0800 Subject: [PATCH] Fixed issue with metrics not appearing in code lens Need to get the path from the URI for code lens in order to fetch metrics from actuator --- ...SpringProcessLiveDataExtractorOverJMX.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 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 9b39c1f40..2b3202a5a 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 @@ -13,6 +13,8 @@ package org.springframework.ide.vscode.boot.java.livehover.v2; import java.io.IOException; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; +import java.net.URI; +import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -36,6 +38,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ide.vscode.commons.util.StringUtil; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableList.Builder; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -126,12 +129,13 @@ public class SpringProcessLiveDataExtractorOverJMX { return new LiveMetricsModel() { @Override - public RequestMappingMetrics getRequestMappingMetrics(String[] paths, String[] requestMethods) { + public RequestMappingMetrics getRequestMappingMetrics(String[] uris, String[] requestMethods) { try { List tags = new ArrayList<>(); - if (paths.length == 0) { + if (uris.length == 0) { return null; } + String[] paths = getPaths(uris); tags.add("uri:" + String.join(",", paths)); if (requestMethods.length > 0) { tags.add("method:" + String.join(",", requestMethods)); @@ -156,6 +160,23 @@ public class SpringProcessLiveDataExtractorOverJMX { } return null; } + + private String[] getPaths(String[] uris) { + Builder builder = ImmutableList.builder(); + if (uris != null) { + for (String val : uris) { + try { + URI uri = new URI(val); + builder.add(uri.getPath()); + } catch (URISyntaxException e) { + log.error("", e); + } + + } + } + + return builder.build().toArray(new String[0]); + } }; }