Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
1014d6fb
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看板
提交
1014d6fb
编写于
12月 13, 2010
作者:
N
naoto
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7002320: Locale.forLanguageTag()/toLanguageTag() not working properly with ja_JP_JP locale
Reviewed-by: dougfelt
上级
a5e5d666
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
53 addition
and
1 deletion
+53
-1
src/share/classes/java/util/Locale.java
src/share/classes/java/util/Locale.java
+10
-1
test/java/util/Locale/LocaleEnhanceTest.java
test/java/util/Locale/LocaleEnhanceTest.java
+43
-0
未找到文件。
src/share/classes/java/util/Locale.java
浏览文件 @
1014d6fb
...
...
@@ -1426,7 +1426,12 @@ public final class Locale implements Cloneable, Serializable {
LanguageTag
tag
=
LanguageTag
.
parse
(
languageTag
,
null
);
InternalLocaleBuilder
bldr
=
new
InternalLocaleBuilder
();
bldr
.
setLanguageTag
(
tag
);
return
getInstance
(
bldr
.
getBaseLocale
(),
bldr
.
getLocaleExtensions
());
BaseLocale
base
=
bldr
.
getBaseLocale
();
LocaleExtensions
exts
=
bldr
.
getLocaleExtensions
();
if
(
exts
.
isEmpty
()
&&
base
.
getVariant
().
length
()
>
0
)
{
exts
=
getCompatibilityExtensions
(
base
.
getLanguage
(),
base
.
getScript
(),
base
.
getRegion
(),
base
.
getVariant
());
}
return
getInstance
(
base
,
exts
);
}
/**
...
...
@@ -2485,6 +2490,10 @@ public final class Locale implements Cloneable, Serializable {
public
Locale
build
()
{
BaseLocale
baseloc
=
_locbld
.
getBaseLocale
();
LocaleExtensions
extensions
=
_locbld
.
getLocaleExtensions
();
if
(
extensions
.
isEmpty
()
&&
baseloc
.
getVariant
().
length
()
>
0
)
{
extensions
=
getCompatibilityExtensions
(
baseloc
.
getLanguage
(),
baseloc
.
getScript
(),
baseloc
.
getRegion
(),
baseloc
.
getVariant
());
}
return
Locale
.
getInstance
(
baseloc
,
extensions
);
}
}
...
...
test/java/util/Locale/LocaleEnhanceTest.java
浏览文件 @
1014d6fb
...
...
@@ -1201,6 +1201,49 @@ public class LocaleEnhanceTest extends LocaleTestFmwk {
}
}
public
void
testBug7002320
()
{
// forLanguageTag() and Builder.setLanguageTag(String)
// should add a location extension for following two cases.
//
// 1. language/country are "ja"/"JP" and the resolved variant (x-lvariant-*)
// is exactly "JP" and no BCP 47 extensions are available, then add
// a Unicode locale extension "ca-japanese".
// 2. language/country are "th"/"TH" and the resolved variant is exactly
// "TH" and no BCP 47 extensions are available, then add a Unicode locale
// extension "nu-thai".
//
String
[][]
testdata
=
{
{
"ja-JP-x-lvariant-JP"
,
"ja-JP-u-ca-japanese-x-lvariant-JP"
},
// special case 1
{
"ja-JP-x-lvariant-JP-XXX"
},
{
"ja-JP-u-ca-japanese-x-lvariant-JP"
},
{
"ja-JP-u-ca-gregory-x-lvariant-JP"
},
{
"ja-JP-u-cu-jpy-x-lvariant-JP"
},
{
"ja-x-lvariant-JP"
},
{
"th-TH-x-lvariant-TH"
,
"th-TH-u-nu-thai-x-lvariant-TH"
},
// special case 2
{
"th-TH-u-nu-thai-x-lvariant-TH"
},
{
"en-US-x-lvariant-JP"
},
};
Builder
bldr
=
new
Builder
();
for
(
String
[]
data
:
testdata
)
{
String
in
=
data
[
0
];
String
expected
=
(
data
.
length
==
1
)
?
data
[
0
]
:
data
[
1
];
// forLanguageTag
Locale
loc
=
Locale
.
forLanguageTag
(
in
);
String
out
=
loc
.
toLanguageTag
();
assertEquals
(
"Language tag roundtrip by forLanguageTag with input: "
+
in
,
expected
,
out
);
// setLanguageTag
bldr
.
clear
();
bldr
.
setLanguageTag
(
in
);
loc
=
bldr
.
build
();
out
=
loc
.
toLanguageTag
();
assertEquals
(
"Language tag roundtrip by Builder.setLanguageTag with input: "
+
in
,
expected
,
out
);
}
}
///
/// utility asserts
///
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录