You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by wu...@apache.org on 2018/06/06 07:41:48 UTC
[incubator-skywalking] branch master updated: Spring mvc plugin
auto add '/' if necessary (#1315)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 2c82236 Spring mvc plugin auto add '/' if necessary (#1315)
2c82236 is described below
commit 2c822363cb8ea469c04760117bc953ec4b6e5a16
Author: SevenPointOld <li...@163.com>
AuthorDate: Wed Jun 6 15:41:30 2018 +0800
Spring mvc plugin auto add '/' if necessary (#1315)
* spring mvc plugin auto add '/' if necessary
---
.../v4/ControllerConstructorInterceptorTest.java | 6 ++---
.../plugin/spring/mvc/v4/PathMappingCacheTest.java | 26 +++++++++++++++++++++-
.../spring/mvc/commons/PathMappingCache.java | 12 ++++++++++
3 files changed, 40 insertions(+), 4 deletions(-)
diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/spring/mvc/v4/ControllerConstructorInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/spring/mvc/v4/ControllerConstructorInterceptorTest.java
index 4e22e0d..a9e429b 100644
--- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/spring/mvc/v4/ControllerConstructorInterceptorTest.java
+++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/spring/mvc/v4/ControllerConstructorInterceptorTest.java
@@ -54,7 +54,7 @@ public class ControllerConstructorInterceptorTest {
Method m = obj.getClass().getMethods()[0];
cache.addPathMapping(m, "#toString");
- Assert.assertEquals("the two value should be equal", cache.findPathMapping(m), "/test1#toString");
+ Assert.assertEquals("the two value should be equal", cache.findPathMapping(m), "/test1/#toString");
}
@Test
@@ -67,7 +67,7 @@ public class ControllerConstructorInterceptorTest {
Method m = obj.getClass().getMethods()[0];
cache.addPathMapping(m, "#toString");
- Assert.assertEquals("the two value should be equal", cache.findPathMapping(m), "#toString");
+ Assert.assertEquals("the two value should be equal", cache.findPathMapping(m), "/#toString");
}
@Test
@@ -80,7 +80,7 @@ public class ControllerConstructorInterceptorTest {
Method m = obj.getClass().getMethods()[0];
cache.addPathMapping(m, "#toString");
- Assert.assertEquals("the two value should be equal", cache.findPathMapping(m), "/test3#toString");
+ Assert.assertEquals("the two value should be equal", cache.findPathMapping(m), "/test3/#toString");
}
@RequestMapping(value = "/test1")
diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/spring/mvc/v4/PathMappingCacheTest.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/spring/mvc/v4/PathMappingCacheTest.java
index c98693d..776d458 100644
--- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/spring/mvc/v4/PathMappingCacheTest.java
+++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/spring/mvc/v4/PathMappingCacheTest.java
@@ -45,7 +45,31 @@ public class PathMappingCacheTest {
Method m = obj.getClass().getMethods()[0];
pathMappingCache.addPathMapping(m, "#toString");
- Assert.assertEquals("the two value should be equal", pathMappingCache.findPathMapping(m), "org.apache.skywalking.apm.plugin.spring.mvc#toString");
+ Assert.assertEquals("the two value should be equal", pathMappingCache.findPathMapping(m), "/org.apache.skywalking.apm.plugin.spring.mvc/#toString");
}
+
+ @Test
+ public void testAutoAddPathSeparator() {
+ String rightPath = "/root/sub";
+
+ Object obj = new Object();
+ Method m = obj.getClass().getMethods()[0];
+
+ PathMappingCache cache = new PathMappingCache("root");
+ cache.addPathMapping(m, "sub");
+ Assert.assertEquals(cache.findPathMapping(m), rightPath);
+
+ PathMappingCache cache2 = new PathMappingCache("/root");
+ cache2.addPathMapping(m, "/sub");
+ Assert.assertEquals(cache2.findPathMapping(m), rightPath);
+
+ PathMappingCache cache3 = new PathMappingCache("root");
+ cache3.addPathMapping(m, "/sub");
+ Assert.assertEquals(cache3.findPathMapping(m), rightPath);
+
+ PathMappingCache cache4 = new PathMappingCache("/root");
+ cache4.addPathMapping(m, "sub");
+ Assert.assertEquals(cache4.findPathMapping(m), rightPath);
+ }
}
diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/PathMappingCache.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/PathMappingCache.java
index a89c131..494b800 100644
--- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/PathMappingCache.java
+++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/PathMappingCache.java
@@ -19,6 +19,8 @@
package org.apache.skywalking.apm.plugin.spring.mvc.commons;
+import org.apache.skywalking.apm.util.StringUtil;
+
import java.lang.reflect.Method;
import java.util.concurrent.ConcurrentHashMap;
@@ -28,11 +30,17 @@ import java.util.concurrent.ConcurrentHashMap;
* @author zhangxin
*/
public class PathMappingCache {
+
+ private static final String PATH_SEPARATOR = "/";
+
private String classPath = "";
private ConcurrentHashMap<Method, String> methodPathMapping = new ConcurrentHashMap<Method, String>();
public PathMappingCache(String classPath) {
+ if (!StringUtil.isEmpty(classPath) && !classPath.startsWith(PATH_SEPARATOR)) {
+ classPath = PATH_SEPARATOR + classPath;
+ }
this.classPath = classPath;
}
@@ -41,6 +49,10 @@ public class PathMappingCache {
}
public void addPathMapping(Method method, String methodPath) {
+ if (!StringUtil.isEmpty(methodPath) && !methodPath.startsWith(PATH_SEPARATOR)
+ && !classPath.endsWith(PATH_SEPARATOR)) {
+ methodPath = PATH_SEPARATOR + methodPath;
+ }
methodPathMapping.put(method, classPath + methodPath);
}
}
--
To stop receiving notification emails like this one, please contact
wusheng@apache.org.