Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
javalover123888
SkyWalking
提交
558b31c2
S
SkyWalking
项目概览
javalover123888
/
SkyWalking
与 Fork 源项目一致
Fork自
山不在高_有仙则灵 / SkyWalking
通知
2
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,发现更多精彩内容 >>
提交
558b31c2
编写于
12月 18, 2015
作者:
Z
zhangxin10
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
完成Plugin部分功能
上级
26d39e12
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
205 addition
and
0 deletion
+205
-0
skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/TestBeanFactoryPostProcessor.java
...kywalking/plugin/spring/TestBeanFactoryPostProcessor.java
+20
-0
skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/TraceParser.java
...va/com/ai/cloud/skywalking/plugin/spring/TraceParser.java
+29
-0
skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/TracingBeanParser.java
.../ai/cloud/skywalking/plugin/spring/TracingBeanParser.java
+56
-0
skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/util/ConcurrentHashSet.java
...loud/skywalking/plugin/spring/util/ConcurrentHashSet.java
+49
-0
skywalking-sdk-plugin/spring-plugin/target/classes/META-INF/skywalking.xsd
...ugin/spring-plugin/target/classes/META-INF/skywalking.xsd
+49
-0
skywalking-sdk-plugin/spring-plugin/target/classes/META-INF/spring.handlers
...gin/spring-plugin/target/classes/META-INF/spring.handlers
+1
-0
skywalking-sdk-plugin/spring-plugin/target/classes/META-INF/spring.schemas
...ugin/spring-plugin/target/classes/META-INF/spring.schemas
+1
-0
未找到文件。
skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/TestBeanFactoryPostProcessor.java
0 → 100644
浏览文件 @
558b31c2
package
com.ai.cloud.skywalking.plugin.spring
;
import
org.springframework.beans.BeansException
;
import
org.springframework.beans.factory.config.BeanPostProcessor
;
public
class
TestBeanFactoryPostProcessor
implements
BeanPostProcessor
{
@Override
public
Object
postProcessBeforeInitialization
(
Object
bean
,
String
beanName
)
throws
BeansException
{
System
.
out
.
println
(
bean
.
getClass
().
getName
());
return
bean
;
}
@Override
public
Object
postProcessAfterInitialization
(
Object
bean
,
String
beanName
)
throws
BeansException
{
System
.
out
.
println
(
bean
.
getClass
().
getName
());
return
bean
;
}
}
skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/TraceParser.java
0 → 100644
浏览文件 @
558b31c2
package
com.ai.cloud.skywalking.plugin.spring
;
import
org.springframework.beans.factory.config.BeanDefinition
;
import
org.springframework.beans.factory.support.RootBeanDefinition
;
import
org.springframework.beans.factory.xml.BeanDefinitionParser
;
import
org.springframework.beans.factory.xml.ParserContext
;
import
org.w3c.dom.Element
;
public
class
TraceParser
implements
BeanDefinitionParser
{
@Override
public
BeanDefinition
parse
(
Element
element
,
ParserContext
parserContext
)
{
RootBeanDefinition
rootBeanDefinition
=
new
RootBeanDefinition
();
rootBeanDefinition
.
setLazyInit
(
false
);
rootBeanDefinition
.
setBeanClass
(
TracingEnhanceProcessor
.
class
);
String
id
=
null
;
id
=
element
.
getAttribute
(
"name"
);
int
counter
=
2
;
while
(
parserContext
.
getRegistry
().
containsBeanDefinition
(
id
))
{
id
=
id
+
(
counter
++);
}
if
(
id
!=
null
&&
id
.
length
()
>
0
)
{
if
(
parserContext
.
getRegistry
().
containsBeanDefinition
(
id
))
{
throw
new
IllegalStateException
(
"Duplicate spring bean id "
+
id
);
}
parserContext
.
getRegistry
().
registerBeanDefinition
(
id
,
rootBeanDefinition
);
}
return
rootBeanDefinition
;
}
}
skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/TracingBeanParser.java
0 → 100644
浏览文件 @
558b31c2
package
com.ai.cloud.skywalking.plugin.spring
;
import
org.springframework.beans.factory.config.BeanDefinition
;
import
org.springframework.beans.factory.config.RuntimeBeanReference
;
import
org.springframework.beans.factory.support.RootBeanDefinition
;
import
org.springframework.beans.factory.xml.BeanDefinitionParser
;
import
org.springframework.beans.factory.xml.ParserContext
;
import
org.w3c.dom.Element
;
import
org.w3c.dom.NamedNodeMap
;
import
org.w3c.dom.Node
;
public
class
TracingBeanParser
implements
BeanDefinitionParser
{
@Override
public
BeanDefinition
parse
(
Element
element
,
ParserContext
parserContext
)
{
// 获取Method并处理
String
methodPattern
=
element
.
getAttribute
(
"method"
);
if
(
methodPattern
==
null
||
methodPattern
.
length
()
==
0
)
{
throw
new
IllegalStateException
(
"Miss method pattern"
);
}
String
packageName
=
element
.
getAttribute
(
"package"
);
String
className
=
element
.
getAttribute
(
"class"
);
RootBeanDefinition
beanDefinition
=
new
RootBeanDefinition
();
beanDefinition
.
setBeanClass
(
TracingClassBean
.
class
);
String
id
=
null
;
id
=
element
.
getAttribute
(
"name"
);
int
counter
=
2
;
while
(
parserContext
.
getRegistry
().
containsBeanDefinition
(
id
))
{
id
=
id
+(
counter
++);
}
if
(
id
!=
null
&&
id
.
length
()
>
0
)
{
if
(
parserContext
.
getRegistry
().
containsBeanDefinition
(
id
))
{
throw
new
IllegalStateException
(
"Duplicate spring bean id "
+
id
);
}
parserContext
.
getRegistry
().
registerBeanDefinition
(
id
,
beanDefinition
);
}
NamedNodeMap
nnm
=
element
.
getAttributes
();
for
(
int
i
=
0
;
i
<
nnm
.
getLength
();
i
++)
{
Node
node
=
nnm
.
item
(
i
);
String
key
=
node
.
getLocalName
();
String
value
=
node
.
getNodeValue
();
if
(
key
.
equals
(
"entity"
))
{
if
(
parserContext
.
getRegistry
().
containsBeanDefinition
(
value
))
{
beanDefinition
.
getPropertyValues
().
add
(
key
,
parserContext
.
getRegistry
().
getBeanDefinition
(
value
));
}
else
{
beanDefinition
.
getPropertyValues
().
add
(
key
,
new
RuntimeBeanReference
(
value
));
}
}
else
{
beanDefinition
.
getPropertyValues
().
add
(
key
,
value
);
}
}
return
beanDefinition
;
}
}
skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/util/ConcurrentHashSet.java
0 → 100644
浏览文件 @
558b31c2
package
com.ai.cloud.skywalking.plugin.spring.util
;
import
java.io.Serializable
;
import
java.util.AbstractSet
;
import
java.util.Iterator
;
import
java.util.Set
;
import
java.util.concurrent.ConcurrentHashMap
;
public
class
ConcurrentHashSet
<
E
>
extends
AbstractSet
<
E
>
implements
Set
<
E
>,
Serializable
{
private
static
final
long
serialVersionUID
=
-
8672117787651310382L
;
private
static
final
Object
PRESENT
=
new
Object
();
private
final
ConcurrentHashMap
<
E
,
Object
>
map
;
public
ConcurrentHashSet
()
{
this
.
map
=
new
ConcurrentHashMap
();
}
public
ConcurrentHashSet
(
int
initialCapacity
)
{
this
.
map
=
new
ConcurrentHashMap
(
initialCapacity
);
}
public
Iterator
<
E
>
iterator
()
{
return
this
.
map
.
keySet
().
iterator
();
}
public
int
size
()
{
return
this
.
map
.
size
();
}
public
boolean
isEmpty
()
{
return
this
.
map
.
isEmpty
();
}
public
boolean
contains
(
Object
o
)
{
return
this
.
map
.
containsKey
(
o
);
}
public
boolean
add
(
E
e
)
{
return
this
.
map
.
put
(
e
,
PRESENT
)
==
null
;
}
public
boolean
remove
(
Object
o
)
{
return
this
.
map
.
remove
(
o
)
==
PRESENT
;
}
public
void
clear
()
{
this
.
map
.
clear
();
}
}
skywalking-sdk-plugin/spring-plugin/target/classes/META-INF/skywalking.xsd
0 → 100644
浏览文件 @
558b31c2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema
xmlns=
"http://code.alibabatech.com/schema/dubbo"
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
targetNamespace=
"http://code.alibabatech.com/schema/dubbo"
>
<xsd:import
namespace=
"http://www.w3.org/XML/1998/namespace"
/>
<xsd:import
namespace=
"http://www.springframework.org/schema/beans"
/>
<xsd:import
namespace=
"http://www.springframework.org/schema/tool"
/>
<xsd:annotation>
<xsd:documentation>
<![CDATA[ Namespace support for the skywalking tracing class. ]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType
name=
"tracingClassType"
>
<xsd:attribute
name=
"name"
type=
"xsd:string"
>
<xsd:annotation>
<xsd:documentation>
<![CDATA[ The class name that need to tracing. ]]>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute
name=
"method"
type=
"xsd:wildcard"
>
<xsd:annotation>
<xsd:documentation>
<![CDATA[ The method name that need to tracing. ]]]>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType
name=
"tracingPackageType"
>
<xsd:attribute
name=
"name"
type=
"xsd:string"
>
<xsd:annotation>
<xsd:documentation>
<![CDATA[]]>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:element
name=
"tracing-class"
type=
"tracingClassType"
>
<xsd:annotation>
<xsd:documentation>
<![CDATA[ The service argument config ]]>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element
name=
"tracing-package"
type=
"tracingPackageType"
>
<xsd:annotation>
<xsd:documentation>
<![CDATA[ The service argument config ]]>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element
name=
"tracing"
/>
</xsd:schema>
\ No newline at end of file
skywalking-sdk-plugin/spring-plugin/target/classes/META-INF/spring.handlers
0 → 100644
浏览文件 @
558b31c2
http\://cloud.asiainfo.com/schema/skywalking=com.ai.cloud.skywalking.plugin.spring.schema.SWNamespaceHandler
\ No newline at end of file
skywalking-sdk-plugin/spring-plugin/target/classes/META-INF/spring.schemas
0 → 100644
浏览文件 @
558b31c2
http\://cloud.asiainfo.com/schema/skywalking/skywalking.xsd=META-INF/skywalking.xsd
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录