From 926414a014ab828cb7b75d0bb1850084966be5c7 Mon Sep 17 00:00:00 2001 From: Bertrand Renuart Date: Fri, 1 Jul 2016 14:14:58 +0200 Subject: [PATCH] GH1155: remove Guava ImmutableMap in favour of Collections.unmodifiableMap() Make sanitizeUrlTemplate() protected for easy sub-classing --- .../metrics/DefaultMetricsTagProvider.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/DefaultMetricsTagProvider.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/DefaultMetricsTagProvider.java index 4e319b3a..226984b1 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/DefaultMetricsTagProvider.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/DefaultMetricsTagProvider.java @@ -14,6 +14,7 @@ package org.springframework.cloud.netflix.metrics; import java.io.IOException; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -25,8 +26,6 @@ import org.springframework.http.client.ClientHttpResponse; import org.springframework.util.StringUtils; import org.springframework.web.servlet.HandlerMapping; -import com.google.common.collect.ImmutableMap; - /** * @author Jon Schneider */ @@ -49,14 +48,19 @@ public class DefaultMetricsTagProvider implements MetricsTagProvider { } String host = request.getURI().getHost(); - + if( host == null ) { + host = "none"; + } + String strippedUrlTemplate = urlTemplate.replaceAll("^https?://[^/]+/", ""); - //@formatter:off - return ImmutableMap.of("method", request.getMethod().name(), - "uri", sanitizeUrlTemplate(strippedUrlTemplate), - "status", status, "clientName", - host != null ? host : "none"); - //@formatter:on + + Map tags = new HashMap<>(); + tags.put("method", request.getMethod().name()); + tags.put("uri", sanitizeUrlTemplate(strippedUrlTemplate)); + tags.put("status", status); + tags.put("clientName", host); + + return Collections.unmodifiableMap(tags); } @Override @@ -94,7 +98,7 @@ public class DefaultMetricsTagProvider implements MetricsTagProvider { * As is, the urlTemplate is not suitable for use with Atlas, as all interactions with * Atlas take place via query parameters */ - private String sanitizeUrlTemplate(String urlTemplate) { + protected String sanitizeUrlTemplate(String urlTemplate) { String sanitized = urlTemplate.replaceAll("/", "_").replaceAll("[{}]", "-"); if (!StringUtils.hasText(sanitized)) { sanitized = "none";