Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
9e07b687
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
9e07b687
编写于
9月 18, 2012
作者:
M
mchung
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7198070: Eliminate static dependency from JMX to java.beans.ConstructorProperties
Reviewed-by: alanb
上级
cbdae97a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
48 addition
and
6 deletion
+48
-6
src/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java
.../com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java
+48
-6
未找到文件。
src/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java
浏览文件 @
9e07b687
...
@@ -32,14 +32,15 @@ import static javax.management.openmbean.SimpleType.*;
...
@@ -32,14 +32,15 @@ import static javax.management.openmbean.SimpleType.*;
import
com.sun.jmx.remote.util.EnvHelp
;
import
com.sun.jmx.remote.util.EnvHelp
;
import
java.beans.ConstructorProperties
;
import
java.io.InvalidObjectException
;
import
java.io.InvalidObjectException
;
import
java.lang.annotation.Annotation
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.ElementType
;
import
java.lang.ref.WeakReference
;
import
java.lang.ref.WeakReference
;
import
java.lang.reflect.Array
;
import
java.lang.reflect.Array
;
import
java.lang.reflect.Constructor
;
import
java.lang.reflect.Constructor
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.GenericArrayType
;
import
java.lang.reflect.GenericArrayType
;
import
java.lang.reflect.InvocationTargetException
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Modifier
;
import
java.lang.reflect.Modifier
;
import
java.lang.reflect.ParameterizedType
;
import
java.lang.reflect.ParameterizedType
;
...
@@ -1129,14 +1130,56 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory {
...
@@ -1129,14 +1130,56 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory {
to getters. */
to getters. */
private
static
final
class
CompositeBuilderViaConstructor
private
static
final
class
CompositeBuilderViaConstructor
extends
CompositeBuilder
{
extends
CompositeBuilder
{
static
class
AnnotationHelper
{
private
static
Class
<?
extends
Annotation
>
constructorPropertiesClass
;
private
static
Method
valueMethod
;
static
{
findConstructorPropertiesClass
();
}
@SuppressWarnings
(
"unchecked"
)
private
static
void
findConstructorPropertiesClass
()
{
try
{
constructorPropertiesClass
=
(
Class
<?
extends
Annotation
>)
Class
.
forName
(
"java.beans.ConstructorProperties"
,
false
,
DefaultMXBeanMappingFactory
.
class
.
getClassLoader
());
valueMethod
=
constructorPropertiesClass
.
getMethod
(
"value"
);
}
catch
(
ClassNotFoundException
cnf
)
{
// java.beans not present
}
catch
(
NoSuchMethodException
e
)
{
// should not reach here
throw
new
InternalError
(
e
);
}
}
static
boolean
isAvailable
()
{
return
constructorPropertiesClass
!=
null
;
}
static
String
[]
getPropertyNames
(
Constructor
<?>
constr
)
{
if
(!
isAvailable
())
return
null
;
Annotation
a
=
constr
.
getAnnotation
(
constructorPropertiesClass
);
if
(
a
==
null
)
return
null
;
try
{
return
(
String
[])
valueMethod
.
invoke
(
a
);
}
catch
(
InvocationTargetException
e
)
{
throw
new
InternalError
(
e
);
}
catch
(
IllegalAccessException
e
)
{
throw
new
InternalError
(
e
);
}
}
}
CompositeBuilderViaConstructor
(
Class
<?>
targetClass
,
String
[]
itemNames
)
{
CompositeBuilderViaConstructor
(
Class
<?>
targetClass
,
String
[]
itemNames
)
{
super
(
targetClass
,
itemNames
);
super
(
targetClass
,
itemNames
);
}
}
String
applicable
(
Method
[]
getters
)
throws
InvalidObjectException
{
String
applicable
(
Method
[]
getters
)
throws
InvalidObjectException
{
if
(!
AnnotationHelper
.
isAvailable
())
final
Class
<
ConstructorProperties
>
propertyNamesClass
=
ConstructorProperties
.
class
;
return
"@ConstructorProperties annotation not available"
;
Class
<?>
targetClass
=
getTargetClass
();
Class
<?>
targetClass
=
getTargetClass
();
Constructor
<?>[]
constrs
=
targetClass
.
getConstructors
();
Constructor
<?>[]
constrs
=
targetClass
.
getConstructors
();
...
@@ -1145,7 +1188,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory {
...
@@ -1145,7 +1188,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory {
List
<
Constructor
<?>>
annotatedConstrList
=
newList
();
List
<
Constructor
<?>>
annotatedConstrList
=
newList
();
for
(
Constructor
<?>
constr
:
constrs
)
{
for
(
Constructor
<?>
constr
:
constrs
)
{
if
(
Modifier
.
isPublic
(
constr
.
getModifiers
())
if
(
Modifier
.
isPublic
(
constr
.
getModifiers
())
&&
constr
.
getAnnotation
(
propertyNamesClass
)
!=
null
)
&&
AnnotationHelper
.
getPropertyNames
(
constr
)
!=
null
)
annotatedConstrList
.
add
(
constr
);
annotatedConstrList
.
add
(
constr
);
}
}
...
@@ -1174,8 +1217,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory {
...
@@ -1174,8 +1217,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory {
// so we can test unambiguity.
// so we can test unambiguity.
Set
<
BitSet
>
getterIndexSets
=
newSet
();
Set
<
BitSet
>
getterIndexSets
=
newSet
();
for
(
Constructor
<?>
constr
:
annotatedConstrList
)
{
for
(
Constructor
<?>
constr
:
annotatedConstrList
)
{
String
[]
propertyNames
=
String
[]
propertyNames
=
AnnotationHelper
.
getPropertyNames
(
constr
);
constr
.
getAnnotation
(
propertyNamesClass
).
value
();
Type
[]
paramTypes
=
constr
.
getGenericParameterTypes
();
Type
[]
paramTypes
=
constr
.
getGenericParameterTypes
();
if
(
paramTypes
.
length
!=
propertyNames
.
length
)
{
if
(
paramTypes
.
length
!=
propertyNames
.
length
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录