Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
413ce773
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看板
提交
413ce773
编写于
8月 23, 2013
作者:
D
dfuchs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8005899: Logger.getLogger(name, null) should not allow to reset a non-null resource bundle
Reviewed-by: mchung, lancea
上级
ad23f9b3
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
159 addition
and
7 deletion
+159
-7
src/share/classes/java/util/logging/Logger.java
src/share/classes/java/util/logging/Logger.java
+9
-7
test/java/util/logging/Logger/getLogger/TestLogger.java
test/java/util/logging/Logger/getLogger/TestLogger.java
+98
-0
test/java/util/logging/Logger/getLogger/testlogger/MyResource.java
.../util/logging/Logger/getLogger/testlogger/MyResource.java
+52
-0
未找到文件。
src/share/classes/java/util/logging/Logger.java
浏览文件 @
413ce773
...
@@ -457,13 +457,15 @@ public class Logger {
...
@@ -457,13 +457,15 @@ public class Logger {
* of the subsystem, such as java.net
* of the subsystem, such as java.net
* or javax.swing
* or javax.swing
* @param resourceBundleName name of ResourceBundle to be used for localizing
* @param resourceBundleName name of ResourceBundle to be used for localizing
* messages for this logger. May be
<CODE>null</CODE> if none of
* messages for this logger. May be
{@code null}
* the messages require localization.
*
if none of
the messages require localization.
* @return a suitable Logger
* @return a suitable Logger
* @throws MissingResourceException if the resourceBundleName is non-null and
* @throws MissingResourceException if the resourceBundleName is non-null and
* no corresponding resource can be found.
* no corresponding resource can be found.
* @throws IllegalArgumentException if the Logger already exists and uses
* @throws IllegalArgumentException if the Logger already exists and uses
* a different resource bundle name.
* a different resource bundle name; or if
* {@code resourceBundleName} is {@code null} but the named
* logger has a resource bundle set.
* @throws NullPointerException if the name is null.
* @throws NullPointerException if the name is null.
*/
*/
...
@@ -1731,10 +1733,6 @@ public class Logger {
...
@@ -1731,10 +1733,6 @@ public class Logger {
// Synchronized to prevent races in setting the fields.
// Synchronized to prevent races in setting the fields.
private
synchronized
void
setupResourceInfo
(
String
name
,
private
synchronized
void
setupResourceInfo
(
String
name
,
Class
<?>
callersClass
)
{
Class
<?>
callersClass
)
{
if
(
name
==
null
)
{
return
;
}
if
(
resourceBundleName
!=
null
)
{
if
(
resourceBundleName
!=
null
)
{
// this Logger already has a ResourceBundle
// this Logger already has a ResourceBundle
...
@@ -1748,6 +1746,10 @@ public class Logger {
...
@@ -1748,6 +1746,10 @@ public class Logger {
resourceBundleName
+
" != "
+
name
);
resourceBundleName
+
" != "
+
name
);
}
}
if
(
name
==
null
)
{
return
;
}
setCallersClassLoaderRef
(
callersClass
);
setCallersClassLoaderRef
(
callersClass
);
if
(
findResourceBundle
(
name
,
true
)
==
null
)
{
if
(
findResourceBundle
(
name
,
true
)
==
null
)
{
// We've failed to find an expected ResourceBundle.
// We've failed to find an expected ResourceBundle.
...
...
test/java/util/logging/Logger/getLogger/TestLogger.java
0 → 100644
浏览文件 @
413ce773
/*
* Copyright (c) 2013, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.logging.Logger
;
/**
* @test
* @bug 8005899
* @build TestLogger testlogger.MyResource
* @run main/othervm TestLogger
* @run main/othervm -Dsecurity=on TestLogger
**/
public
class
TestLogger
{
public
static
final
String
RESOURCE_BUNDLE
=
"testlogger.MyResource"
;
public
static
final
String
ORG_LOGGER
=
"org"
;
public
static
final
String
FOO_LOGGER
=
ORG_LOGGER
+
".foo.Foo"
;
public
static
final
String
BAR_LOGGER
=
ORG_LOGGER
+
".bar.Bar"
;
public
static
final
String
GEE_LOGGER
=
ORG_LOGGER
+
".gee.Gee"
;
public
static
final
String
GEE_GEE_LOGGER
=
GEE_LOGGER
+
".Gee"
;
public
static
void
main
(
String
[]
args
)
{
final
String
security
=
System
.
getProperty
(
"security"
,
"off"
);
System
.
out
.
println
(
"Security is "
+
security
);
if
(
"on"
.
equals
(
security
))
{
System
.
setSecurityManager
(
new
SecurityManager
());
}
newLogger
(
FOO_LOGGER
,
RESOURCE_BUNDLE
);
newLogger
(
FOO_LOGGER
);
newLogger
(
BAR_LOGGER
);
newLogger
(
BAR_LOGGER
,
RESOURCE_BUNDLE
);
newLogger
(
GEE_LOGGER
,
null
);
newLogger
(
GEE_LOGGER
,
RESOURCE_BUNDLE
);
newLogger
(
ORG_LOGGER
);
newLogger
(
GEE_GEE_LOGGER
);
for
(
String
log
:
new
String
[]
{
FOO_LOGGER
,
BAR_LOGGER
,
GEE_LOGGER
})
{
if
(!
RESOURCE_BUNDLE
.
equals
(
Logger
.
getLogger
(
log
).
getResourceBundleName
()))
{
throw
new
RuntimeException
(
"Shouldn't allow to reset the resource bundle for "
+
log
);
}
try
{
Logger
logger
=
Logger
.
getLogger
(
log
,
null
);
if
(!
RESOURCE_BUNDLE
.
equals
(
logger
.
getResourceBundleName
()))
{
throw
new
RuntimeException
(
"Shouldn't allow to reset the resource bundle for "
+
log
);
}
throw
new
RuntimeException
(
"Expected IllegalArgumentException not thrown for "
+
log
);
}
catch
(
IllegalArgumentException
e
)
{
System
.
out
.
println
(
"Got expected exception for "
+
log
+
": "
+
e
);
}
}
for
(
String
log
:
new
String
[]
{
ORG_LOGGER
,
GEE_GEE_LOGGER
})
{
if
(
Logger
.
getLogger
(
log
).
getResourceBundleName
()
!=
null
)
{
throw
new
RuntimeException
(
"Resource bundle is not null for log: "
+
Logger
.
getLogger
(
log
).
getResourceBundleName
());
}
try
{
Logger
logger
=
Logger
.
getLogger
(
log
,
null
);
if
(
logger
.
getResourceBundleName
()
!=
null
)
{
throw
new
RuntimeException
(
"Resource bundle is not null for log: "
+
logger
.
getResourceBundleName
());
}
System
.
out
.
println
(
"Success calling Logger.getLogger(\""
+
log
+
"\", null)"
);
}
catch
(
IllegalArgumentException
e
)
{
throw
new
RuntimeException
(
"Unexpected exception for "
+
log
+
": "
+
e
,
e
);
}
}
}
private
static
List
<
Logger
>
strongRefs
=
new
ArrayList
<>();
private
static
void
newLogger
(
String
name
)
{
strongRefs
.
add
(
Logger
.
getLogger
(
name
));
}
private
static
void
newLogger
(
String
name
,
String
resourceBundleName
)
{
strongRefs
.
add
(
Logger
.
getLogger
(
name
,
resourceBundleName
));
}
}
test/java/util/logging/Logger/getLogger/testlogger/MyResource.java
0 → 100644
浏览文件 @
413ce773
/*
* Copyright (c) 2013, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package
testlogger
;
import
java.util.ArrayList
;
import
java.util.Enumeration
;
import
java.util.HashMap
;
import
java.util.Hashtable
;
import
java.util.Map
;
import
java.util.Properties
;
import
java.util.ResourceBundle
;
/**
* A dummy resource bundle for testing purposes.
* @author danielfuchs
*/
public
class
MyResource
extends
ResourceBundle
{
Map
<
String
,
Object
>
bundle
=
new
HashMap
<>();
@Override
protected
Object
handleGetObject
(
String
key
)
{
bundle
.
put
(
key
,
"Localized: "
+
key
);
return
bundle
.
get
(
key
);
}
@Override
public
Enumeration
<
String
>
getKeys
()
{
final
Hashtable
<
String
,
Object
>
h
=
new
Hashtable
<>(
bundle
);
return
h
.
keys
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录