Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
e3a9fce5
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看板
提交
e3a9fce5
编写于
10月 05, 2012
作者:
N
naoto
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7198834: HOST Adapter: one extra empty space in the end of the pattern string
Reviewed-by: okutsu
上级
a3bddba5
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
137 addition
and
80 deletion
+137
-80
src/share/classes/sun/util/locale/provider/JRELocaleProviderAdapter.java
...es/sun/util/locale/provider/JRELocaleProviderAdapter.java
+12
-12
src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
...e/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
+7
-12
test/java/util/Locale/LocaleProviders.java
test/java/util/Locale/LocaleProviders.java
+53
-15
test/java/util/Locale/LocaleProviders.sh
test/java/util/Locale/LocaleProviders.sh
+65
-41
未找到文件。
src/share/classes/sun/util/locale/provider/JRELocaleProviderAdapter.java
浏览文件 @
e3a9fce5
...
...
@@ -125,7 +125,7 @@ public class JRELocaleProviderAdapter extends LocaleProviderAdapter {
public
BreakIteratorProvider
getBreakIteratorProvider
()
{
if
(
breakIteratorProvider
==
null
)
{
BreakIteratorProvider
provider
=
new
BreakIteratorProviderImpl
(
getAdapterType
(),
getLangua
t
eTagSet
(
"FormatData"
));
getLangua
g
eTagSet
(
"FormatData"
));
synchronized
(
this
)
{
if
(
breakIteratorProvider
==
null
)
{
breakIteratorProvider
=
provider
;
...
...
@@ -139,7 +139,7 @@ public class JRELocaleProviderAdapter extends LocaleProviderAdapter {
public
CollatorProvider
getCollatorProvider
()
{
if
(
collatorProvider
==
null
)
{
CollatorProvider
provider
=
new
CollatorProviderImpl
(
getAdapterType
(),
getLangua
t
eTagSet
(
"CollationData"
));
getLangua
g
eTagSet
(
"CollationData"
));
synchronized
(
this
)
{
if
(
collatorProvider
==
null
)
{
collatorProvider
=
provider
;
...
...
@@ -153,7 +153,7 @@ public class JRELocaleProviderAdapter extends LocaleProviderAdapter {
public
DateFormatProvider
getDateFormatProvider
()
{
if
(
dateFormatProvider
==
null
)
{
DateFormatProvider
provider
=
new
DateFormatProviderImpl
(
getAdapterType
(),
getLangua
t
eTagSet
(
"FormatData"
));
getLangua
g
eTagSet
(
"FormatData"
));
synchronized
(
this
)
{
if
(
dateFormatProvider
==
null
)
{
dateFormatProvider
=
provider
;
...
...
@@ -167,7 +167,7 @@ public class JRELocaleProviderAdapter extends LocaleProviderAdapter {
public
DateFormatSymbolsProvider
getDateFormatSymbolsProvider
()
{
if
(
dateFormatSymbolsProvider
==
null
)
{
DateFormatSymbolsProvider
provider
=
new
DateFormatSymbolsProviderImpl
(
getAdapterType
(),
getLangua
t
eTagSet
(
"FormatData"
));
getLangua
g
eTagSet
(
"FormatData"
));
synchronized
(
this
)
{
if
(
dateFormatSymbolsProvider
==
null
)
{
dateFormatSymbolsProvider
=
provider
;
...
...
@@ -180,7 +180,7 @@ public class JRELocaleProviderAdapter extends LocaleProviderAdapter {
@Override
public
DecimalFormatSymbolsProvider
getDecimalFormatSymbolsProvider
()
{
if
(
decimalFormatSymbolsProvider
==
null
)
{
DecimalFormatSymbolsProvider
provider
=
new
DecimalFormatSymbolsProviderImpl
(
getAdapterType
(),
getLangua
t
eTagSet
(
"FormatData"
));
DecimalFormatSymbolsProvider
provider
=
new
DecimalFormatSymbolsProviderImpl
(
getAdapterType
(),
getLangua
g
eTagSet
(
"FormatData"
));
synchronized
(
this
)
{
if
(
decimalFormatSymbolsProvider
==
null
)
{
decimalFormatSymbolsProvider
=
provider
;
...
...
@@ -194,7 +194,7 @@ public class JRELocaleProviderAdapter extends LocaleProviderAdapter {
public
NumberFormatProvider
getNumberFormatProvider
()
{
if
(
numberFormatProvider
==
null
)
{
NumberFormatProvider
provider
=
new
NumberFormatProviderImpl
(
getAdapterType
(),
getLangua
t
eTagSet
(
"FormatData"
));
getLangua
g
eTagSet
(
"FormatData"
));
synchronized
(
this
)
{
if
(
numberFormatProvider
==
null
)
{
numberFormatProvider
=
provider
;
...
...
@@ -211,7 +211,7 @@ public class JRELocaleProviderAdapter extends LocaleProviderAdapter {
public
CurrencyNameProvider
getCurrencyNameProvider
()
{
if
(
currencyNameProvider
==
null
)
{
CurrencyNameProvider
provider
=
new
CurrencyNameProviderImpl
(
getAdapterType
(),
getLangua
t
eTagSet
(
"CurrencyNames"
));
getLangua
g
eTagSet
(
"CurrencyNames"
));
synchronized
(
this
)
{
if
(
currencyNameProvider
==
null
)
{
currencyNameProvider
=
provider
;
...
...
@@ -225,7 +225,7 @@ public class JRELocaleProviderAdapter extends LocaleProviderAdapter {
public
LocaleNameProvider
getLocaleNameProvider
()
{
if
(
localeNameProvider
==
null
)
{
LocaleNameProvider
provider
=
new
LocaleNameProviderImpl
(
getAdapterType
(),
getLangua
t
eTagSet
(
"LocaleNames"
));
getLangua
g
eTagSet
(
"LocaleNames"
));
synchronized
(
this
)
{
if
(
localeNameProvider
==
null
)
{
localeNameProvider
=
provider
;
...
...
@@ -239,7 +239,7 @@ public class JRELocaleProviderAdapter extends LocaleProviderAdapter {
public
TimeZoneNameProvider
getTimeZoneNameProvider
()
{
if
(
timeZoneNameProvider
==
null
)
{
TimeZoneNameProvider
provider
=
new
TimeZoneNameProviderImpl
(
getAdapterType
(),
getLangua
t
eTagSet
(
"TimeZoneNames"
));
getLangua
g
eTagSet
(
"TimeZoneNames"
));
synchronized
(
this
)
{
if
(
timeZoneNameProvider
==
null
)
{
timeZoneNameProvider
=
provider
;
...
...
@@ -253,8 +253,8 @@ public class JRELocaleProviderAdapter extends LocaleProviderAdapter {
public
CalendarDataProvider
getCalendarDataProvider
()
{
if
(
calendarDataProvider
==
null
)
{
Set
<
String
>
set
=
new
HashSet
<>();
set
.
addAll
(
getLangua
t
eTagSet
(
"FormatData"
));
set
.
addAll
(
getLangua
t
eTagSet
(
"CalendarData"
));
set
.
addAll
(
getLangua
g
eTagSet
(
"FormatData"
));
set
.
addAll
(
getLangua
g
eTagSet
(
"CalendarData"
));
CalendarDataProvider
provider
=
new
CalendarDataProviderImpl
(
getAdapterType
(),
set
);
synchronized
(
this
)
{
...
...
@@ -302,7 +302,7 @@ public class JRELocaleProviderAdapter extends LocaleProviderAdapter {
return
AvailableJRELocales
.
localeList
.
clone
();
}
public
Set
<
String
>
getLangua
t
eTagSet
(
String
category
)
{
public
Set
<
String
>
getLangua
g
eTagSet
(
String
category
)
{
Set
<
String
>
tagset
=
langtagSets
.
get
(
category
);
if
(
tagset
==
null
)
{
tagset
=
createLanguageTagSet
(
category
);
...
...
src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
浏览文件 @
e3a9fce5
...
...
@@ -209,31 +209,26 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
*/
JNIEXPORT
jstring
JNICALL
Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getDateTimePattern
(
JNIEnv
*
env
,
jclass
cls
,
jint
dateStyle
,
jint
timeStyle
,
jstring
jlangtag
)
{
WCHAR
datePattern
[
BUFLEN
];
WCHAR
timePattern
[
BUFLEN
];
WCHAR
pattern
[
BUFLEN
];
const
jchar
*
langtag
=
(
*
env
)
->
GetStringChars
(
env
,
jlangtag
,
JNI_FALSE
);
datePattern
[
0
]
=
L'\0'
;
timePattern
[
0
]
=
L'\0'
;
pattern
[
0
]
=
L'\0'
;
if
(
dateStyle
==
0
||
dateStyle
==
1
)
{
getLocaleInfoWrapper
(
langtag
,
LOCALE_SLONGDATE
,
dateP
attern
,
BUFLEN
);
getLocaleInfoWrapper
(
langtag
,
LOCALE_SLONGDATE
,
p
attern
,
BUFLEN
);
}
else
if
(
dateStyle
==
2
||
dateStyle
==
3
)
{
getLocaleInfoWrapper
(
langtag
,
LOCALE_SSHORTDATE
,
dateP
attern
,
BUFLEN
);
getLocaleInfoWrapper
(
langtag
,
LOCALE_SSHORTDATE
,
p
attern
,
BUFLEN
);
}
if
(
timeStyle
==
0
||
timeStyle
==
1
)
{
getLocaleInfoWrapper
(
langtag
,
LOCALE_STIMEFORMAT
,
timeP
attern
,
BUFLEN
);
getLocaleInfoWrapper
(
langtag
,
LOCALE_STIMEFORMAT
,
p
attern
,
BUFLEN
);
}
else
if
(
timeStyle
==
2
||
timeStyle
==
3
)
{
getLocaleInfoWrapper
(
langtag
,
LOCALE_SSHORTTIME
,
timeP
attern
,
BUFLEN
);
getLocaleInfoWrapper
(
langtag
,
LOCALE_SSHORTTIME
,
p
attern
,
BUFLEN
);
}
wcscat
(
datePattern
,
L" "
);
wcscat
(
datePattern
,
timePattern
);
(
*
env
)
->
ReleaseStringChars
(
env
,
jlangtag
,
langtag
);
return
(
*
env
)
->
NewString
(
env
,
datePattern
,
wcslen
(
dateP
attern
));
return
(
*
env
)
->
NewString
(
env
,
pattern
,
wcslen
(
p
attern
));
}
/*
...
...
test/java/util/Locale/LocaleProviders.java
浏览文件 @
e3a9fce5
...
...
@@ -20,20 +20,45 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.text.spi.DateFormatProvider
;
import
java.util.Locale
;
import
java.text.*
;
import
java.text.spi.*
;
import
java.util.*
;
import
sun.util.locale.provider.LocaleProviderAdapter
;
public
class
LocaleProviders
{
public
static
void
main
(
String
[]
args
)
{
if
(
args
.
length
==
0
)
{
// no args indicates that the caller is asking the platform default locale.
Locale
defloc
=
Locale
.
getDefault
();
System
.
out
.
printf
(
"%s,%s\n"
,
defloc
.
getLanguage
(),
defloc
.
getCountry
());
String
methodName
=
args
[
0
];
switch
(
methodName
)
{
case
"getPlatformLocale"
:
if
(
args
[
1
].
equals
(
"format"
))
{
getPlatformLocale
(
Locale
.
Category
.
FORMAT
);
}
else
{
String
expected
=
args
[
0
];
Locale
testLocale
=
new
Locale
(
args
[
1
],
(
args
.
length
>=
3
?
args
[
2
]
:
""
));
getPlatformLocale
(
Locale
.
Category
.
DISPLAY
);
}
break
;
case
"adapterTest"
:
adapterTest
(
args
[
1
],
args
[
2
],
(
args
.
length
>=
4
?
args
[
3
]
:
""
));
break
;
case
"bug7198834Test"
:
bug7198834Test
();
break
;
default
:
throw
new
RuntimeException
(
"Test method '"
+
methodName
+
"' not found."
);
}
}
static
void
getPlatformLocale
(
Locale
.
Category
cat
)
{
Locale
defloc
=
Locale
.
getDefault
(
cat
);
System
.
out
.
printf
(
"%s,%s\n"
,
defloc
.
getLanguage
(),
defloc
.
getCountry
());
}
static
void
adapterTest
(
String
expected
,
String
lang
,
String
ctry
)
{
Locale
testLocale
=
new
Locale
(
lang
,
ctry
);
String
preference
=
System
.
getProperty
(
"java.locale.providers"
,
""
);
LocaleProviderAdapter
lda
=
LocaleProviderAdapter
.
getAdapter
(
DateFormatProvider
.
class
,
testLocale
);
LocaleProviderAdapter
.
Type
type
=
lda
.
getAdapterType
();
...
...
@@ -42,5 +67,18 @@ public class LocaleProviders {
throw
new
RuntimeException
(
"Returned locale data adapter is not correct."
);
}
}
static
void
bug7198834Test
()
{
LocaleProviderAdapter
lda
=
LocaleProviderAdapter
.
getAdapter
(
DateFormatProvider
.
class
,
Locale
.
US
);
LocaleProviderAdapter
.
Type
type
=
lda
.
getAdapterType
();
if
(
type
==
LocaleProviderAdapter
.
Type
.
HOST
&&
System
.
getProperty
(
"os.name"
).
startsWith
(
"Windows"
))
{
DateFormat
df
=
DateFormat
.
getDateInstance
(
DateFormat
.
FULL
,
Locale
.
US
);
String
date
=
df
.
format
(
new
Date
());
if
(
date
.
charAt
(
date
.
length
()-
1
)
==
' '
)
{
throw
new
RuntimeException
(
"Windows Host Locale Provider returns a trailing space."
);
}
}
else
{
System
.
out
.
println
(
"Windows HOST locale adapter not found. Ignoring this test."
);
}
}
}
test/java/util/Locale/LocaleProviders.sh
浏览文件 @
e3a9fce5
...
...
@@ -23,7 +23,7 @@
#!/bin/sh
#
# @test
# @bug 6336885 7196799 7197573
# @bug 6336885 7196799 7197573
7198834
# @summary tests for "java.locale.providers" system property
# @compile -XDignore.symbol.file LocaleProviders.java
# @run shell/timeout=600 LocaleProviders.sh
...
...
@@ -65,16 +65,21 @@ case "$OS" in
;;
esac
# get the platform default locale
PLATDEF
=
`
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
-classpath
${
TESTCLASSES
}
LocaleProviders
`
# get the platform default locale
s
PLATDEF
=
`
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
-classpath
${
TESTCLASSES
}
LocaleProviders
getPlatformLocale display
`
DEFLANG
=
`
echo
${
PLATDEF
}
|
sed
-e
"s/,.*//"
`
DEFCTRY
=
`
echo
${
PLATDEF
}
|
sed
-e
"s/.*,//"
`
echo
"DEFLANG=
${
DEFLANG
}
"
echo
"DEFCTRY=
${
DEFCTRY
}
"
PLATDEF
=
`
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
-classpath
${
TESTCLASSES
}
LocaleProviders getPlatformLocale format
`
DEFFMTLANG
=
`
echo
${
PLATDEF
}
|
sed
-e
"s/,.*//"
`
DEFFMTCTRY
=
`
echo
${
PLATDEF
}
|
sed
-e
"s/.*,//"
`
echo
"DEFFMTLANG=
${
DEFFMTLANG
}
"
echo
"DEFFMTCTRY=
${
DEFFMTCTRY
}
"
runTest
()
{
RUNCMD
=
"
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java -classpath
${
TESTCLASSES
}
-Djava.locale.providers=
$PREFLIST
LocaleProviders
$
EXPECTED
$TESTLANG
$TESTCTRY
"
RUNCMD
=
"
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java -classpath
${
TESTCLASSES
}
-Djava.locale.providers=
$PREFLIST
LocaleProviders
$
METHODNAME
$PARAM1
$PARAM2
$PARAM3
"
echo
${
RUNCMD
}
${
RUNCMD
}
result
=
$?
...
...
@@ -88,91 +93,110 @@ runTest()
}
# testing HOST is selected for the default locale, if specified on Windows or MacOSX
METHODNAME
=
adapterTest
PREFLIST
=
HOST,JRE
case
"
$OS
"
in
Windows_NT
*
)
WINVER
=
`
uname
-r
`
if
[
"
${
WINVER
}
"
=
"5"
]
then
EXPECTED
=
JRE
PARAM1
=
JRE
else
EXPECTED
=
HOST
PARAM1
=
HOST
fi
;;
CYGWIN_NT-6
*
|
Darwin
)
EXPECTED
=
HOST
PARAM1
=
HOST
;;
*
)
EXPECTED
=
JRE
PARAM1
=
JRE
;;
esac
TESTLANG
=
${
DEFLANG
}
TESTCTRY
=
${
DEFCTRY
}
PARAM2
=
${
DEFLANG
}
PARAM3
=
${
DEFCTRY
}
runTest
# testing HOST is NOT selected for the non-default locale, if specified
METHODNAME
=
adapterTest
PREFLIST
=
HOST,JRE
EXPECTED
=
JRE
if
[
"
${
DEFLANG
}
"
=
"en"
]
then
TESTLANG
=
ja
TESTCTRY
=
JP
PARAM1
=
JRE
# Try to find the locale JRE supports which is not the platform default (HOST supports that one)
if
[
"
${
DEFLANG
}
"
!=
"en"
]
&&
[
"
${
DEFFMTLANG
}
"
!=
"en"
]
;
then
PARAM2
=
en
PARAM3
=
US
elif
[
"
${
DEFLANG
}
"
!=
"ja"
]
&&
[
"
${
DEFFMTLANG
}
"
!=
"ja"
]
;
then
PARAM2
=
ja
PARAM3
=
JP
else
TESTLANG
=
en
TESTCTRY
=
US
PARAM2
=
zh
PARAM3
=
CN
fi
runTest
# testing SPI is NOT selected, as there is none.
METHODNAME
=
adapterTest
PREFLIST
=
SPI,JRE
EXPECTED
=
JRE
TESTLANG
=
en
TESTCTRY
=
US
PARAM1
=
JRE
PARAM2
=
en
PARAM3
=
US
runTest
# testing the order, variaton #1. This assumes en_GB DateFormat data are available both in JRE & CLDR
METHODNAME
=
adapterTest
PREFLIST
=
CLDR,JRE
EXPECTED
=
CLDR
TESTLANG
=
en
TESTCTRY
=
GB
PARAM1
=
CLDR
PARAM2
=
en
PARAM3
=
GB
runTest
# testing the order, variaton #2. This assumes en_GB DateFormat data are available both in JRE & CLDR
METHODNAME
=
adapterTest
PREFLIST
=
JRE,CLDR
EXPECTED
=
JRE
TESTLANG
=
en
TESTCTRY
=
GB
PARAM1
=
JRE
PARAM2
=
en
PARAM3
=
GB
runTest
# testing the order, variaton #3 for non-existent locale in JRE assuming "haw" is not in JRE.
METHODNAME
=
adapterTest
PREFLIST
=
JRE,CLDR
EXPECTED
=
CLDR
TESTLANG
=
haw
TESTCTRY
=
GB
PARAM1
=
CLDR
PARAM2
=
haw
PARAM3
=
GB
runTest
# testing the order, variaton #4 for the bug 7196799. CLDR's "zh" data should be used in "zh_CN"
METHODNAME
=
adapterTest
PREFLIST
=
CLDR
EXPECTED
=
CLDR
TESTLANG
=
zh
TESTCTRY
=
CN
PARAM1
=
CLDR
PARAM2
=
zh
PARAM3
=
CN
runTest
# testing FALLBACK provider. SPI and invalid one cases.
METHODNAME
=
adapterTest
PREFLIST
=
SPI
EXPECTED
=
FALLBACK
TESTLANG
=
en
TESTCTRY
=
US
PARAM1
=
FALLBACK
PARAM2
=
en
PARAM3
=
US
runTest
PREFLIST
=
FOO
EXPECTED
=
JRE
TESTLANG
=
en
TESTCTRY
=
US
PARAM1
=
JRE
PARAM2
=
en
PARAM3
=
US
runTest
PREFLIST
=
BAR,SPI
EXPECTED
=
FALLBACK
TESTLANG
=
en
TESTCTRY
=
US
PARAM1
=
FALLBACK
PARAM2
=
en
PARAM3
=
US
runTest
# testing 7198834 fix. Only works on Windows Vista or upper.
METHODNAME
=
bug7198834Test
PREFLIST
=
HOST
PARAM1
=
PARAM2
=
PARAM3
=
runTest
exit
$result
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录