Loading 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 +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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") Loading 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 +25 −1 Original line number Diff line number Diff line Loading @@ -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); } } apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/PathMappingCache.java +12 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading @@ -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); } } Loading
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 +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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") Loading
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 +25 −1 Original line number Diff line number Diff line Loading @@ -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); } }
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/PathMappingCache.java +12 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading @@ -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); } }