Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
152f3ab7
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看板
提交
152f3ab7
编写于
7月 31, 2008
作者:
D
dfuchs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6689505: Improve MBeanServerNotification.toString
Reviewed-by: emcmanus
上级
8b5d3f94
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
185 addition
and
45 deletion
+185
-45
src/share/classes/javax/management/MBeanServerNotification.java
...are/classes/javax/management/MBeanServerNotification.java
+53
-45
test/javax/management/MBeanServer/MBeanServerNotificationTest.java
...x/management/MBeanServer/MBeanServerNotificationTest.java
+132
-0
未找到文件。
src/share/classes/javax/management/MBeanServerNotification.java
浏览文件 @
152f3ab7
...
...
@@ -38,56 +38,64 @@ package javax.management;
*
* @since 1.5
*/
public
class
MBeanServerNotification
extends
Notification
{
public
class
MBeanServerNotification
extends
Notification
{
/* Serial version */
private
static
final
long
serialVersionUID
=
2876477500475969677L
;
/* Serial version */
private
static
final
long
serialVersionUID
=
2876477500475969677L
;
/**
* Notification type denoting that an MBean has been registered.
* Value is "JMX.mbean.registered".
*/
public
static
final
String
REGISTRATION_NOTIFICATION
=
"JMX.mbean.registered"
;
/**
* Notification type denoting that an MBean has been unregistered.
* Value is "JMX.mbean.unregistered".
*/
public
static
final
String
UNREGISTRATION_NOTIFICATION
=
"JMX.mbean.unregistered"
;
/**
* @serial The object names of the MBeans concerned by this notification
*/
private
final
ObjectName
objectName
;
/**
* Notification type denoting that an MBean has been registered. Value is "JMX.mbean.registered".
*/
public
static
final
String
REGISTRATION_NOTIFICATION
=
"JMX.mbean.registered"
;
/**
* Creates an MBeanServerNotification object specifying object names of
* the MBeans that caused the notification and the specified notification
* type.
*
* @param type A string denoting the type of the
* notification. Set it to one these values: {@link
* #REGISTRATION_NOTIFICATION}, {@link
* #UNREGISTRATION_NOTIFICATION}.
* @param source The MBeanServerNotification object responsible
* for forwarding MBean server notification.
* @param sequenceNumber A sequence number that can be used to order
* received notifications.
* @param objectName The object name of the MBean that caused the
* notification.
*
*/
public
MBeanServerNotification
(
String
type
,
Object
source
,
long
sequenceNumber
,
ObjectName
objectName
)
{
super
(
type
,
source
,
sequenceNumber
);
this
.
objectName
=
objectName
;
}
/**
* Notification type denoting that an MBean has been unregistered. Value is "JMX.mbean.unregistered".
*/
public
static
final
String
UNREGISTRATION_NOTIFICATION
=
"JMX.mbean.unregistered"
;
/**
* Returns the object name of the MBean that caused the notification.
*
* @return the object name of the MBean that caused the notification.
*/
public
ObjectName
getMBeanName
()
{
return
objectName
;
}
@Override
public
String
toString
()
{
return
super
.
toString
()
+
"[mbeanName="
+
objectName
+
"]"
;
/**
* @serial The object names of the MBeans concerned by this notification
*/
private
final
ObjectName
objectName
;
/**
* Creates an MBeanServerNotification object specifying object names of
* the MBeans that caused the notification and the specified notification type.
*
* @param type A string denoting the type of the
* notification. Set it to one these values: {@link
* #REGISTRATION_NOTIFICATION}, {@link
* #UNREGISTRATION_NOTIFICATION}.
* @param source The MBeanServerNotification object responsible
* for forwarding MBean server notification.
* @param sequenceNumber A sequence number that can be used to order
* received notifications.
* @param objectName The object name of the MBean that caused the notification.
*
*/
public
MBeanServerNotification
(
String
type
,
Object
source
,
long
sequenceNumber
,
ObjectName
objectName
)
{
super
(
type
,
source
,
sequenceNumber
)
;
this
.
objectName
=
objectName
;
}
/**
* Returns the object name of the MBean that caused the notification.
*
* @return the object name of the MBean that caused the notification.
*/
public
ObjectName
getMBeanName
()
{
return
objectName
;
}
}
}
test/javax/management/MBeanServer/MBeanServerNotificationTest.java
0 → 100644
浏览文件 @
152f3ab7
/*
* Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/*
* @test
* @bug 6689505
* @summary Checks that MBeanServerNotification.toString contains the
* MBean name.
* @author Daniel Fuchs
* @compile MBeanServerNotificationTest.java
* @run main MBeanServerNotificationTest
*/
import
com.sun.jmx.mbeanserver.Util
;
import
javax.management.*
;
import
java.util.concurrent.*
;
public
class
MBeanServerNotificationTest
{
final
static
String
[]
names
=
{
":type=Wombat"
,
"wombat:type=Wombat"
,
null
,
};
public
static
void
main
(
String
[]
args
)
throws
Exception
{
System
.
out
.
println
(
"Test that MBeanServerNotification.toString "
+
"contains the name of the MBean being registered "
+
"or unregistered."
);
int
failures
=
0
;
final
MBeanServer
mbs
=
MBeanServerFactory
.
createMBeanServer
();
for
(
String
str:
names
)
{
try
{
final
ObjectName
name
=
(
str
==
null
)?
null
:
new
ObjectName
(
str
);
failures
+=
test
(
mbs
,
name
,
name
!=
null
);
}
catch
(
Exception
x
)
{
x
.
printStackTrace
(
System
.
out
);
System
.
out
.
println
(
"Test failed for: "
+
str
);
failures
++;
}
}
if
(
failures
==
0
)
System
.
out
.
println
(
"Test passed"
);
else
{
System
.
out
.
println
(
"TEST FAILED: "
+
failures
+
" failure(s)"
);
System
.
exit
(
1
);
}
}
private
static
enum
Registration
{
REGISTER
(
MBeanServerNotification
.
REGISTRATION_NOTIFICATION
),
UNREGISTER
(
MBeanServerNotification
.
UNREGISTRATION_NOTIFICATION
);
final
String
type
;
private
Registration
(
String
type
)
{
this
.
type
=
type
;}
public
int
test
(
MBeanServerNotification
n
,
ObjectName
name
)
{
int
failures
=
0
;
System
.
out
.
println
(
"Testing: "
+
n
);
if
(!
n
.
toString
().
endsWith
(
"[type="
+
type
+
"][message="
+
n
.
getMessage
()+
"][mbeanName="
+
name
+
"]"
))
{
System
.
err
.
println
(
"Test failed for "
+
type
+
" ["
+
name
+
"]: "
+
n
);
failures
++;
}
return
failures
;
}
public
MBeanServerNotification
create
(
ObjectName
name
)
{
return
new
MBeanServerNotification
(
type
,
MBeanServerDelegate
.
DELEGATE_NAME
,
next
(),
name
);
}
private
static
long
next
=
0
;
private
static
synchronized
long
next
()
{
return
next
++;}
}
private
static
int
test
(
MBeanServer
mbs
,
ObjectName
name
,
boolean
register
)
throws
Exception
{
System
.
out
.
println
(
"--------"
+
name
+
"--------"
);
int
failures
=
0
;
for
(
Registration
reg
:
Registration
.
values
())
{
failures
=
reg
.
test
(
reg
.
create
(
name
),
name
);
}
if
(!
register
)
return
failures
;
final
ArrayBlockingQueue
<
Notification
>
queue
=
new
ArrayBlockingQueue
<
Notification
>(
10
);
final
NotificationListener
listener
=
new
NotificationListener
()
{
public
void
handleNotification
(
Notification
notification
,
Object
handback
)
{
try
{
queue
.
put
(
notification
);
}
catch
(
Exception
x
)
{
x
.
printStackTrace
(
System
.
out
);
}
}
};
mbs
.
addNotificationListener
(
MBeanServerDelegate
.
DELEGATE_NAME
,
listener
,
null
,
name
);
final
ObjectInstance
oi
=
mbs
.
registerMBean
(
new
Wombat
(),
name
);
try
{
failures
+=
Registration
.
REGISTER
.
test
((
MBeanServerNotification
)
queue
.
poll
(
2
,
TimeUnit
.
SECONDS
),
oi
.
getObjectName
());
}
finally
{
mbs
.
unregisterMBean
(
oi
.
getObjectName
());
failures
+=
Registration
.
UNREGISTER
.
test
((
MBeanServerNotification
)
queue
.
poll
(
2
,
TimeUnit
.
SECONDS
),
oi
.
getObjectName
());
}
return
failures
;
}
public
static
interface
WombatMBean
{}
public
static
class
Wombat
implements
WombatMBean
{}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录