Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
润土的好友猹
SkyWalking
提交
eac522ed
S
SkyWalking
项目概览
润土的好友猹
/
SkyWalking
与 Fork 源项目一致
Fork自
apache / SkyWalking
通知
9
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
eac522ed
编写于
10月 29, 2017
作者:
A
ascrutae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
support spring3 plugin
上级
4a9626ff
变更
33
隐藏空白更改
内联
并排
Showing
33 changed file
with
1096 addition
and
17 deletion
+1096
-17
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/pom.xml
...k-plugin/spring-plugins/mvc-annotation-3.x-plugin/pom.xml
+54
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/ControllerConstructorInterceptor.java
...lugin/spring/mvc/v3/ControllerConstructorInterceptor.java
+46
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/ControllerMethodInterceptor.java
...apm/plugin/spring/mvc/v3/ControllerMethodInterceptor.java
+100
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/EnhanceRequireObjectCache.java
...g/apm/plugin/spring/mvc/v3/EnhanceRequireObjectCache.java
+52
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/GetBeanInterceptor.java
...ywalking/apm/plugin/spring/mvc/v3/GetBeanInterceptor.java
+53
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/InvokeForRequestInterceptor.java
...apm/plugin/spring/mvc/v3/InvokeForRequestInterceptor.java
+51
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/PathMappingCache.java
...skywalking/apm/plugin/spring/mvc/v3/PathMappingCache.java
+45
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/define/AbstractSpring3Instrumentation.java
.../spring/mvc/v3/define/AbstractSpring3Instrumentation.java
+36
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/define/ControllerInstrumentation.java
...lugin/spring/mvc/v3/define/ControllerInstrumentation.java
+89
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/define/HandlerMethodInstrumentation.java
...in/spring/mvc/v3/define/HandlerMethodInstrumentation.java
+73
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/define/InvocableHandlerInstrumentation.java
...spring/mvc/v3/define/InvocableHandlerInstrumentation.java
+70
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/resources/skywalking-plugin.def
...ation-3.x-plugin/src/main/resources/skywalking-plugin.def
+3
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v3/ControllerConstructorInterceptorTest.java
...n/spring/mvc/v3/ControllerConstructorInterceptorTest.java
+101
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v3/ControllerMethodInterceptorTest.java
...plugin/spring/mvc/v3/ControllerMethodInterceptorTest.java
+178
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v3/GetBeanInterceptorTest.java
...king/apm/plugin/spring/mvc/v3/GetBeanInterceptorTest.java
+70
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v3/InvokeForRequestInterceptorTest.java
...plugin/spring/mvc/v3/InvokeForRequestInterceptorTest.java
+57
-0
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/pom.xml
...k-plugin/spring-plugins/mvc-annotation-4.x-plugin/pom.xml
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v4/AbstractMethodInteceptor.java
...ng/apm/plugin/spring/mvc/v4/AbstractMethodInteceptor.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v4/ControllerConstructorInterceptor.java
...lugin/spring/mvc/v4/ControllerConstructorInterceptor.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v4/PathMappingCache.java
...skywalking/apm/plugin/spring/mvc/v4/PathMappingCache.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v4/RequestMappingMethodInterceptor.java
...plugin/spring/mvc/v4/RequestMappingMethodInterceptor.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v4/RestMappingMethodInterceptor.java
...pm/plugin/spring/mvc/v4/RestMappingMethodInterceptor.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v4/define/AbstractControllerInstrumentation.java
...ring/mvc/v4/define/AbstractControllerInstrumentation.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v4/define/ControllerInstrumentation.java
...lugin/spring/mvc/v4/define/ControllerInstrumentation.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v4/define/RestControllerInstrumentation.java
...n/spring/mvc/v4/define/RestControllerInstrumentation.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/resources/skywalking-plugin.def
...ation-4.x-plugin/src/main/resources/skywalking-plugin.def
+2
-2
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v4/ControllerConstructorInterceptorTest.java
...n/spring/mvc/v4/ControllerConstructorInterceptorTest.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v4/PathMappingCacheTest.java
...alking/apm/plugin/spring/mvc/v4/PathMappingCacheTest.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v4/RequestMappingMethodInterceptorTest.java
...in/spring/mvc/v4/RequestMappingMethodInterceptorTest.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v4/RestMappingMethodInterceptorTest.java
...lugin/spring/mvc/v4/RestMappingMethodInterceptorTest.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v4/define/ControllerInstrumentationTest.java
...n/spring/mvc/v4/define/ControllerInstrumentationTest.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v4/define/RestControllerInstrumentationTest.java
...ring/mvc/v4/define/RestControllerInstrumentationTest.java
+1
-1
apm-sniffer/apm-sdk-plugin/spring-plugins/pom.xml
apm-sniffer/apm-sdk-plugin/spring-plugins/pom.xml
+1
-0
未找到文件。
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/pom.xml
0 → 100644
浏览文件 @
eac522ed
<!--
~ Copyright 2017, OpenSkywalking Organization All rights reserved.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
~
~ Project repository: https://github.com/OpenSkywalking/skywalking
-->
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
spring-plugins
</artifactId>
<groupId>
org.skywalking
</groupId>
<version>
3.2.3-2017
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
apm-springmvc-annotation-3.x-plugin
</artifactId>
<packaging>
jar
</packaging>
<name>
mvc-annotation-3.x-plugin
</name>
<url>
http://maven.apache.org
</url>
<dependencies>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-core
</artifactId>
<version>
3.2.18.RELEASE
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-webmvc
</artifactId>
<version>
3.2.18.RELEASE
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
javax.servlet
</groupId>
<artifactId>
javax.servlet-api
</artifactId>
<version>
3.0.1
</version>
<scope>
provided
</scope>
</dependency>
</dependencies>
</project>
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/ControllerConstructorInterceptor.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor
;
import
org.springframework.web.bind.annotation.RequestMapping
;
/**
* {@link ControllerConstructorInterceptor} cache the value of {@link RequestMapping} annotation with method in class
* annotation with {@link org.springframework.stereotype.Controller}.
*
* @author zhangxin
*/
public
class
ControllerConstructorInterceptor
implements
InstanceConstructorInterceptor
{
@Override
public
void
onConstruct
(
EnhancedInstance
objInst
,
Object
[]
allArguments
)
{
String
basePath
=
""
;
RequestMapping
basePathRequestMapping
=
objInst
.
getClass
().
getAnnotation
(
RequestMapping
.
class
);
if
(
basePathRequestMapping
!=
null
)
{
if
(
basePathRequestMapping
.
value
().
length
>
0
)
{
basePath
=
basePathRequestMapping
.
value
()[
0
];
}
}
EnhanceRequireObjectCache
enhanceCache
=
new
EnhanceRequireObjectCache
();
enhanceCache
.
setPathMappingCache
(
new
PathMappingCache
(
basePath
));
objInst
.
setSkyWalkingDynamicField
(
enhanceCache
);
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/ControllerMethodInterceptor.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3
;
import
java.lang.reflect.Method
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.skywalking.apm.agent.core.context.CarrierItem
;
import
org.skywalking.apm.agent.core.context.ContextCarrier
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.context.tag.Tags
;
import
org.skywalking.apm.agent.core.context.trace.AbstractSpan
;
import
org.skywalking.apm.agent.core.context.trace.SpanLayer
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
import
org.skywalking.apm.network.trace.component.ComponentsDefine
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
/**
* {@link ControllerMethodInterceptor} create entry span when the client call the method annotation with {@link
* RequestMapping} in the class annotation with {@link org.springframework.stereotype.Controller}.
*
* @author zhangxin
*/
public
class
ControllerMethodInterceptor
implements
InstanceMethodsAroundInterceptor
{
@Override
public
void
beforeMethod
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
MethodInterceptResult
result
)
throws
Throwable
{
EnhanceRequireObjectCache
pathMappingCache
=
(
EnhanceRequireObjectCache
)
objInst
.
getSkyWalkingDynamicField
();
String
requestURL
=
pathMappingCache
.
findPathMapping
(
method
);
if
(
requestURL
==
null
)
{
requestURL
=
getRequestURL
(
method
);
pathMappingCache
.
addPathMapping
(
method
,
requestURL
);
requestURL
=
pathMappingCache
.
findPathMapping
(
method
);
}
HttpServletRequest
request
=
((
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
()).
getRequest
();
ContextCarrier
contextCarrier
=
new
ContextCarrier
();
CarrierItem
next
=
contextCarrier
.
items
();
while
(
next
.
hasNext
())
{
next
=
next
.
next
();
next
.
setHeadValue
(
request
.
getHeader
(
next
.
getHeadKey
()));
}
AbstractSpan
span
=
ContextManager
.
createEntrySpan
(
requestURL
,
contextCarrier
);
Tags
.
URL
.
set
(
span
,
request
.
getRequestURL
().
toString
());
Tags
.
HTTP
.
METHOD
.
set
(
span
,
request
.
getMethod
());
span
.
setComponent
(
ComponentsDefine
.
SPRING_MVC_ANNOTATION
);
SpanLayer
.
asHttp
(
span
);
}
@Override
public
Object
afterMethod
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Object
ret
)
throws
Throwable
{
HttpServletResponse
response
=
((
EnhanceRequireObjectCache
)
objInst
.
getSkyWalkingDynamicField
()).
getHttpServletResponse
();
AbstractSpan
span
=
ContextManager
.
activeSpan
();
if
(
response
.
getStatus
()
>=
400
)
{
span
.
errorOccurred
();
Tags
.
STATUS_CODE
.
set
(
span
,
Integer
.
toString
(
response
.
getStatus
()));
}
ContextManager
.
stopSpan
();
return
ret
;
}
@Override
public
void
handleMethodException
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Throwable
t
)
{
ContextManager
.
activeSpan
().
errorOccurred
().
log
(
t
);
}
public
String
getRequestURL
(
Method
method
)
{
String
requestURL
=
""
;
RequestMapping
methodRequestMapping
=
method
.
getAnnotation
(
RequestMapping
.
class
);
if
(
methodRequestMapping
.
value
().
length
>
0
)
{
requestURL
=
methodRequestMapping
.
value
()[
0
];
}
return
requestURL
;
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/EnhanceRequireObjectCache.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3
;
import
java.lang.reflect.Method
;
import
javax.servlet.http.HttpServletResponse
;
import
org.springframework.web.context.request.NativeWebRequest
;
public
class
EnhanceRequireObjectCache
{
private
PathMappingCache
pathMappingCache
;
private
NativeWebRequest
nativeWebRequest
;
public
void
setPathMappingCache
(
PathMappingCache
pathMappingCache
)
{
this
.
pathMappingCache
=
pathMappingCache
;
}
public
HttpServletResponse
getHttpServletResponse
()
{
return
(
HttpServletResponse
)
nativeWebRequest
.
getNativeResponse
();
}
public
void
setNativeWebRequest
(
NativeWebRequest
nativeWebRequest
)
{
this
.
nativeWebRequest
=
nativeWebRequest
;
}
public
String
findPathMapping
(
Method
method
)
{
return
pathMappingCache
.
findPathMapping
(
method
);
}
public
void
addPathMapping
(
Method
method
,
String
url
)
{
pathMappingCache
.
addPathMapping
(
method
,
url
);
}
public
PathMappingCache
getPathMappingCache
()
{
return
pathMappingCache
;
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/GetBeanInterceptor.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3
;
import
java.lang.reflect.Method
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
import
org.springframework.web.context.request.NativeWebRequest
;
/**
* {@link GetBeanInterceptor} pass the {@link NativeWebRequest} object into the {@link
* org.springframework.stereotype.Controller} object.
*
* @author zhangxin
*/
public
class
GetBeanInterceptor
implements
InstanceMethodsAroundInterceptor
{
@Override
public
void
beforeMethod
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
MethodInterceptResult
result
)
throws
Throwable
{
}
@Override
public
Object
afterMethod
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Object
ret
)
throws
Throwable
{
if
(
ret
instanceof
EnhancedInstance
)
{
((
EnhanceRequireObjectCache
)((
EnhancedInstance
)
ret
).
getSkyWalkingDynamicField
()).
setNativeWebRequest
((
NativeWebRequest
)
objInst
.
getSkyWalkingDynamicField
());
}
return
ret
;
}
@Override
public
void
handleMethodException
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Throwable
t
)
{
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/InvokeForRequestInterceptor.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3
;
import
java.lang.reflect.Method
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
import
org.springframework.web.context.request.NativeWebRequest
;
/**
* {@link InvokeForRequestInterceptor} pass the {@link NativeWebRequest} object into the {@link
* org.springframework.stereotype.Controller} object.
*
* @author zhangxin
*/
public
class
InvokeForRequestInterceptor
implements
InstanceMethodsAroundInterceptor
{
@Override
public
void
beforeMethod
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
MethodInterceptResult
result
)
throws
Throwable
{
objInst
.
setSkyWalkingDynamicField
(
allArguments
[
0
]);
}
@Override
public
Object
afterMethod
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Object
ret
)
throws
Throwable
{
return
ret
;
}
@Override
public
void
handleMethodException
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Throwable
t
)
{
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/PathMappingCache.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3
;
import
java.lang.reflect.Method
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* {@link PathMappingCache} cache all request urls of {@link org.springframework.stereotype.Controller} .
*
* @author zhangxin
*/
public
class
PathMappingCache
{
private
String
classPath
=
""
;
private
ConcurrentHashMap
<
Method
,
String
>
methodPathMapping
=
new
ConcurrentHashMap
<
Method
,
String
>();
public
PathMappingCache
(
String
classPath
)
{
this
.
classPath
=
classPath
;
}
public
String
findPathMapping
(
Method
method
)
{
return
methodPathMapping
.
get
(
method
);
}
public
void
addPathMapping
(
Method
method
,
String
methodPath
)
{
methodPathMapping
.
put
(
method
,
classPath
+
methodPath
);
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/define/AbstractSpring3Instrumentation.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3.define
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine
;
/**
* {@link AbstractSpring3Instrumentation} define witness classes of the spring mvc 3 plugin. all Instrumentations
* extends this class.
*
* @author zhangxin
*/
public
abstract
class
AbstractSpring3Instrumentation
extends
ClassInstanceMethodsEnhancePluginDefine
{
public
static
final
String
WITHNESS_CLASSES
=
"org.springframework.web.servlet.view.xslt.AbstractXsltView"
;
@Override
protected
final
String
[]
witnessClasses
()
{
return
new
String
[]
{
WITHNESS_CLASSES
};
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/define/ControllerInstrumentation.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3.define
;
import
net.bytebuddy.description.method.MethodDescription
;
import
net.bytebuddy.matcher.ElementMatcher
;
import
org.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint
;
import
org.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint
;
import
org.skywalking.apm.agent.core.plugin.match.ClassMatch
;
import
static
net
.
bytebuddy
.
matcher
.
ElementMatchers
.
any
;
import
static
net
.
bytebuddy
.
matcher
.
ElementMatchers
.
isAnnotatedWith
;
import
static
net
.
bytebuddy
.
matcher
.
ElementMatchers
.
named
;
import
static
org
.
skywalking
.
apm
.
agent
.
core
.
plugin
.
match
.
ClassAnnotationMatch
.
byClassAnnotationMatch
;
/**
* {@link ControllerInstrumentation} intercept the constructor and the methods annotated with {@link
* org.springframework.web.bind.annotation.RequestMapping} in the class annotated with {@link
* org.springframework.stereotype.Controller}.
*
* @author zhangxin
*/
public
class
ControllerInstrumentation
extends
AbstractSpring3Instrumentation
{
public
static
final
String
CONTROLLER_ENHANCE_ANNOTATION
=
"org.springframework.stereotype.Controller"
;
public
static
final
String
CONSTRUCTOR_INTERCEPTOR
=
"org.skywalking.apm.plugin.spring.mvc.v3.ControllerConstructorInterceptor"
;
public
static
final
String
REQUEST_MAPPING_ENHANCE_ANNOTATION
=
"org.springframework.web.bind.annotation.RequestMapping"
;
public
static
final
String
REQUEST_MAPPING_METHOD_INTERCEPTOR
=
"org.skywalking.apm.plugin.spring.mvc.v3.ControllerMethodInterceptor"
;
@Override
protected
ConstructorInterceptPoint
[]
getConstructorsInterceptPoints
()
{
return
new
ConstructorInterceptPoint
[]
{
new
ConstructorInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getConstructorMatcher
()
{
return
any
();
}
@Override
public
String
getConstructorInterceptor
()
{
return
CONSTRUCTOR_INTERCEPTOR
;
}
}
};
}
@Override
protected
InstanceMethodsInterceptPoint
[]
getInstanceMethodsInterceptPoints
()
{
return
new
InstanceMethodsInterceptPoint
[]
{
new
InstanceMethodsInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getMethodsMatcher
()
{
return
isAnnotatedWith
(
named
(
REQUEST_MAPPING_ENHANCE_ANNOTATION
));
}
@Override
public
String
getMethodsInterceptor
()
{
return
REQUEST_MAPPING_METHOD_INTERCEPTOR
;
}
@Override
public
boolean
isOverrideArgs
()
{
return
false
;
}
}
};
}
@Override
protected
ClassMatch
enhanceClass
()
{
return
byClassAnnotationMatch
(
new
String
[]
{
CONTROLLER_ENHANCE_ANNOTATION
});
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/define/HandlerMethodInstrumentation.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3.define
;
import
net.bytebuddy.description.method.MethodDescription
;
import
net.bytebuddy.matcher.ElementMatcher
;
import
org.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint
;
import
org.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint
;
import
org.skywalking.apm.agent.core.plugin.match.ClassMatch
;
import
static
net
.
bytebuddy
.
matcher
.
ElementMatchers
.
named
;
import
static
org
.
skywalking
.
apm
.
agent
.
core
.
plugin
.
match
.
NameMatch
.
byName
;
/**
* {@link HandlerMethodInstrumentation} intercept the <code>getBean</code> method in the
* <code>org.springframework.web.method.HandlerMethod</code> class.
*
* @author zhangxin
*/
public
class
HandlerMethodInstrumentation
extends
AbstractSpring3Instrumentation
{
public
static
final
String
ENHANCE_METHOD
=
"getBean"
;
public
static
final
String
INTERCEPTOR_CLASS
=
"org.skywalking.apm.plugin.spring.mvc.v3.GetBeanInterceptor"
;
public
static
final
String
ENHANCE_CLASS
=
"org.springframework.web.method.HandlerMethod"
;
@Override
protected
ConstructorInterceptPoint
[]
getConstructorsInterceptPoints
()
{
return
new
ConstructorInterceptPoint
[
0
];
}
@Override
protected
InstanceMethodsInterceptPoint
[]
getInstanceMethodsInterceptPoints
()
{
return
new
InstanceMethodsInterceptPoint
[]
{
new
InstanceMethodsInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getMethodsMatcher
()
{
return
named
(
ENHANCE_METHOD
);
}
@Override
public
String
getMethodsInterceptor
()
{
return
INTERCEPTOR_CLASS
;
}
@Override
public
boolean
isOverrideArgs
()
{
return
false
;
}
}
};
}
@Override
protected
ClassMatch
enhanceClass
()
{
return
byName
(
ENHANCE_CLASS
);
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/v3/define/InvocableHandlerInstrumentation.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3.define
;
import
net.bytebuddy.description.method.MethodDescription
;
import
net.bytebuddy.matcher.ElementMatcher
;
import
org.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint
;
import
org.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint
;
import
org.skywalking.apm.agent.core.plugin.match.ClassMatch
;
import
static
net
.
bytebuddy
.
matcher
.
ElementMatchers
.
named
;
import
static
org
.
skywalking
.
apm
.
agent
.
core
.
plugin
.
match
.
NameMatch
.
byName
;
/**
* {@link InvocableHandlerInstrumentation} intercept the <code>invokeForRequest</code> method in the
* <code>org.springframework.web.method.support.InvocableHandlerMethod</code> class.
*
* @author zhangxin
*/
public
class
InvocableHandlerInstrumentation
extends
AbstractSpring3Instrumentation
{
public
static
final
String
ENHANCE_METHOD
=
"invokeForRequest"
;
public
static
final
String
INTERCEPTOR_CLASS
=
"org.skywalking.apm.plugin.spring.mvc.v3.InvokeForRequestInterceptor"
;
public
static
final
String
ENHANCE_CLASS
=
"org.springframework.web.method.support.InvocableHandlerMethod"
;
@Override
protected
ConstructorInterceptPoint
[]
getConstructorsInterceptPoints
()
{
return
new
ConstructorInterceptPoint
[
0
];
}
@Override
protected
InstanceMethodsInterceptPoint
[]
getInstanceMethodsInterceptPoints
()
{
return
new
InstanceMethodsInterceptPoint
[]
{
new
InstanceMethodsInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getMethodsMatcher
()
{
return
named
(
ENHANCE_METHOD
);
}
@Override
public
String
getMethodsInterceptor
()
{
return
INTERCEPTOR_CLASS
;
}
@Override
public
boolean
isOverrideArgs
()
{
return
false
;
}
},
};
}
@Override
protected
ClassMatch
enhanceClass
()
{
return
byName
(
ENHANCE_CLASS
);
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/main/resources/skywalking-plugin.def
0 → 100644
浏览文件 @
eac522ed
spring-mvc-annotation-3.x=org.skywalking.apm.plugin.spring.mvc.v3.define.ControllerInstrumentation
spring-mvc-annotation-3.x=org.skywalking.apm.plugin.spring.mvc.v3.define.HandlerMethodInstrumentation
spring-mvc-annotation-3.x=org.skywalking.apm.plugin.spring.mvc.v3.define.InvocableHandlerInstrumentation
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v3/ControllerConstructorInterceptorTest.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3
;
import
java.lang.reflect.Field
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.powermock.modules.junit4.PowerMockRunner
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
static
org
.
hamcrest
.
MatcherAssert
.
assertThat
;
import
static
org
.
hamcrest
.
core
.
Is
.
is
;
@RunWith
(
PowerMockRunner
.
class
)
public
class
ControllerConstructorInterceptorTest
{
private
ControllerConstructorInterceptor
interceptor
;
private
MockRequestMappingObject
mappingObject
;
private
MockRequestMappingObjectWithoutRequestMapping
withoutRequestMapping
;
@Before
public
void
setUp
()
{
mappingObject
=
new
MockRequestMappingObject
();
withoutRequestMapping
=
new
MockRequestMappingObjectWithoutRequestMapping
();
interceptor
=
new
ControllerConstructorInterceptor
();
}
@Test
public
void
testClassAnnotationWithRequestMapping
()
throws
NoSuchFieldException
,
IllegalAccessException
{
interceptor
.
onConstruct
(
mappingObject
,
null
);
assertThat
(
"/test"
,
is
(
getBasePath
(
mappingObject
.
requireObjectCache
.
getPathMappingCache
())));
}
@Test
public
void
testClassAnnotationWithoutRequestMapping
()
throws
NoSuchFieldException
,
IllegalAccessException
{
interceptor
.
onConstruct
(
withoutRequestMapping
,
null
);
assertThat
(
""
,
is
(
getBasePath
(
withoutRequestMapping
.
requireObjectCache
.
getPathMappingCache
())));
}
private
String
getBasePath
(
PathMappingCache
mappingCache
)
throws
NoSuchFieldException
,
IllegalAccessException
{
Field
classPath
=
mappingCache
.
getClass
().
getDeclaredField
(
"classPath"
);
classPath
.
setAccessible
(
true
);
return
(
String
)
classPath
.
get
(
mappingCache
);
}
@RequestMapping
(
"/test"
)
private
class
MockRequestMappingObject
implements
EnhancedInstance
{
private
EnhanceRequireObjectCache
requireObjectCache
;
@RequestMapping
(
"/test"
)
private
void
mockTestMethod
()
{
}
@Override
public
Object
getSkyWalkingDynamicField
()
{
return
requireObjectCache
;
}
@Override
public
void
setSkyWalkingDynamicField
(
Object
value
)
{
this
.
requireObjectCache
=
(
EnhanceRequireObjectCache
)
value
;
}
}
private
class
MockRequestMappingObjectWithoutRequestMapping
implements
EnhancedInstance
{
private
EnhanceRequireObjectCache
requireObjectCache
;
private
void
mockTestMethod
()
{
}
@Override
public
Object
getSkyWalkingDynamicField
()
{
return
requireObjectCache
;
}
@Override
public
void
setSkyWalkingDynamicField
(
Object
value
)
{
this
.
requireObjectCache
=
(
EnhanceRequireObjectCache
)
value
;
}
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v3/ControllerMethodInterceptorTest.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3
;
import
java.lang.reflect.Method
;
import
java.util.List
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.junit.Before
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.Mock
;
import
org.mockito.Mockito
;
import
org.powermock.core.classloader.annotations.PrepareForTest
;
import
org.powermock.modules.junit4.PowerMockRunner
;
import
org.powermock.modules.junit4.PowerMockRunnerDelegate
;
import
org.skywalking.apm.agent.core.context.SW3CarrierItem
;
import
org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan
;
import
org.skywalking.apm.agent.core.context.trace.LogDataEntity
;
import
org.skywalking.apm.agent.core.context.trace.SpanLayer
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegmentRef
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.skywalking.apm.agent.test.helper.SegmentHelper
;
import
org.skywalking.apm.agent.test.helper.SegmentRefHelper
;
import
org.skywalking.apm.agent.test.helper.SpanHelper
;
import
org.skywalking.apm.agent.test.tools.AgentServiceRule
;
import
org.skywalking.apm.agent.test.tools.SegmentStorage
;
import
org.skywalking.apm.agent.test.tools.SegmentStoragePoint
;
import
org.skywalking.apm.agent.test.tools.TracingSegmentRunner
;
import
org.skywalking.apm.network.trace.component.ComponentsDefine
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.context.request.NativeWebRequest
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
hamcrest
.
MatcherAssert
.
assertThat
;
import
static
org
.
powermock
.
api
.
mockito
.
PowerMockito
.
mockStatic
;
import
static
org
.
powermock
.
api
.
mockito
.
PowerMockito
.
when
;
import
static
org
.
skywalking
.
apm
.
agent
.
test
.
tools
.
SpanAssert
.
assertComponent
;
import
static
org
.
skywalking
.
apm
.
agent
.
test
.
tools
.
SpanAssert
.
assertException
;
import
static
org
.
skywalking
.
apm
.
agent
.
test
.
tools
.
SpanAssert
.
assertLayer
;
import
static
org
.
skywalking
.
apm
.
agent
.
test
.
tools
.
SpanAssert
.
assertTag
;
@RunWith
(
PowerMockRunner
.
class
)
@PowerMockRunnerDelegate
(
TracingSegmentRunner
.
class
)
@PrepareForTest
({
RequestContextHolder
.
class
,
ServletRequestAttributes
.
class
})
public
class
ControllerMethodInterceptorTest
{
@SegmentStoragePoint
private
SegmentStorage
segmentStorage
;
@Rule
public
AgentServiceRule
serviceRule
=
new
AgentServiceRule
();
@Mock
private
EnhancedInstance
enhancedInstance
;
@Mock
private
NativeWebRequest
nativeWebRequest
;
@Mock
private
HttpServletResponse
httpServletResponse
;
@Mock
private
ServletRequestAttributes
servletRequestAttributes
;
@Mock
private
HttpServletRequest
httpServletRequest
;
private
Method
method
;
private
EnhanceRequireObjectCache
enhanceRequireObjectCache
;
private
ControllerMethodInterceptor
controllerMethodInterceptor
;
@Before
public
void
setUp
()
throws
NoSuchMethodException
{
controllerMethodInterceptor
=
new
ControllerMethodInterceptor
();
enhanceRequireObjectCache
=
new
EnhanceRequireObjectCache
();
enhanceRequireObjectCache
.
setPathMappingCache
(
new
PathMappingCache
(
"/test"
));
method
=
ControllerMethodInterceptorTest
.
class
.
getDeclaredMethod
(
"mockControllerService"
);
enhanceRequireObjectCache
.
addPathMapping
(
method
,
"/test"
);
enhanceRequireObjectCache
.
setNativeWebRequest
(
nativeWebRequest
);
enhanceRequireObjectCache
.
setPathMappingCache
(
new
PathMappingCache
(
"/test"
));
mockStatic
(
RequestContextHolder
.
class
);
when
(
servletRequestAttributes
.
getRequest
()).
thenReturn
(
httpServletRequest
);
when
(
nativeWebRequest
.
getNativeResponse
()).
thenReturn
(
httpServletResponse
);
when
(
enhancedInstance
.
getSkyWalkingDynamicField
()).
thenReturn
(
enhanceRequireObjectCache
);
when
(
RequestContextHolder
.
getRequestAttributes
()).
thenReturn
(
servletRequestAttributes
);
when
(
httpServletRequest
.
getMethod
()).
thenReturn
(
"GET"
);
when
(
httpServletRequest
.
getRequestURL
()).
thenReturn
(
new
StringBuffer
(
"http://localhost:8080/skywalking-test/test"
));
}
@Test
public
void
testWithoutSerializedContextData
()
throws
Throwable
{
controllerMethodInterceptor
.
beforeMethod
(
enhancedInstance
,
method
,
null
,
null
,
null
);
controllerMethodInterceptor
.
afterMethod
(
enhancedInstance
,
method
,
null
,
null
,
null
);
assertThat
(
segmentStorage
.
getTraceSegments
().
size
(),
is
(
1
));
TraceSegment
traceSegment
=
segmentStorage
.
getTraceSegments
().
get
(
0
);
List
<
AbstractTracingSpan
>
spans
=
SegmentHelper
.
getSpans
(
traceSegment
);
assertThat
(
spans
.
size
(),
is
(
1
));
assertRequestSpan
(
spans
.
get
(
0
));
}
@Test
public
void
testWithSerializedContextData
()
throws
Throwable
{
Mockito
.
when
(
httpServletRequest
.
getHeader
(
SW3CarrierItem
.
HEADER_NAME
)).
thenReturn
(
"1.234.111|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"
);
controllerMethodInterceptor
.
beforeMethod
(
enhancedInstance
,
method
,
null
,
null
,
null
);
controllerMethodInterceptor
.
afterMethod
(
enhancedInstance
,
method
,
null
,
null
,
null
);
assertThat
(
segmentStorage
.
getTraceSegments
().
size
(),
is
(
1
));
TraceSegment
traceSegment
=
segmentStorage
.
getTraceSegments
().
get
(
0
);
List
<
AbstractTracingSpan
>
spans
=
SegmentHelper
.
getSpans
(
traceSegment
);
assertThat
(
spans
.
size
(),
is
(
1
));
assertRequestSpan
(
spans
.
get
(
0
));
List
<
TraceSegmentRef
>
traceSegmentRefs
=
traceSegment
.
getRefs
();
assertThat
(
traceSegmentRefs
.
size
(),
is
(
1
));
assertTraceSegmentRef
(
traceSegmentRefs
.
get
(
0
));
}
@Test
public
void
testOccurException
()
throws
Throwable
{
controllerMethodInterceptor
.
beforeMethod
(
enhancedInstance
,
method
,
null
,
null
,
null
);
controllerMethodInterceptor
.
handleMethodException
(
enhancedInstance
,
method
,
null
,
null
,
new
RuntimeException
());
controllerMethodInterceptor
.
afterMethod
(
enhancedInstance
,
method
,
null
,
null
,
null
);
assertThat
(
segmentStorage
.
getTraceSegments
().
size
(),
is
(
1
));
TraceSegment
traceSegment
=
segmentStorage
.
getTraceSegments
().
get
(
0
);
List
<
AbstractTracingSpan
>
spans
=
SegmentHelper
.
getSpans
(
traceSegment
);
assertThat
(
spans
.
size
(),
is
(
1
));
assertRequestSpan
(
spans
.
get
(
0
));
List
<
LogDataEntity
>
logDataEntities
=
SpanHelper
.
getLogs
(
spans
.
get
(
0
));
assertThat
(
logDataEntities
.
size
(),
is
(
1
));
assertException
(
logDataEntities
.
get
(
0
),
RuntimeException
.
class
);
}
private
void
assertTraceSegmentRef
(
TraceSegmentRef
ref
)
{
assertThat
(
SegmentRefHelper
.
getEntryApplicationInstanceId
(
ref
),
is
(
1
));
assertThat
(
SegmentRefHelper
.
getSpanId
(
ref
),
is
(
3
));
assertThat
(
SegmentRefHelper
.
getTraceSegmentId
(
ref
).
toString
(),
is
(
"1.234.111"
));
}
private
void
assertRequestSpan
(
AbstractTracingSpan
span
)
{
assertThat
(
span
.
getOperationName
(),
is
(
"/test/test"
));
assertComponent
(
span
,
ComponentsDefine
.
SPRING_MVC_ANNOTATION
);
assertTag
(
span
,
0
,
"http://localhost:8080/skywalking-test/test"
);
assertThat
(
span
.
isEntry
(),
is
(
true
));
assertLayer
(
span
,
SpanLayer
.
HTTP
);
}
@RequestMapping
(
"/test"
)
public
void
mockControllerService
()
{
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v3/GetBeanInterceptorTest.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.Matchers
;
import
org.mockito.Mock
;
import
org.mockito.runners.MockitoJUnitRunner
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.springframework.web.context.request.NativeWebRequest
;
import
static
org
.
mockito
.
Mockito
.
times
;
import
static
org
.
mockito
.
Mockito
.
verify
;
import
static
org
.
mockito
.
Mockito
.
when
;
@RunWith
(
MockitoJUnitRunner
.
class
)
public
class
GetBeanInterceptorTest
{
@Mock
private
EnhancedInstance
enhancedInstance
;
@Mock
private
NativeWebRequest
request
;
@Mock
private
EnhancedInstance
enhanceRet
;
private
GetBeanInterceptor
interceptor
;
@Before
public
void
setUp
()
{
interceptor
=
new
GetBeanInterceptor
();
when
(
enhanceRet
.
getSkyWalkingDynamicField
()).
thenReturn
(
new
EnhanceRequireObjectCache
());
when
(
enhancedInstance
.
getSkyWalkingDynamicField
()).
thenReturn
(
request
);
}
@Test
public
void
testResultIsNotEnhanceInstance
()
throws
Throwable
{
interceptor
.
afterMethod
(
enhancedInstance
,
null
,
null
,
null
,
new
Object
());
verify
(
enhanceRet
,
times
(
0
)).
setSkyWalkingDynamicField
(
Matchers
.
any
());
}
@Test
public
void
testResultIsEnhanceInstance
()
throws
Throwable
{
interceptor
.
afterMethod
(
enhancedInstance
,
null
,
null
,
null
,
enhanceRet
);
verify
(
enhanceRet
,
times
(
0
)).
setSkyWalkingDynamicField
(
Matchers
.
any
());
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-3.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/v3/InvokeForRequestInterceptorTest.java
0 → 100644
浏览文件 @
eac522ed
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package
org.skywalking.apm.plugin.spring.mvc.v3
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.Matchers
;
import
org.mockito.Mock
;
import
org.mockito.runners.MockitoJUnitRunner
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.springframework.web.context.request.NativeWebRequest
;
import
static
org
.
mockito
.
Mockito
.
times
;
import
static
org
.
mockito
.
Mockito
.
verify
;
@RunWith
(
MockitoJUnitRunner
.
class
)
public
class
InvokeForRequestInterceptorTest
{
private
InvokeForRequestInterceptor
interceptor
;
@Mock
private
EnhancedInstance
enhancedInstance
;
@Mock
private
NativeWebRequest
nativeWebRequest
;
private
Object
argument
[];
@Before
public
void
setUp
()
{
interceptor
=
new
InvokeForRequestInterceptor
();
argument
=
new
Object
[]
{
nativeWebRequest
};
}
@Test
public
void
testPassNativeWebRequest
()
throws
Throwable
{
interceptor
.
beforeMethod
(
enhancedInstance
,
null
,
argument
,
new
Class
[]
{
NativeWebRequest
.
class
},
null
);
verify
(
enhancedInstance
,
times
(
1
)).
setSkyWalkingDynamicField
(
Matchers
.
any
());
}
}
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/pom.xml
浏览文件 @
eac522ed
...
@@ -47,7 +47,7 @@
...
@@ -47,7 +47,7 @@
<dependency>
<dependency>
<groupId>
javax.servlet
</groupId>
<groupId>
javax.servlet
</groupId>
<artifactId>
javax.servlet-api
</artifactId>
<artifactId>
javax.servlet-api
</artifactId>
<version>
4.0.0-b0
1
</version>
<version>
3.0.
1
</version>
<scope>
provided
</scope>
<scope>
provided
</scope>
</dependency>
</dependency>
</dependencies>
</dependencies>
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/AbstractMethodInteceptor.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/
v4/
AbstractMethodInteceptor.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc
;
package
org.skywalking.apm.plugin.spring.mvc
.v4
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/ControllerConstructorInterceptor.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/
v4/
ControllerConstructorInterceptor.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc
;
package
org.skywalking.apm.plugin.spring.mvc
.v4
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/PathMappingCache.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/
v4/
PathMappingCache.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc
;
package
org.skywalking.apm.plugin.spring.mvc
.v4
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentHashMap
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/RequestMappingMethodInterceptor.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/
v4/
RequestMappingMethodInterceptor.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc
;
package
org.skywalking.apm.plugin.spring.mvc
.v4
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/RestMappingMethodInterceptor.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/
v4/
RestMappingMethodInterceptor.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc
;
package
org.skywalking.apm.plugin.spring.mvc
.v4
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/define/AbstractControllerInstrumentation.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/
v4/
define/AbstractControllerInstrumentation.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc.define
;
package
org.skywalking.apm.plugin.spring.mvc.
v4.
define
;
import
net.bytebuddy.description.method.MethodDescription
;
import
net.bytebuddy.description.method.MethodDescription
;
import
net.bytebuddy.matcher.ElementMatcher
;
import
net.bytebuddy.matcher.ElementMatcher
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/define/ControllerInstrumentation.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/
v4/
define/ControllerInstrumentation.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc.define
;
package
org.skywalking.apm.plugin.spring.mvc.
v4.
define
;
public
class
ControllerInstrumentation
extends
AbstractControllerInstrumentation
{
public
class
ControllerInstrumentation
extends
AbstractControllerInstrumentation
{
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/define/RestControllerInstrumentation.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/
v4/
define/RestControllerInstrumentation.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc.define
;
package
org.skywalking.apm.plugin.spring.mvc.
v4.
define
;
public
class
RestControllerInstrumentation
extends
AbstractControllerInstrumentation
{
public
class
RestControllerInstrumentation
extends
AbstractControllerInstrumentation
{
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/resources/skywalking-plugin.def
浏览文件 @
eac522ed
spring-mvc-annotation-4.x=org.skywalking.apm.plugin.spring.mvc.define.ControllerInstrumentation
spring-mvc-annotation-4.x=org.skywalking.apm.plugin.spring.mvc.v4.define.ControllerInstrumentation
spring-mvc-annotation-4.x=org.skywalking.apm.plugin.spring.mvc.define.RestControllerInstrumentation
spring-mvc-annotation-4.x=org.skywalking.apm.plugin.spring.mvc.v4.define.RestControllerInstrumentation
\ No newline at end of file
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/ControllerConstructorInterceptorTest.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/
v4/
ControllerConstructorInterceptorTest.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc
;
package
org.skywalking.apm.plugin.spring.mvc
.v4
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
org.junit.Assert
;
import
org.junit.Assert
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/PathMappingCacheTest.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/
v4/
PathMappingCacheTest.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc
;
package
org.skywalking.apm.plugin.spring.mvc
.v4
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
org.junit.Assert
;
import
org.junit.Assert
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/RequestMappingMethodInterceptorTest.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/
v4/
RequestMappingMethodInterceptorTest.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc
;
package
org.skywalking.apm.plugin.spring.mvc
.v4
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.util.List
;
import
java.util.List
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/RestMappingMethodInterceptorTest.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/
v4/
RestMappingMethodInterceptorTest.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc
;
package
org.skywalking.apm.plugin.spring.mvc
.v4
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.util.List
;
import
java.util.List
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/define/ControllerInstrumentationTest.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/
v4/
define/ControllerInstrumentationTest.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc.define
;
package
org.skywalking.apm.plugin.spring.mvc.
v4.
define
;
import
net.bytebuddy.matcher.ElementMatchers
;
import
net.bytebuddy.matcher.ElementMatchers
;
import
org.junit.Assert
;
import
org.junit.Assert
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/define/RestControllerInstrumentationTest.java
→
apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/test/java/org/skywalking/apm/plugin/spring/mvc/
v4/
define/RestControllerInstrumentationTest.java
浏览文件 @
eac522ed
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
*/
package
org.skywalking.apm.plugin.spring.mvc.define
;
package
org.skywalking.apm.plugin.spring.mvc.
v4.
define
;
import
org.junit.Assert
;
import
org.junit.Assert
;
import
org.junit.Before
;
import
org.junit.Before
;
...
...
apm-sniffer/apm-sdk-plugin/spring-plugins/pom.xml
浏览文件 @
eac522ed
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
<module>
resttemplate-4.x-plugin
</module>
<module>
resttemplate-4.x-plugin
</module>
<module>
mvc-annotation-4.x-plugin
</module>
<module>
mvc-annotation-4.x-plugin
</module>
<module>
spring-cloud
</module>
<module>
spring-cloud
</module>
<module>
mvc-annotation-3.x-plugin
</module>
</modules>
</modules>
<packaging>
pom
</packaging>
<packaging>
pom
</packaging>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录