Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
a5e5d666
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看板
提交
a5e5d666
编写于
12月 10, 2010
作者:
L
lana
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
82a3749e
8e7a982b
变更
119
展开全部
隐藏空白更改
内联
并排
Showing
119 changed file
with
3726 addition
and
821 deletion
+3726
-821
.hgtags
.hgtags
+3
-0
make/common/Defs.gmk
make/common/Defs.gmk
+13
-8
make/sun/nio/cs/FILES_java.gmk
make/sun/nio/cs/FILES_java.gmk
+3
-0
make/sun/xawt/mapfile-vers
make/sun/xawt/mapfile-vers
+1
-0
make/tools/CharsetMapping/IBM833.c2b
make/tools/CharsetMapping/IBM833.c2b
+94
-0
make/tools/CharsetMapping/IBM833.map
make/tools/CharsetMapping/IBM833.map
+217
-0
make/tools/CharsetMapping/extsbcs
make/tools/CharsetMapping/extsbcs
+1
-0
src/share/bin/java.c
src/share/bin/java.c
+47
-5
src/share/classes/com/sun/java/util/jar/pack/AdaptiveCoding.java
...re/classes/com/sun/java/util/jar/pack/AdaptiveCoding.java
+4
-2
src/share/classes/com/sun/java/util/jar/pack/Attribute.java
src/share/classes/com/sun/java/util/jar/pack/Attribute.java
+11
-3
src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
...are/classes/com/sun/java/util/jar/pack/BandStructure.java
+23
-7
src/share/classes/com/sun/java/util/jar/pack/ClassReader.java
...share/classes/com/sun/java/util/jar/pack/ClassReader.java
+11
-3
src/share/classes/com/sun/java/util/jar/pack/ClassWriter.java
...share/classes/com/sun/java/util/jar/pack/ClassWriter.java
+11
-3
src/share/classes/com/sun/java/util/jar/pack/Code.java
src/share/classes/com/sun/java/util/jar/pack/Code.java
+2
-2
src/share/classes/com/sun/java/util/jar/pack/Coding.java
src/share/classes/com/sun/java/util/jar/pack/Coding.java
+4
-2
src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java
...are/classes/com/sun/java/util/jar/pack/CodingChooser.java
+11
-3
src/share/classes/com/sun/java/util/jar/pack/CodingMethod.java
...hare/classes/com/sun/java/util/jar/pack/CodingMethod.java
+3
-1
src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java
...hare/classes/com/sun/java/util/jar/pack/ConstantPool.java
+8
-1
src/share/classes/com/sun/java/util/jar/pack/Constants.java
src/share/classes/com/sun/java/util/jar/pack/Constants.java
+2
-1
src/share/classes/com/sun/java/util/jar/pack/Driver.java
src/share/classes/com/sun/java/util/jar/pack/Driver.java
+25
-4
src/share/classes/com/sun/java/util/jar/pack/Fixups.java
src/share/classes/com/sun/java/util/jar/pack/Fixups.java
+5
-3
src/share/classes/com/sun/java/util/jar/pack/Histogram.java
src/share/classes/com/sun/java/util/jar/pack/Histogram.java
+4
-2
src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java
...hare/classes/com/sun/java/util/jar/pack/NativeUnpack.java
+12
-4
src/share/classes/com/sun/java/util/jar/pack/Package.java
src/share/classes/com/sun/java/util/jar/pack/Package.java
+25
-4
src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
...are/classes/com/sun/java/util/jar/pack/PackageReader.java
+7
-1
src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
...are/classes/com/sun/java/util/jar/pack/PackageWriter.java
+21
-3
src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java
src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java
+20
-3
src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java
.../classes/com/sun/java/util/jar/pack/PopulationCoding.java
+6
-2
src/share/classes/com/sun/java/util/jar/pack/PropMap.java
src/share/classes/com/sun/java/util/jar/pack/PropMap.java
+16
-5
src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
...hare/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
+18
-4
src/share/classes/com/sun/java/util/jar/pack/Utils.java
src/share/classes/com/sun/java/util/jar/pack/Utils.java
+15
-6
src/share/classes/com/sun/net/httpserver/HttpsConfigurator.java
...are/classes/com/sun/net/httpserver/HttpsConfigurator.java
+2
-0
src/share/classes/com/sun/net/httpserver/HttpsParameters.java
...share/classes/com/sun/net/httpserver/HttpsParameters.java
+4
-0
src/share/classes/com/sun/rowset/RowSetResourceBundle.properties
...re/classes/com/sun/rowset/RowSetResourceBundle.properties
+4
-4
src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java
...sses/com/sun/rowset/internal/XmlReaderContentHandler.java
+1
-1
src/share/classes/java/awt/Color.java
src/share/classes/java/awt/Color.java
+16
-7
src/share/classes/java/awt/Container.java
src/share/classes/java/awt/Container.java
+8
-0
src/share/classes/java/awt/Dialog.java
src/share/classes/java/awt/Dialog.java
+74
-6
src/share/classes/java/awt/FileDialog.java
src/share/classes/java/awt/FileDialog.java
+1
-1
src/share/classes/java/awt/Frame.java
src/share/classes/java/awt/Frame.java
+86
-9
src/share/classes/java/awt/Window.java
src/share/classes/java/awt/Window.java
+73
-43
src/share/classes/java/io/BufferedInputStream.java
src/share/classes/java/io/BufferedInputStream.java
+5
-1
src/share/classes/java/io/PushbackInputStream.java
src/share/classes/java/io/PushbackInputStream.java
+5
-1
src/share/classes/java/lang/Readable.java
src/share/classes/java/lang/Readable.java
+2
-2
src/share/classes/java/nio/StringCharBuffer.java
src/share/classes/java/nio/StringCharBuffer.java
+1
-1
src/share/classes/java/nio/channels/AsynchronousSocketChannel.java
.../classes/java/nio/channels/AsynchronousSocketChannel.java
+8
-13
src/share/classes/java/sql/SQLPermission.java
src/share/classes/java/sql/SQLPermission.java
+1
-1
src/share/classes/java/util/Formatter.java
src/share/classes/java/util/Formatter.java
+1
-0
src/share/classes/javax/security/auth/Policy.java
src/share/classes/javax/security/auth/Policy.java
+49
-0
src/share/classes/javax/security/auth/SubjectDomainCombiner.java
...re/classes/javax/security/auth/SubjectDomainCombiner.java
+6
-33
src/share/classes/sun/awt/AWTAccessor.java
src/share/classes/sun/awt/AWTAccessor.java
+36
-38
src/share/classes/sun/io/ByteToCharCp833.java
src/share/classes/sun/io/ByteToCharCp833.java
+42
-0
src/share/classes/sun/io/CharToByteCp833.java
src/share/classes/sun/io/CharToByteCp833.java
+46
-0
src/share/classes/sun/io/CharacterEncoding.java
src/share/classes/sun/io/CharacterEncoding.java
+6
-1
src/share/classes/sun/launcher/LauncherHelper.java
src/share/classes/sun/launcher/LauncherHelper.java
+197
-0
src/share/classes/sun/launcher/resources/launcher.properties
src/share/classes/sun/launcher/resources/launcher.properties
+10
-2
src/share/classes/sun/net/httpserver/ChunkedInputStream.java
src/share/classes/sun/net/httpserver/ChunkedInputStream.java
+1
-0
src/share/classes/sun/net/httpserver/Event.java
src/share/classes/sun/net/httpserver/Event.java
+2
-0
src/share/classes/sun/net/httpserver/ExchangeImpl.java
src/share/classes/sun/net/httpserver/ExchangeImpl.java
+1
-0
src/share/classes/sun/net/httpserver/FixedLengthInputStream.java
...re/classes/sun/net/httpserver/FixedLengthInputStream.java
+3
-0
src/share/classes/sun/net/httpserver/HttpConnection.java
src/share/classes/sun/net/httpserver/HttpConnection.java
+13
-0
src/share/classes/sun/net/httpserver/Request.java
src/share/classes/sun/net/httpserver/Request.java
+27
-81
src/share/classes/sun/net/httpserver/SSLStreams.java
src/share/classes/sun/net/httpserver/SSLStreams.java
+9
-32
src/share/classes/sun/net/httpserver/SelectorCache.java
src/share/classes/sun/net/httpserver/SelectorCache.java
+0
-134
src/share/classes/sun/net/httpserver/ServerConfig.java
src/share/classes/sun/net/httpserver/ServerConfig.java
+77
-34
src/share/classes/sun/net/httpserver/ServerImpl.java
src/share/classes/sun/net/httpserver/ServerImpl.java
+230
-52
src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java
...are/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java
+0
-4
src/share/classes/sun/nio/cs/UTF_8.java
src/share/classes/sun/nio/cs/UTF_8.java
+1
-1
src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java
src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java
+7
-0
src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java
.../sun/security/krb5/internal/ccache/CCacheInputStream.java
+27
-16
src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
...n/security/krb5/internal/ccache/FileCredentialsCache.java
+5
-2
src/share/classes/sun/security/pkcs11/P11Cipher.java
src/share/classes/sun/security/pkcs11/P11Cipher.java
+5
-4
src/share/classes/sun/security/ssl/Krb5Helper.java
src/share/classes/sun/security/ssl/Krb5Helper.java
+1
-1
src/share/classes/sun/security/ssl/Krb5Proxy.java
src/share/classes/sun/security/ssl/Krb5Proxy.java
+1
-1
src/share/classes/sun/security/ssl/krb5/Krb5ProxyImpl.java
src/share/classes/sun/security/ssl/krb5/Krb5ProxyImpl.java
+1
-1
src/share/demo/applets/NervousText/example1.html
src/share/demo/applets/NervousText/example1.html
+1
-1
src/share/demo/java2d/J2DBench/src/j2dbench/J2DBench.java
src/share/demo/java2d/J2DBench/src/j2dbench/J2DBench.java
+15
-24
src/share/demo/java2d/J2DBench/src/j2dbench/Option.java
src/share/demo/java2d/J2DBench/src/j2dbench/Option.java
+171
-5
src/share/demo/java2d/J2DBench/src/j2dbench/Result.java
src/share/demo/java2d/J2DBench/src/j2dbench/Result.java
+241
-58
src/share/demo/java2d/J2DBench/src/j2dbench/report/J2DAnalyzer.java
...demo/java2d/J2DBench/src/j2dbench/report/J2DAnalyzer.java
+17
-7
src/share/demo/java2d/J2DBench/src/j2dbench/tests/GraphicsTests.java
...emo/java2d/J2DBench/src/j2dbench/tests/GraphicsTests.java
+233
-3
src/share/demo/java2d/J2DBench/src/j2dbench/tests/text/TextTests.java
...mo/java2d/J2DBench/src/j2dbench/tests/text/TextTests.java
+2
-1
src/share/lib/security/sunpkcs11-solaris.cfg
src/share/lib/security/sunpkcs11-solaris.cfg
+4
-0
src/share/native/java/util/zip/Deflater.c
src/share/native/java/util/zip/Deflater.c
+9
-4
src/share/native/java/util/zip/Inflater.c
src/share/native/java/util/zip/Inflater.c
+4
-2
src/share/native/java/util/zip/zip_util.c
src/share/native/java/util/zip/zip_util.c
+17
-8
src/share/native/java/util/zip/zlib-1.2.3/compress.c
src/share/native/java/util/zip/zlib-1.2.3/compress.c
+1
-1
src/share/native/java/util/zip/zlib-1.2.3/uncompr.c
src/share/native/java/util/zip/zlib-1.2.3/uncompr.c
+1
-1
src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java
src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java
+4
-1
src/solaris/classes/sun/awt/X11/XFramePeer.java
src/solaris/classes/sun/awt/X11/XFramePeer.java
+3
-1
src/solaris/native/java/net/net_util_md.c
src/solaris/native/java/net/net_util_md.c
+83
-13
src/solaris/native/sun/awt/gtk2_interface.c
src/solaris/native/sun/awt/gtk2_interface.c
+1
-0
src/solaris/native/sun/awt/gtk2_interface.h
src/solaris/native/sun/awt/gtk2_interface.h
+1
-0
src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.c
src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.c
+22
-0
src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.h
src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.h
+8
-0
src/windows/classes/sun/awt/windows/WFramePeer.java
src/windows/classes/sun/awt/windows/WFramePeer.java
+41
-1
src/windows/classes/sun/security/krb5/internal/tools/Ktab.java
...indows/classes/sun/security/krb5/internal/tools/Ktab.java
+2
-2
src/windows/native/sun/windows/awt_Choice.cpp
src/windows/native/sun/windows/awt_Choice.cpp
+5
-3
src/windows/native/sun/windows/awt_Choice.h
src/windows/native/sun/windows/awt_Choice.h
+1
-0
src/windows/resource/java.manifest
src/windows/resource/java.manifest
+1
-1
test/ProblemList.txt
test/ProblemList.txt
+0
-4
test/com/sun/net/httpserver/Test.java
test/com/sun/net/httpserver/Test.java
+12
-0
test/com/sun/net/httpserver/Test1.java
test/com/sun/net/httpserver/Test1.java
+1
-0
test/com/sun/net/httpserver/Test13.java
test/com/sun/net/httpserver/Test13.java
+13
-3
test/com/sun/net/httpserver/bugs/6725892/Test.java
test/com/sun/net/httpserver/bugs/6725892/Test.java
+266
-0
test/com/sun/net/httpserver/bugs/B6401598.java
test/com/sun/net/httpserver/bugs/B6401598.java
+1
-1
test/java/awt/Color/OpacityChange/OpacityChange.java
test/java/awt/Color/OpacityChange/OpacityChange.java
+54
-0
test/java/awt/MenuBar/DeadlockTest1/DeadlockTest1.java
test/java/awt/MenuBar/DeadlockTest1/DeadlockTest1.java
+73
-0
test/java/nio/Buffer/StringCharBufferSliceTest.java
test/java/nio/Buffer/StringCharBufferSliceTest.java
+18
-2
test/java/nio/channels/AsynchronousSocketChannel/Basic.java
test/java/nio/channels/AsynchronousSocketChannel/Basic.java
+56
-43
test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh
...urity/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh
+11
-5
test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh
test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh
+5
-3
test/java/util/concurrent/Executors/AutoShutdown.java
test/java/util/concurrent/Executors/AutoShutdown.java
+27
-8
test/sun/nio/cs/CheckHistoricalNames.java
test/sun/nio/cs/CheckHistoricalNames.java
+3
-1
test/sun/security/krb5/UnknownCCEntry.java
test/sun/security/krb5/UnknownCCEntry.java
+219
-0
test/sun/security/krb5/tools/ktarg.sh
test/sun/security/krb5/tools/ktarg.sh
+67
-0
test/sun/security/pkcs11/Cipher/TestPKCS5PaddingError.java
test/sun/security/pkcs11/Cipher/TestPKCS5PaddingError.java
+132
-0
test/sun/security/pkcs11/KeyGenerator/TestKeyGenerator.java
test/sun/security/pkcs11/KeyGenerator/TestKeyGenerator.java
+5
-5
test/tools/launcher/Settings.java
test/tools/launcher/Settings.java
+137
-0
未找到文件。
.hgtags
浏览文件 @
a5e5d666
...
@@ -93,3 +93,6 @@ e250cef36ea05e627e7e6f7d75e5e19f529e2ba3 jdk7-b114
...
@@ -93,3 +93,6 @@ e250cef36ea05e627e7e6f7d75e5e19f529e2ba3 jdk7-b114
1657ed4e1d86c8aa2028ab5a41f9da1ac4a369f8 jdk7-b116
1657ed4e1d86c8aa2028ab5a41f9da1ac4a369f8 jdk7-b116
3e6726bbf80a4254ecd01051c8ed77ee19325e46 jdk7-b117
3e6726bbf80a4254ecd01051c8ed77ee19325e46 jdk7-b117
b357910aa04aead2a16b6d6ff395a8df4b51d1dd jdk7-b118
b357910aa04aead2a16b6d6ff395a8df4b51d1dd jdk7-b118
ecab7eefb8f2326fd90fb632f47f1b6f81e928f8 jdk7-b119
37d74e29687cf07c2bf9411af58c7e42440855c3 jdk7-b120
a661d8587b5d8986aacae086f5df66af9e1a96b1 jdk7-b121
make/common/Defs.gmk
浏览文件 @
a5e5d666
...
@@ -83,14 +83,19 @@ ifndef CLOSED_SRC
...
@@ -83,14 +83,19 @@ ifndef CLOSED_SRC
CLOSED_SRC = $(BUILDDIR)/../src/closed
CLOSED_SRC = $(BUILDDIR)/../src/closed
endif
endif
# If we have no closed directory, force it to an openjdk build
# If CLOSE_SRC_INCLUDED isn't set to true, check if there's any
CLOSED_SRC_DIR_EXISTS := $(shell \
# closed directory.
if [ -d $(CLOSED_SRC) ] ; then \
ifneq ($(CLOSED_SRC_INCLUDED), true)
echo true; \
CLOSED_SRC_INCLUDED := $(shell \
else \
if [ -d $(CLOSED_SRC) ] ; then \
echo false; \
echo true; \
fi)
else \
ifeq ($(CLOSED_SRC_DIR_EXISTS), false)
echo false; \
fi)
endif
# Set OPENJDK based on CLOSED_SRC_INCLUDED
ifeq ($(CLOSED_SRC_INCLUDED), false)
OPENJDK = true
OPENJDK = true
endif
endif
...
...
make/sun/nio/cs/FILES_java.gmk
浏览文件 @
a5e5d666
...
@@ -85,6 +85,7 @@ FILES_src = \
...
@@ -85,6 +85,7 @@ FILES_src = \
sun/io/ByteToCharCp500.java \
sun/io/ByteToCharCp500.java \
sun/io/ByteToCharCp737.java \
sun/io/ByteToCharCp737.java \
sun/io/ByteToCharCp775.java \
sun/io/ByteToCharCp775.java \
sun/io/ByteToCharCp833.java \
sun/io/ByteToCharCp834.java \
sun/io/ByteToCharCp834.java \
sun/io/ByteToCharCp838.java \
sun/io/ByteToCharCp838.java \
sun/io/ByteToCharCp850.java \
sun/io/ByteToCharCp850.java \
...
@@ -214,6 +215,7 @@ FILES_src = \
...
@@ -214,6 +215,7 @@ FILES_src = \
sun/io/CharToByteCp500.java \
sun/io/CharToByteCp500.java \
sun/io/CharToByteCp737.java \
sun/io/CharToByteCp737.java \
sun/io/CharToByteCp775.java \
sun/io/CharToByteCp775.java \
sun/io/CharToByteCp833.java \
sun/io/CharToByteCp834.java \
sun/io/CharToByteCp834.java \
sun/io/CharToByteCp838.java \
sun/io/CharToByteCp838.java \
sun/io/CharToByteCp850.java \
sun/io/CharToByteCp850.java \
...
@@ -331,6 +333,7 @@ FILES_gen_extcs = \
...
@@ -331,6 +333,7 @@ FILES_gen_extcs = \
sun/nio/cs/ext/IBM420.java \
sun/nio/cs/ext/IBM420.java \
sun/nio/cs/ext/IBM424.java \
sun/nio/cs/ext/IBM424.java \
sun/nio/cs/ext/IBM500.java \
sun/nio/cs/ext/IBM500.java \
sun/nio/cs/ext/IBM833.java \
sun/nio/cs/ext/IBM838.java \
sun/nio/cs/ext/IBM838.java \
sun/nio/cs/ext/IBM856.java \
sun/nio/cs/ext/IBM856.java \
sun/nio/cs/ext/IBM860.java \
sun/nio/cs/ext/IBM860.java \
...
...
make/sun/xawt/mapfile-vers
浏览文件 @
a5e5d666
...
@@ -432,6 +432,7 @@ SUNWprivate_1.1 {
...
@@ -432,6 +432,7 @@ SUNWprivate_1.1 {
Java_sun_awt_X11_GtkFileDialogPeer_initIDs;
Java_sun_awt_X11_GtkFileDialogPeer_initIDs;
Java_sun_awt_X11_GtkFileDialogPeer_run;
Java_sun_awt_X11_GtkFileDialogPeer_run;
Java_sun_awt_X11_GtkFileDialogPeer_quit;
Java_sun_awt_X11_GtkFileDialogPeer_quit;
Java_sun_awt_X11_GtkFileDialogPeer_toFront;
Java_sun_print_CUPSPrinter_initIDs;
Java_sun_print_CUPSPrinter_initIDs;
Java_sun_print_CUPSPrinter_getCupsServer;
Java_sun_print_CUPSPrinter_getCupsServer;
...
...
make/tools/CharsetMapping/IBM833.c2b
0 → 100644
浏览文件 @
a5e5d666
0x5A U+FF01
0x7F U+FF02
0x7B U+FF03
0x5B U+FF04
0x6C U+FF05
0x50 U+FF06
0x7D U+FF07
0x4D U+FF08
0x5D U+FF09
0x5C U+FF0A
0x4E U+FF0B
0x6B U+FF0C
0x60 U+FF0D
0x4B U+FF0E
0x61 U+FF0F
0xF0 U+FF10
0xF1 U+FF11
0xF2 U+FF12
0xF3 U+FF13
0xF4 U+FF14
0xF5 U+FF15
0xF6 U+FF16
0xF7 U+FF17
0xF8 U+FF18
0xF9 U+FF19
0x7A U+FF1A
0x5E U+FF1B
0x4C U+FF1C
0x7E U+FF1D
0x6E U+FF1E
0x6F U+FF1F
0x7C U+FF20
0xC1 U+FF21
0xC2 U+FF22
0xC3 U+FF23
0xC4 U+FF24
0xC5 U+FF25
0xC6 U+FF26
0xC7 U+FF27
0xC8 U+FF28
0xC9 U+FF29
0xD1 U+FF2A
0xD2 U+FF2B
0xD3 U+FF2C
0xD4 U+FF2D
0xD5 U+FF2E
0xD6 U+FF2F
0xD7 U+FF30
0xD8 U+FF31
0xD9 U+FF32
0xE2 U+FF33
0xE3 U+FF34
0xE4 U+FF35
0xE5 U+FF36
0xE6 U+FF37
0xE7 U+FF38
0xE8 U+FF39
0xE9 U+FF3A
0x70 U+FF3B
0xB2 U+FF3C
0x80 U+FF3D
0xB0 U+FF3E
0x6D U+FF3F
0x79 U+FF40
0x81 U+FF41
0x82 U+FF42
0x83 U+FF43
0x84 U+FF44
0x85 U+FF45
0x86 U+FF46
0x87 U+FF47
0x88 U+FF48
0x89 U+FF49
0x91 U+FF4A
0x92 U+FF4B
0x93 U+FF4C
0x94 U+FF4D
0x95 U+FF4E
0x96 U+FF4F
0x97 U+FF50
0x98 U+FF51
0x99 U+FF52
0xA2 U+FF53
0xA3 U+FF54
0xA4 U+FF55
0xA5 U+FF56
0xA6 U+FF57
0xA7 U+FF58
0xA8 U+FF59
0xA9 U+FF5A
0xC0 U+FF5B
0x4F U+FF5C
0xD0 U+FF5D
0xA1 U+FF5E
make/tools/CharsetMapping/IBM833.map
0 → 100644
浏览文件 @
a5e5d666
0x00 U+0000
0x01 U+0001
0x02 U+0002
0x03 U+0003
0x37 U+0004
0x2D U+0005
0x2E U+0006
0x2F U+0007
0x16 U+0008
0x05 U+0009
0x25 U+000A
0x0B U+000B
0x0C U+000C
0x0D U+000D
0x0E U+000E
0x0F U+000F
0x10 U+0010
0x11 U+0011
0x12 U+0012
0x13 U+0013
0x3C U+0014
0x3D U+0015
0x32 U+0016
0x26 U+0017
0x18 U+0018
0x19 U+0019
0x3F U+001A
0x27 U+001B
0x1C U+001C
0x1D U+001D
0x1E U+001E
0x1F U+001F
0x40 U+0020
0x5A U+0021
0x7F U+0022
0x7B U+0023
0x5B U+0024
0x6C U+0025
0x50 U+0026
0x7D U+0027
0x4D U+0028
0x5D U+0029
0x5C U+002A
0x4E U+002B
0x6B U+002C
0x60 U+002D
0x4B U+002E
0x61 U+002F
0xF0 U+0030
0xF1 U+0031
0xF2 U+0032
0xF3 U+0033
0xF4 U+0034
0xF5 U+0035
0xF6 U+0036
0xF7 U+0037
0xF8 U+0038
0xF9 U+0039
0x7A U+003A
0x5E U+003B
0x4C U+003C
0x7E U+003D
0x6E U+003E
0x6F U+003F
0x7C U+0040
0xC1 U+0041
0xC2 U+0042
0xC3 U+0043
0xC4 U+0044
0xC5 U+0045
0xC6 U+0046
0xC7 U+0047
0xC8 U+0048
0xC9 U+0049
0xD1 U+004A
0xD2 U+004B
0xD3 U+004C
0xD4 U+004D
0xD5 U+004E
0xD6 U+004F
0xD7 U+0050
0xD8 U+0051
0xD9 U+0052
0xE2 U+0053
0xE3 U+0054
0xE4 U+0055
0xE5 U+0056
0xE6 U+0057
0xE7 U+0058
0xE8 U+0059
0xE9 U+005A
0x70 U+005B
0xB2 U+005C
0x80 U+005D
0xB0 U+005E
0x6D U+005F
0x79 U+0060
0x81 U+0061
0x82 U+0062
0x83 U+0063
0x84 U+0064
0x85 U+0065
0x86 U+0066
0x87 U+0067
0x88 U+0068
0x89 U+0069
0x91 U+006A
0x92 U+006B
0x93 U+006C
0x94 U+006D
0x95 U+006E
0x96 U+006F
0x97 U+0070
0x98 U+0071
0x99 U+0072
0xA2 U+0073
0xA3 U+0074
0xA4 U+0075
0xA5 U+0076
0xA6 U+0077
0xA7 U+0078
0xA8 U+0079
0xA9 U+007A
0xC0 U+007B
0x4F U+007C
0xD0 U+007D
0xA1 U+007E
0x07 U+007F
0x20 U+0080
0x21 U+0081
0x22 U+0082
0x23 U+0083
0x24 U+0084
0x15 U+0085
0x06 U+0086
0x17 U+0087
0x28 U+0088
0x29 U+0089
0x2A U+008A
0x2B U+008B
0x2C U+008C
0x09 U+008D
0x0A U+008E
0x1B U+008F
0x30 U+0090
0x31 U+0091
0x1A U+0092
0x33 U+0093
0x34 U+0094
0x35 U+0095
0x36 U+0096
0x08 U+0097
0x38 U+0098
0x39 U+0099
0x3A U+009A
0x3B U+009B
0x04 U+009C
0x14 U+009D
0x3E U+009E
0xFF U+009F
0x4A U+00A2
0x6A U+00A6
0x5F U+00AC
0xA0 U+203E
0xE0 U+20A9
0x42 U+FFA0
0x43 U+FFA1
0x44 U+FFA2
0x45 U+FFA3
0x46 U+FFA4
0x47 U+FFA5
0x48 U+FFA6
0x49 U+FFA7
0x52 U+FFA8
0x53 U+FFA9
0x54 U+FFAA
0x55 U+FFAB
0x56 U+FFAC
0x57 U+FFAD
0x58 U+FFAE
0x59 U+FFAF
0x62 U+FFB0
0x63 U+FFB1
0x64 U+FFB2
0x65 U+FFB3
0x66 U+FFB4
0x67 U+FFB5
0x68 U+FFB6
0x69 U+FFB7
0x72 U+FFB8
0x73 U+FFB9
0x74 U+FFBA
0x75 U+FFBB
0x76 U+FFBC
0x77 U+FFBD
0x78 U+FFBE
0x8A U+FFC2
0x8B U+FFC3
0x8C U+FFC4
0x8D U+FFC5
0x8E U+FFC6
0x8F U+FFC7
0x9A U+FFCA
0x9B U+FFCB
0x9C U+FFCC
0x9D U+FFCD
0x9E U+FFCE
0x9F U+FFCF
0xAA U+FFD2
0xAB U+FFD3
0xAC U+FFD4
0xAD U+FFD5
0xAE U+FFD6
0xAF U+FFD7
0xBA U+FFDA
0xBB U+FFDB
0xBC U+FFDC
make/tools/CharsetMapping/extsbcs
浏览文件 @
a5e5d666
...
@@ -32,6 +32,7 @@ IBM297 IBM297 Cp297 false sun.nio.cs.ext
...
@@ -32,6 +32,7 @@ IBM297 IBM297 Cp297 false sun.nio.cs.ext
IBM420 IBM420 Cp420 false sun.nio.cs.ext
IBM420 IBM420 Cp420 false sun.nio.cs.ext
IBM424 IBM424 Cp424 false sun.nio.cs.ext
IBM424 IBM424 Cp424 false sun.nio.cs.ext
IBM500 IBM500 Cp500 false sun.nio.cs.ext
IBM500 IBM500 Cp500 false sun.nio.cs.ext
IBM833 x-IBM833 Cp833 false sun.nio.cs.ext
IBM838 IBM-Thai Cp838 false sun.nio.cs.ext
IBM838 IBM-Thai Cp838 false sun.nio.cs.ext
IBM856 x-IBM856 Cp856 false sun.nio.cs.ext
IBM856 x-IBM856 Cp856 false sun.nio.cs.ext
IBM860 IBM860 Cp860 false sun.nio.cs.ext
IBM860 IBM860 Cp860 false sun.nio.cs.ext
...
...
src/share/bin/java.c
浏览文件 @
a5e5d666
...
@@ -65,6 +65,7 @@ static jboolean printVersion = JNI_FALSE; /* print and exit */
...
@@ -65,6 +65,7 @@ static jboolean printVersion = JNI_FALSE; /* print and exit */
static
jboolean
showVersion
=
JNI_FALSE
;
/* print but continue */
static
jboolean
showVersion
=
JNI_FALSE
;
/* print but continue */
static
jboolean
printUsage
=
JNI_FALSE
;
/* print and exit*/
static
jboolean
printUsage
=
JNI_FALSE
;
/* print and exit*/
static
jboolean
printXUsage
=
JNI_FALSE
;
/* print and exit*/
static
jboolean
printXUsage
=
JNI_FALSE
;
/* print and exit*/
static
char
*
showSettings
=
NULL
;
/* print but continue */
static
const
char
*
_program_name
;
static
const
char
*
_program_name
;
static
const
char
*
_launcher_name
;
static
const
char
*
_launcher_name
;
...
@@ -109,6 +110,7 @@ static void SetApplicationClassPath(const char**);
...
@@ -109,6 +110,7 @@ static void SetApplicationClassPath(const char**);
static
void
PrintJavaVersion
(
JNIEnv
*
env
,
jboolean
extraLF
);
static
void
PrintJavaVersion
(
JNIEnv
*
env
,
jboolean
extraLF
);
static
void
PrintUsage
(
JNIEnv
*
env
,
jboolean
doXUsage
);
static
void
PrintUsage
(
JNIEnv
*
env
,
jboolean
doXUsage
);
static
void
ShowSettings
(
JNIEnv
*
env
,
char
*
optString
);
static
void
SetPaths
(
int
argc
,
char
**
argv
);
static
void
SetPaths
(
int
argc
,
char
**
argv
);
...
@@ -157,6 +159,7 @@ static jboolean IsWildCardEnabled();
...
@@ -157,6 +159,7 @@ static jboolean IsWildCardEnabled();
* create a new thread to invoke JVM. See 6316197 for more information.
* create a new thread to invoke JVM. See 6316197 for more information.
*/
*/
static
jlong
threadStackSize
=
0
;
/* stack size of the new thread */
static
jlong
threadStackSize
=
0
;
/* stack size of the new thread */
static
jlong
heapSize
=
0
;
/* heap size */
int
JNICALL
JavaMain
(
void
*
args
);
/* entry point */
int
JNICALL
JavaMain
(
void
*
args
);
/* entry point */
...
@@ -376,6 +379,10 @@ JavaMain(void * _args)
...
@@ -376,6 +379,10 @@ JavaMain(void * _args)
}
}
}
}
if
(
showSettings
!=
NULL
)
{
ShowSettings
(
env
,
showSettings
);
CHECK_EXCEPTION_LEAVE
(
0
);
}
/* If the user specified neither a class name nor a JAR file */
/* If the user specified neither a class name nor a JAR file */
if
(
printXUsage
||
printUsage
||
(
jarfile
==
0
&&
classname
==
0
))
{
if
(
printXUsage
||
printUsage
||
(
jarfile
==
0
&&
classname
==
0
))
{
PrintUsage
(
env
,
printXUsage
);
PrintUsage
(
env
,
printXUsage
);
...
@@ -611,7 +618,7 @@ CheckJvmType(int *pargc, char ***argv, jboolean speculative) {
...
@@ -611,7 +618,7 @@ CheckJvmType(int *pargc, char ***argv, jboolean speculative) {
/* copied from HotSpot function "atomll()" */
/* copied from HotSpot function "atomll()" */
static
int
static
int
parse_s
tack_s
ize
(
const
char
*
s
,
jlong
*
result
)
{
parse_size
(
const
char
*
s
,
jlong
*
result
)
{
jlong
n
=
0
;
jlong
n
=
0
;
int
args_read
=
sscanf
(
s
,
jlong_format_specifier
(),
&
n
);
int
args_read
=
sscanf
(
s
,
jlong_format_specifier
(),
&
n
);
if
(
args_read
!=
1
)
{
if
(
args_read
!=
1
)
{
...
@@ -673,10 +680,17 @@ AddOption(char *str, void *info)
...
@@ -673,10 +680,17 @@ AddOption(char *str, void *info)
options
[
numOptions
++
].
extraInfo
=
info
;
options
[
numOptions
++
].
extraInfo
=
info
;
if
(
JLI_StrCCmp
(
str
,
"-Xss"
)
==
0
)
{
if
(
JLI_StrCCmp
(
str
,
"-Xss"
)
==
0
)
{
jlong
tmp
;
jlong
tmp
;
if
(
parse_stack_size
(
str
+
4
,
&
tmp
))
{
if
(
parse_size
(
str
+
4
,
&
tmp
))
{
threadStackSize
=
tmp
;
threadStackSize
=
tmp
;
}
}
}
if
(
JLI_StrCCmp
(
str
,
"-Xmx"
)
==
0
)
{
jlong
tmp
;
if
(
parse_size
(
str
+
4
,
&
tmp
))
{
heapSize
=
tmp
;
}
}
}
}
}
...
@@ -1014,6 +1028,13 @@ ParseArguments(int *pargc, char ***pargv, char **pjarfile,
...
@@ -1014,6 +1028,13 @@ ParseArguments(int *pargc, char ***pargv, char **pjarfile,
}
else
if
(
JLI_StrCmp
(
arg
,
"-X"
)
==
0
)
{
}
else
if
(
JLI_StrCmp
(
arg
,
"-X"
)
==
0
)
{
printXUsage
=
JNI_TRUE
;
printXUsage
=
JNI_TRUE
;
return
JNI_TRUE
;
return
JNI_TRUE
;
/*
* The following case checks for -XshowSettings OR -XshowSetting:SUBOPT.
* In the latter case, any SUBOPT value not recognized will default to "all"
*/
}
else
if
(
JLI_StrCmp
(
arg
,
"-XshowSettings"
)
==
0
||
JLI_StrCCmp
(
arg
,
"-XshowSettings:"
)
==
0
)
{
showSettings
=
arg
;
/*
/*
* The following case provide backward compatibility with old-style
* The following case provide backward compatibility with old-style
* command line options.
* command line options.
...
@@ -1474,6 +1495,27 @@ PrintJavaVersion(JNIEnv *env, jboolean extraLF)
...
@@ -1474,6 +1495,27 @@ PrintJavaVersion(JNIEnv *env, jboolean extraLF)
(
*
env
)
->
CallStaticVoidMethod
(
env
,
ver
,
print
);
(
*
env
)
->
CallStaticVoidMethod
(
env
,
ver
,
print
);
}
}
/*
* Prints all the Java settings, see the java implementation for more details.
*/
static
void
ShowSettings
(
JNIEnv
*
env
,
char
*
optString
)
{
jclass
cls
;
jmethodID
showSettingsID
;
jstring
joptString
;
NULL_CHECK
(
cls
=
FindBootStrapClass
(
env
,
"sun/launcher/LauncherHelper"
));
NULL_CHECK
(
showSettingsID
=
(
*
env
)
->
GetStaticMethodID
(
env
,
cls
,
"showSettings"
,
"(ZLjava/lang/String;JJZ)V"
));
joptString
=
(
*
env
)
->
NewStringUTF
(
env
,
optString
);
(
*
env
)
->
CallStaticVoidMethod
(
env
,
cls
,
showSettingsID
,
JNI_TRUE
,
joptString
,
(
jlong
)
heapSize
,
(
jlong
)
threadStackSize
,
ServerClassMachine
());
}
/*
/*
* Prints default usage or the Xusage message, see sun.launcher.LauncherHelper.java
* Prints default usage or the Xusage message, see sun.launcher.LauncherHelper.java
*/
*/
...
...
src/share/classes/com/sun/java/util/jar/pack/AdaptiveCoding.java
浏览文件 @
a5e5d666
...
@@ -25,8 +25,10 @@
...
@@ -25,8 +25,10 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.util.*
;
import
java.io.ByteArrayOutputStream
;
import
java.io.*
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
/**
/**
* Adaptive coding.
* Adaptive coding.
...
...
src/share/classes/com/sun/java/util/jar/pack/Attribute.java
浏览文件 @
a5e5d666
...
@@ -25,9 +25,17 @@
...
@@ -25,9 +25,17 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.io.*
;
import
com.sun.java.util.jar.pack.ConstantPool.Entry
;
import
java.util.*
;
import
com.sun.java.util.jar.pack.ConstantPool.Index
;
import
com.sun.java.util.jar.pack.ConstantPool.*
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* Represents an attribute in a class-file.
* Represents an attribute in a class-file.
...
...
src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
浏览文件 @
a5e5d666
...
@@ -25,12 +25,28 @@
...
@@ -25,12 +25,28 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.io.*
;
import
com.sun.java.util.jar.pack.ConstantPool.Entry
;
import
java.util.*
;
import
com.sun.java.util.jar.pack.ConstantPool.Index
;
import
java.util.jar.*
;
import
com.sun.java.util.jar.pack.Package.Class.Field
;
import
com.sun.java.util.jar.pack.Package.Class
;
import
java.io.BufferedOutputStream
;
import
com.sun.java.util.jar.pack.Package.InnerClass
;
import
java.io.ByteArrayInputStream
;
import
com.sun.java.util.jar.pack.ConstantPool.*
;
import
java.io.ByteArrayOutputStream
;
import
java.io.EOFException
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.FilterInputStream
;
import
java.io.FilterOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.io.PrintStream
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.jar.Pack200
;
/**
/**
* Define the structure and ordering of "bands" in a packed file.
* Define the structure and ordering of "bands" in a packed file.
...
@@ -1629,7 +1645,7 @@ class BandStructure implements Constants {
...
@@ -1629,7 +1645,7 @@ class BandStructure implements Constants {
}
}
}
}
protected
void
setConstantValueIndex
(
Class
.
Field
f
)
{
protected
void
setConstantValueIndex
(
com
.
sun
.
java
.
util
.
jar
.
pack
.
Package
.
Class
.
Field
f
)
{
Index
ix
=
null
;
Index
ix
=
null
;
if
(
f
!=
null
)
{
if
(
f
!=
null
)
{
byte
tag
=
f
.
getLiteralTag
();
byte
tag
=
f
.
getLiteralTag
();
...
...
src/share/classes/com/sun/java/util/jar/pack/ClassReader.java
浏览文件 @
a5e5d666
...
@@ -25,11 +25,19 @@
...
@@ -25,11 +25,19 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.io.*
;
import
com.sun.java.util.jar.pack.ConstantPool.ClassEntry
;
import
java.util.*
;
import
com.sun.java.util.jar.pack.ConstantPool.DescriptorEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.Entry
;
import
com.sun.java.util.jar.pack.ConstantPool.SignatureEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.Utf8Entry
;
import
com.sun.java.util.jar.pack.Package.Class
;
import
com.sun.java.util.jar.pack.Package.Class
;
import
com.sun.java.util.jar.pack.Package.InnerClass
;
import
com.sun.java.util.jar.pack.Package.InnerClass
;
import
com.sun.java.util.jar.pack.ConstantPool.*
;
import
java.io.DataInputStream
;
import
java.io.FilterInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.Map
;
/**
/**
* Reader for a class file that is being incorporated into a package.
* Reader for a class file that is being incorporated into a package.
...
...
src/share/classes/com/sun/java/util/jar/pack/ClassWriter.java
浏览文件 @
a5e5d666
...
@@ -25,11 +25,19 @@
...
@@ -25,11 +25,19 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.io.*
;
import
java.util.*
;
import
com.sun.java.util.jar.pack.ConstantPool.Entry
;
import
com.sun.java.util.jar.pack.ConstantPool.Index
;
import
com.sun.java.util.jar.pack.ConstantPool.NumberEntry
;
import
com.sun.java.util.jar.pack.Package.Class
;
import
com.sun.java.util.jar.pack.Package.Class
;
import
com.sun.java.util.jar.pack.Package.InnerClass
;
import
com.sun.java.util.jar.pack.Package.InnerClass
;
import
com.sun.java.util.jar.pack.ConstantPool.*
;
import
java.io.BufferedOutputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.DataOutputStream
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.util.Iterator
;
import
java.util.List
;
/**
/**
* Writer for a class file that is incorporated into a package.
* Writer for a class file that is incorporated into a package.
...
...
src/share/classes/com/sun/java/util/jar/pack/Code.java
浏览文件 @
a5e5d666
...
@@ -25,10 +25,10 @@
...
@@ -25,10 +25,10 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.io.*
;
import
java.util.*
;
import
com.sun.java.util.jar.pack.Package.Class
;
import
com.sun.java.util.jar.pack.Package.Class
;
import
java.lang.reflect.Modifier
;
import
java.lang.reflect.Modifier
;
import
java.util.Arrays
;
import
java.util.Collection
;
/**
/**
* Represents a chunk of bytecodes.
* Represents a chunk of bytecodes.
...
...
src/share/classes/com/sun/java/util/jar/pack/Coding.java
浏览文件 @
a5e5d666
...
@@ -25,8 +25,10 @@
...
@@ -25,8 +25,10 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.io.*
;
import
java.io.IOException
;
import
java.util.*
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.util.HashMap
;
/**
/**
* Define the conversions between sequences of small integers and raw bytes.
* Define the conversions between sequences of small integers and raw bytes.
...
...
src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java
浏览文件 @
a5e5d666
...
@@ -25,9 +25,17 @@
...
@@ -25,9 +25,17 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.io.*
;
import
java.io.ByteArrayOutputStream
;
import
java.util.*
;
import
java.io.IOException
;
import
java.util.zip.*
;
import
java.io.OutputStream
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Random
;
import
java.util.zip.Deflater
;
import
java.util.zip.DeflaterOutputStream
;
/**
/**
* Heuristic chooser of basic encodings.
* Heuristic chooser of basic encodings.
...
...
src/share/classes/com/sun/java/util/jar/pack/CodingMethod.java
浏览文件 @
a5e5d666
...
@@ -25,7 +25,9 @@
...
@@ -25,7 +25,9 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.io.*
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
/**
/**
* Interface for encoding and decoding int arrays using bytewise codes.
* Interface for encoding and decoding int arrays using bytewise codes.
...
...
src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java
浏览文件 @
a5e5d666
...
@@ -25,7 +25,14 @@
...
@@ -25,7 +25,14 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.util.*
;
import
java.util.AbstractList
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.ListIterator
;
import
java.util.Map
;
import
java.util.Set
;
/**
/**
* Representation of constant pool entries and indexes.
* Representation of constant pool entries and indexes.
...
...
src/share/classes/com/sun/java/util/jar/pack/Constants.java
浏览文件 @
a5e5d666
...
@@ -25,7 +25,8 @@
...
@@ -25,7 +25,8 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.util.*
;
import
java.util.Arrays
;
import
java.util.List
;
/**
/**
* Shared constants
* Shared constants
...
...
src/share/classes/com/sun/java/util/jar/pack/Driver.java
浏览文件 @
a5e5d666
...
@@ -25,11 +25,32 @@
...
@@ -25,11 +25,32 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.io.*
;
import
java.io.BufferedInputStream
;
import
java.io.BufferedOutputStream
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.io.PrintStream
;
import
java.text.MessageFormat
;
import
java.text.MessageFormat
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.jar.*
;
import
java.util.Arrays
;
import
java.util.zip.*
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.ListIterator
;
import
java.util.Map
;
import
java.util.Properties
;
import
java.util.ResourceBundle
;
import
java.util.SortedMap
;
import
java.util.TreeMap
;
import
java.util.jar.JarFile
;
import
java.util.jar.JarOutputStream
;
import
java.util.jar.Pack200
;
import
java.util.zip.GZIPInputStream
;
import
java.util.zip.GZIPOutputStream
;
/** Command line interface for Pack200.
/** Command line interface for Pack200.
*/
*/
...
...
src/share/classes/com/sun/java/util/jar/pack/Fixups.java
浏览文件 @
a5e5d666
...
@@ -25,9 +25,11 @@
...
@@ -25,9 +25,11 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.io.*
;
import
com.sun.java.util.jar.pack.ConstantPool.Entry
;
import
java.util.*
;
import
java.util.AbstractCollection
;
import
com.sun.java.util.jar.pack.ConstantPool.*
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Iterator
;
/**
/**
* Collection of relocatable constant pool references.
* Collection of relocatable constant pool references.
...
...
src/share/classes/com/sun/java/util/jar/pack/Histogram.java
浏览文件 @
a5e5d666
...
@@ -25,8 +25,10 @@
...
@@ -25,8 +25,10 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.util.*
;
import
java.io.IOException
;
import
java.io.*
;
import
java.io.InputStream
;
import
java.io.PrintStream
;
import
java.util.Arrays
;
/**
/**
* Histogram derived from an integer array of events (int[]).
* Histogram derived from an integer array of events (int[]).
...
...
src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java
浏览文件 @
a5e5d666
...
@@ -26,10 +26,18 @@
...
@@ -26,10 +26,18 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.nio.*
;
import
java.io.BufferedInputStream
;
import
java.io.*
;
import
java.io.File
;
import
java.util.jar.*
;
import
java.io.FileInputStream
;
import
java.util.zip.*
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.nio.ByteBuffer
;
import
java.util.jar.JarOutputStream
;
import
java.util.jar.Pack200
;
import
java.util.zip.CRC32
;
import
java.util.zip.Deflater
;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipOutputStream
;
class
NativeUnpack
{
class
NativeUnpack
{
// Pointer to the native unpacker obj
// Pointer to the native unpacker obj
...
...
src/share/classes/com/sun/java/util/jar/pack/Package.java
浏览文件 @
a5e5d666
...
@@ -26,11 +26,32 @@
...
@@ -26,11 +26,32 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
com.sun.java.util.jar.pack.Attribute.Layout
;
import
com.sun.java.util.jar.pack.Attribute.Layout
;
import
com.sun.java.util.jar.pack.ConstantPool.ClassEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.DescriptorEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.Index
;
import
com.sun.java.util.jar.pack.ConstantPool.LiteralEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.Utf8Entry
;
import
com.sun.java.util.jar.pack.ConstantPool.Entry
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.io.SequenceInputStream
;
import
java.lang.reflect.Modifier
;
import
java.lang.reflect.Modifier
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.jar.*
;
import
java.util.Arrays
;
import
java.io.*
;
import
java.util.Collection
;
import
com.sun.java.util.jar.pack.ConstantPool.*
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.ListIterator
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.jar.JarFile
;
/**
/**
* Define the main data structure transmitted by pack/unpack.
* Define the main data structure transmitted by pack/unpack.
...
...
src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
浏览文件 @
a5e5d666
...
@@ -25,12 +25,18 @@
...
@@ -25,12 +25,18 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
com.sun.java.util.jar.pack.ConstantPool.ClassEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.DescriptorEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.Entry
;
import
com.sun.java.util.jar.pack.ConstantPool.Index
;
import
com.sun.java.util.jar.pack.ConstantPool.MemberEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.SignatureEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.Utf8Entry
;
import
java.io.*
;
import
java.io.*
;
import
java.util.*
;
import
java.util.*
;
import
com.sun.java.util.jar.pack.Package.Class
;
import
com.sun.java.util.jar.pack.Package.Class
;
import
com.sun.java.util.jar.pack.Package.File
;
import
com.sun.java.util.jar.pack.Package.File
;
import
com.sun.java.util.jar.pack.Package.InnerClass
;
import
com.sun.java.util.jar.pack.Package.InnerClass
;
import
com.sun.java.util.jar.pack.ConstantPool.*
;
/**
/**
* Reader for a package file.
* Reader for a package file.
...
...
src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
浏览文件 @
a5e5d666
...
@@ -25,12 +25,30 @@
...
@@ -25,12 +25,30 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.io.*
;
import
com.sun.java.util.jar.pack.ConstantPool.ClassEntry
;
import
java.util.*
;
import
com.sun.java.util.jar.pack.ConstantPool.DescriptorEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.Entry
;
import
com.sun.java.util.jar.pack.ConstantPool.Index
;
import
com.sun.java.util.jar.pack.ConstantPool.IndexGroup
;
import
com.sun.java.util.jar.pack.ConstantPool.MemberEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.NumberEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.SignatureEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.StringEntry
;
import
com.sun.java.util.jar.pack.Package.Class
;
import
com.sun.java.util.jar.pack.Package.Class
;
import
com.sun.java.util.jar.pack.Package.File
;
import
com.sun.java.util.jar.pack.Package.File
;
import
com.sun.java.util.jar.pack.Package.InnerClass
;
import
com.sun.java.util.jar.pack.Package.InnerClass
;
import
com.sun.java.util.jar.pack.ConstantPool.*
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.io.PrintStream
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Comparator
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.ListIterator
;
import
java.util.Map
;
/**
/**
* Writer for a package file.
* Writer for a package file.
...
...
src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java
浏览文件 @
a5e5d666
...
@@ -26,10 +26,27 @@
...
@@ -26,10 +26,27 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
com.sun.java.util.jar.pack.Attribute.Layout
;
import
com.sun.java.util.jar.pack.Attribute.Layout
;
import
java.util.*
;
import
java.util.jar.*
;
import
java.io.*
;
import
java.beans.PropertyChangeListener
;
import
java.beans.PropertyChangeListener
;
import
java.io.BufferedInputStream
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.ListIterator
;
import
java.util.Map
;
import
java.util.SortedMap
;
import
java.util.TimeZone
;
import
java.util.jar.JarEntry
;
import
java.util.jar.JarFile
;
import
java.util.jar.JarInputStream
;
import
java.util.jar.Pack200
;
/*
/*
...
...
src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java
浏览文件 @
a5e5d666
...
@@ -25,8 +25,12 @@
...
@@ -25,8 +25,12 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.util.*
;
import
java.io.ByteArrayOutputStream
;
import
java.io.*
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.util.Arrays
;
import
java.util.HashSet
;
/**
/**
* Population-based coding.
* Population-based coding.
...
...
src/share/classes/com/sun/java/util/jar/pack/PropMap.java
浏览文件 @
a5e5d666
...
@@ -25,13 +25,24 @@
...
@@ -25,13 +25,24 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.util.*
;
import
java.util.jar.*
;
import
java.util.jar.Pack200
;
import
java.util.zip.*
;
import
java.io.*
;
import
java.beans.PropertyChangeListener
;
import
java.beans.PropertyChangeListener
;
import
java.beans.PropertyChangeEvent
;
import
java.beans.PropertyChangeEvent
;
import
java.io.BufferedInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.PrintStream
;
import
java.io.PrintWriter
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Properties
;
import
java.util.Set
;
import
java.util.SortedMap
;
import
java.util.TreeMap
;
import
java.util.jar.Pack200
;
/**
/**
* Control block for publishing Pack200 options to the other classes.
* Control block for publishing Pack200 options to the other classes.
*/
*/
...
...
src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
浏览文件 @
a5e5d666
...
@@ -25,11 +25,25 @@
...
@@ -25,11 +25,25 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
java.util.*
;
import
java.util.jar.*
;
import
java.util.zip.*
;
import
java.io.*
;
import
java.beans.PropertyChangeListener
;
import
java.beans.PropertyChangeListener
;
import
java.io.BufferedInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.SortedMap
;
import
java.util.TimeZone
;
import
java.util.jar.JarEntry
;
import
java.util.jar.JarInputStream
;
import
java.util.jar.JarOutputStream
;
import
java.util.jar.Pack200
;
import
java.util.zip.CRC32
;
import
java.util.zip.CheckedOutputStream
;
import
java.util.zip.ZipEntry
;
/*
/*
* Implementation of the Pack provider.
* Implementation of the Pack provider.
...
...
src/share/classes/com/sun/java/util/jar/pack/Utils.java
浏览文件 @
a5e5d666
...
@@ -25,18 +25,27 @@
...
@@ -25,18 +25,27 @@
package
com.sun.java.util.jar.pack
;
package
com.sun.java.util.jar.pack
;
import
com.sun.java.util.jar.pack.Attribute.Layout
;
import
com.sun.java.util.jar.pack.ConstantPool.ClassEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.ClassEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.DescriptorEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.DescriptorEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.LiteralEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.LiteralEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.MemberEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.MemberEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.SignatureEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.SignatureEntry
;
import
com.sun.java.util.jar.pack.ConstantPool.Utf8Entry
;
import
com.sun.java.util.jar.pack.ConstantPool.Utf8Entry
;
import
java.util.*
;
import
java.io.BufferedInputStream
;
import
java.util.jar.*
;
import
java.io.BufferedOutputStream
;
import
java.util.zip.*
;
import
java.io.File
;
import
java.io.*
;
import
java.io.FilterOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.util.Date
;
import
java.util.Enumeration
;
import
java.util.Map
;
import
java.util.jar.JarEntry
;
import
java.util.jar.JarFile
;
import
java.util.jar.JarInputStream
;
import
java.util.jar.JarOutputStream
;
import
java.util.zip.ZipEntry
;
import
sun.util.logging.PlatformLogger
;
import
sun.util.logging.PlatformLogger
;
class
Utils
{
class
Utils
{
...
...
src/share/classes/com/sun/net/httpserver/HttpsConfigurator.java
浏览文件 @
a5e5d666
...
@@ -91,6 +91,7 @@ public class HttpsConfigurator {
...
@@ -91,6 +91,7 @@ public class HttpsConfigurator {
return
context
;
return
context
;
}
}
//BEGIN_TIGER_EXCLUDE
/**
/**
* Called by the HttpsServer to configure the parameters
* Called by the HttpsServer to configure the parameters
* for a https connection currently being established.
* for a https connection currently being established.
...
@@ -111,4 +112,5 @@ public class HttpsConfigurator {
...
@@ -111,4 +112,5 @@ public class HttpsConfigurator {
public
void
configure
(
HttpsParameters
params
)
{
public
void
configure
(
HttpsParameters
params
)
{
params
.
setSSLParameters
(
getSSLContext
().
getDefaultSSLParameters
());
params
.
setSSLParameters
(
getSSLContext
().
getDefaultSSLParameters
());
}
}
//END_TIGER_EXCLUDE
}
}
src/share/classes/com/sun/net/httpserver/HttpsParameters.java
浏览文件 @
a5e5d666
...
@@ -25,7 +25,9 @@
...
@@ -25,7 +25,9 @@
package
com.sun.net.httpserver
;
package
com.sun.net.httpserver
;
import
java.net.InetSocketAddress
;
import
java.net.InetSocketAddress
;
//BEGIN_TIGER_EXCLUDE
import
javax.net.ssl.SSLParameters
;
import
javax.net.ssl.SSLParameters
;
//END_TIGER_EXCLUDE
/**
/**
* Represents the set of parameters for each https
* Represents the set of parameters for each https
...
@@ -67,6 +69,7 @@ public abstract class HttpsParameters {
...
@@ -67,6 +69,7 @@ public abstract class HttpsParameters {
*/
*/
public
abstract
InetSocketAddress
getClientAddress
();
public
abstract
InetSocketAddress
getClientAddress
();
//BEGIN_TIGER_EXCLUDE
/**
/**
* Sets the SSLParameters to use for this HttpsParameters.
* Sets the SSLParameters to use for this HttpsParameters.
* The parameters must be supported by the SSLContext contained
* The parameters must be supported by the SSLContext contained
...
@@ -79,6 +82,7 @@ public abstract class HttpsParameters {
...
@@ -79,6 +82,7 @@ public abstract class HttpsParameters {
* invalid or unsupported.
* invalid or unsupported.
*/
*/
public
abstract
void
setSSLParameters
(
SSLParameters
params
);
public
abstract
void
setSSLParameters
(
SSLParameters
params
);
//END_TIGER_EXCLUDE
/**
/**
* Returns a copy of the array of ciphersuites or null if none
* Returns a copy of the array of ciphersuites or null if none
...
...
src/share/classes/com/sun/rowset/RowSetResourceBundle.properties
浏览文件 @
a5e5d666
#
#
# Copyright (c) 2005, 20
06
, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2005, 20
10
, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
#
# This code is free software; you can redistribute it and/or modify it
# This code is free software; you can redistribute it and/or modify it
...
@@ -140,7 +140,7 @@ syncrsimpl.valtores = Value to be resolved can either be in the database or in c
...
@@ -140,7 +140,7 @@ syncrsimpl.valtores = Value to be resolved can either be in the database or in c
#WebRowSetXmlReader exception
#WebRowSetXmlReader exception
wrsxmlreader.invalidcp
=
End of RowSet reached. Invalid cursor position
wrsxmlreader.invalidcp
=
End of RowSet reached. Invalid cursor position
wrsxmlreader.readxml
=
readXML : {0}
wrsxmlreader.readxml
=
readXML : {0}
wrsxmlreader.parseerr
=
** Parsing Error : {0} , line : {
0} , uri : {0
}
wrsxmlreader.parseerr
=
** Parsing Error : {0} , line : {
1} , uri : {2
}
#WebRowSetXmlWriter exceptions
#WebRowSetXmlWriter exceptions
wrsxmlwriter.ioex
=
IOException : {0}
wrsxmlwriter.ioex
=
IOException : {0}
...
@@ -151,7 +151,7 @@ wsrxmlwriter.notproper = Not a proper type
...
@@ -151,7 +151,7 @@ wsrxmlwriter.notproper = Not a proper type
#XmlReaderContentHandler exceptions
#XmlReaderContentHandler exceptions
xmlrch.errmap
=
Error setting Map : {0}
xmlrch.errmap
=
Error setting Map : {0}
xmlrch.errmetadata
=
Error setting metadata : {0}
xmlrch.errmetadata
=
Error setting metadata : {0}
xmlrch.errinsert
=
Error inserting values : {0}
xmlrch.errinsert
val
=
Error inserting values : {0}
xmlrch.errconstr
=
Error constructing row : {0}
xmlrch.errconstr
=
Error constructing row : {0}
xmlrch.errdel
=
Error deleting row : {0}
xmlrch.errdel
=
Error deleting row : {0}
xmlrch.errinsert
=
Error constructing insert row : {0}
xmlrch.errinsert
=
Error constructing insert row : {0}
...
@@ -161,7 +161,7 @@ xmlrch.errupdrow = Error updating row : {0}
...
@@ -161,7 +161,7 @@ xmlrch.errupdrow = Error updating row : {0}
xmlrch.chars
=
characters :
xmlrch.chars
=
characters :
xmlrch.badvalue
=
Bad value ; non-nullable property
xmlrch.badvalue
=
Bad value ; non-nullable property
xmlrch.badvalue1
=
Bad value ; non-nullable metadata
xmlrch.badvalue1
=
Bad value ; non-nullable metadata
xmlrch.warning
=
** Warning : {0} , line : {
0} , uri : {0
}
xmlrch.warning
=
** Warning : {0} , line : {
1} , uri : {2
}
#RIOptimisticProvider Exceptions
#RIOptimisticProvider Exceptions
riop.locking
=
Locking classification is not supported
riop.locking
=
Locking classification is not supported
...
...
src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java
浏览文件 @
a5e5d666
...
@@ -738,7 +738,7 @@ public class XmlReaderContentHandler extends DefaultHandler {
...
@@ -738,7 +738,7 @@ public class XmlReaderContentHandler extends DefaultHandler {
// columnValue now need to be reset to the empty string
// columnValue now need to be reset to the empty string
columnValue
=
""
;
columnValue
=
""
;
}
catch
(
SQLException
ex
)
{
}
catch
(
SQLException
ex
)
{
throw
new
SAXException
(
MessageFormat
.
format
(
resBundle
.
handleGetObject
(
"xmlrch.errinsert"
).
toString
(),
ex
.
getMessage
()));
throw
new
SAXException
(
MessageFormat
.
format
(
resBundle
.
handleGetObject
(
"xmlrch.errinsert
val
"
).
toString
(),
ex
.
getMessage
()));
}
}
break
;
break
;
case
RowTag:
case
RowTag:
...
...
src/share/classes/java/awt/Color.java
浏览文件 @
a5e5d666
...
@@ -611,12 +611,15 @@ public class Color implements Paint, java.io.Serializable {
...
@@ -611,12 +611,15 @@ public class Color implements Paint, java.io.Serializable {
* <p>
* <p>
* This method applies an arbitrary scale factor to each of the three RGB
* This method applies an arbitrary scale factor to each of the three RGB
* components of this <code>Color</code> to create a brighter version
* components of this <code>Color</code> to create a brighter version
* of this <code>Color</code>. Although <code>brighter</code> and
* of this <code>Color</code>.
* The {@code alpha} value is preserved.
* Although <code>brighter</code> and
* <code>darker</code> are inverse operations, the results of a
* <code>darker</code> are inverse operations, the results of a
* series of invocations of these two methods might be inconsistent
* series of invocations of these two methods might be inconsistent
* because of rounding errors.
* because of rounding errors.
* @return a new <code>Color</code> object that is
* @return a new <code>Color</code> object that is
* a brighter version of this <code>Color</code>.
* a brighter version of this <code>Color</code>
* with the same {@code alpha} value.
* @see java.awt.Color#darker
* @see java.awt.Color#darker
* @since JDK1.0
* @since JDK1.0
*/
*/
...
@@ -624,6 +627,7 @@ public class Color implements Paint, java.io.Serializable {
...
@@ -624,6 +627,7 @@ public class Color implements Paint, java.io.Serializable {
int
r
=
getRed
();
int
r
=
getRed
();
int
g
=
getGreen
();
int
g
=
getGreen
();
int
b
=
getBlue
();
int
b
=
getBlue
();
int
alpha
=
getAlpha
();
/* From 2D group:
/* From 2D group:
* 1. black.brighter() should return grey
* 1. black.brighter() should return grey
...
@@ -632,7 +636,7 @@ public class Color implements Paint, java.io.Serializable {
...
@@ -632,7 +636,7 @@ public class Color implements Paint, java.io.Serializable {
*/
*/
int
i
=
(
int
)(
1.0
/(
1.0
-
FACTOR
));
int
i
=
(
int
)(
1.0
/(
1.0
-
FACTOR
));
if
(
r
==
0
&&
g
==
0
&&
b
==
0
)
{
if
(
r
==
0
&&
g
==
0
&&
b
==
0
)
{
return
new
Color
(
i
,
i
,
i
);
return
new
Color
(
i
,
i
,
i
,
alpha
);
}
}
if
(
r
>
0
&&
r
<
i
)
r
=
i
;
if
(
r
>
0
&&
r
<
i
)
r
=
i
;
if
(
g
>
0
&&
g
<
i
)
g
=
i
;
if
(
g
>
0
&&
g
<
i
)
g
=
i
;
...
@@ -640,7 +644,8 @@ public class Color implements Paint, java.io.Serializable {
...
@@ -640,7 +644,8 @@ public class Color implements Paint, java.io.Serializable {
return
new
Color
(
Math
.
min
((
int
)(
r
/
FACTOR
),
255
),
return
new
Color
(
Math
.
min
((
int
)(
r
/
FACTOR
),
255
),
Math
.
min
((
int
)(
g
/
FACTOR
),
255
),
Math
.
min
((
int
)(
g
/
FACTOR
),
255
),
Math
.
min
((
int
)(
b
/
FACTOR
),
255
));
Math
.
min
((
int
)(
b
/
FACTOR
),
255
),
alpha
);
}
}
/**
/**
...
@@ -649,19 +654,23 @@ public class Color implements Paint, java.io.Serializable {
...
@@ -649,19 +654,23 @@ public class Color implements Paint, java.io.Serializable {
* <p>
* <p>
* This method applies an arbitrary scale factor to each of the three RGB
* This method applies an arbitrary scale factor to each of the three RGB
* components of this <code>Color</code> to create a darker version of
* components of this <code>Color</code> to create a darker version of
* this <code>Color</code>. Although <code>brighter</code> and
* this <code>Color</code>.
* The {@code alpha} value is preserved.
* Although <code>brighter</code> and
* <code>darker</code> are inverse operations, the results of a series
* <code>darker</code> are inverse operations, the results of a series
* of invocations of these two methods might be inconsistent because
* of invocations of these two methods might be inconsistent because
* of rounding errors.
* of rounding errors.
* @return a new <code>Color</code> object that is
* @return a new <code>Color</code> object that is
* a darker version of this <code>Color</code>.
* a darker version of this <code>Color</code>
* with the same {@code alpha} value.
* @see java.awt.Color#brighter
* @see java.awt.Color#brighter
* @since JDK1.0
* @since JDK1.0
*/
*/
public
Color
darker
()
{
public
Color
darker
()
{
return
new
Color
(
Math
.
max
((
int
)(
getRed
()
*
FACTOR
),
0
),
return
new
Color
(
Math
.
max
((
int
)(
getRed
()
*
FACTOR
),
0
),
Math
.
max
((
int
)(
getGreen
()*
FACTOR
),
0
),
Math
.
max
((
int
)(
getGreen
()*
FACTOR
),
0
),
Math
.
max
((
int
)(
getBlue
()
*
FACTOR
),
0
));
Math
.
max
((
int
)(
getBlue
()
*
FACTOR
),
0
),
getAlpha
());
}
}
/**
/**
...
...
src/share/classes/java/awt/Container.java
浏览文件 @
a5e5d666
...
@@ -51,6 +51,7 @@ import javax.accessibility.*;
...
@@ -51,6 +51,7 @@ import javax.accessibility.*;
import
sun.util.logging.PlatformLogger
;
import
sun.util.logging.PlatformLogger
;
import
sun.awt.AppContext
;
import
sun.awt.AppContext
;
import
sun.awt.AWTAccessor
;
import
sun.awt.CausedFocusEvent
;
import
sun.awt.CausedFocusEvent
;
import
sun.awt.PeerEvent
;
import
sun.awt.PeerEvent
;
import
sun.awt.SunToolkit
;
import
sun.awt.SunToolkit
;
...
@@ -247,6 +248,13 @@ public class Container extends Component {
...
@@ -247,6 +248,13 @@ public class Container extends Component {
if
(!
GraphicsEnvironment
.
isHeadless
())
{
if
(!
GraphicsEnvironment
.
isHeadless
())
{
initIDs
();
initIDs
();
}
}
AWTAccessor
.
setContainerAccessor
(
new
AWTAccessor
.
ContainerAccessor
()
{
@Override
public
void
validateUnconditionally
(
Container
cont
)
{
cont
.
validateUnconditionally
();
}
});
}
}
/**
/**
...
...
src/share/classes/java/awt/Dialog.java
浏览文件 @
a5e5d666
...
@@ -1248,14 +1248,31 @@ public class Dialog extends Window {
...
@@ -1248,14 +1248,31 @@ public class Dialog extends Window {
/**
/**
* Disables or enables decorations for this dialog.
* Disables or enables decorations for this dialog.
* This method can only be called while the dialog is not displayable.
* <p>
* @param undecorated <code>true</code> if no dialog decorations are
* This method can only be called while the dialog is not displayable. To
* to be enabled;
* make this dialog decorated, it must be opaque and have the default shape,
* <code>false</code> if dialog decorations are to be enabled.
* otherwise the {@code IllegalComponentStateException} will be thrown.
* @throws <code>IllegalComponentStateException</code> if the dialog
* Refer to {@link Window#setShape}, {@link Window#setOpacity} and {@link
* is displayable.
* Window#setBackground} for details
*
* @param undecorated {@code true} if no dialog decorations are to be
* enabled; {@code false} if dialog decorations are to be enabled
*
* @throws IllegalComponentStateException if the dialog is displayable
* @throws IllegalComponentStateException if {@code undecorated} is
* {@code false}, and this dialog does not have the default shape
* @throws IllegalComponentStateException if {@code undecorated} is
* {@code false}, and this dialog opacity is less than {@code 1.0f}
* @throws IllegalComponentStateException if {@code undecorated} is
* {@code false}, and the alpha value of this dialog background
* color is less than {@code 1.0f}
*
* @see #isUndecorated
* @see #isUndecorated
* @see Component#isDisplayable
* @see Component#isDisplayable
* @see Window#getShape
* @see Window#getOpacity
* @see Window#getBackground
*
* @since 1.4
* @since 1.4
*/
*/
public
void
setUndecorated
(
boolean
undecorated
)
{
public
void
setUndecorated
(
boolean
undecorated
)
{
...
@@ -1264,6 +1281,18 @@ public class Dialog extends Window {
...
@@ -1264,6 +1281,18 @@ public class Dialog extends Window {
if
(
isDisplayable
())
{
if
(
isDisplayable
())
{
throw
new
IllegalComponentStateException
(
"The dialog is displayable."
);
throw
new
IllegalComponentStateException
(
"The dialog is displayable."
);
}
}
if
(!
undecorated
)
{
if
(
getOpacity
()
<
1.0f
)
{
throw
new
IllegalComponentStateException
(
"The dialog is not opaque"
);
}
if
(
getShape
()
!=
null
)
{
throw
new
IllegalComponentStateException
(
"The dialog does not have a default shape"
);
}
Color
bg
=
getBackground
();
if
((
bg
!=
null
)
&&
(
bg
.
getAlpha
()
<
255
))
{
throw
new
IllegalComponentStateException
(
"The dialog background color is not opaque"
);
}
}
this
.
undecorated
=
undecorated
;
this
.
undecorated
=
undecorated
;
}
}
}
}
...
@@ -1280,6 +1309,45 @@ public class Dialog extends Window {
...
@@ -1280,6 +1309,45 @@ public class Dialog extends Window {
return
undecorated
;
return
undecorated
;
}
}
/**
* {@inheritDoc}
*/
@Override
public
void
setOpacity
(
float
opacity
)
{
synchronized
(
getTreeLock
())
{
if
((
opacity
<
1.0f
)
&&
!
isUndecorated
())
{
throw
new
IllegalComponentStateException
(
"The dialog is decorated"
);
}
super
.
setOpacity
(
opacity
);
}
}
/**
* {@inheritDoc}
*/
@Override
public
void
setShape
(
Shape
shape
)
{
synchronized
(
getTreeLock
())
{
if
((
shape
!=
null
)
&&
!
isUndecorated
())
{
throw
new
IllegalComponentStateException
(
"The dialog is decorated"
);
}
super
.
setShape
(
shape
);
}
}
/**
* {@inheritDoc}
*/
@Override
public
void
setBackground
(
Color
bgColor
)
{
synchronized
(
getTreeLock
())
{
if
((
bgColor
!=
null
)
&&
(
bgColor
.
getAlpha
()
<
255
)
&&
!
isUndecorated
())
{
throw
new
IllegalComponentStateException
(
"The dialog is decorated"
);
}
super
.
setBackground
(
bgColor
);
}
}
/**
/**
* Returns a string representing the state of this dialog. This
* Returns a string representing the state of this dialog. This
* method is intended to be used only for debugging purposes, and the
* method is intended to be used only for debugging purposes, and the
...
...
src/share/classes/java/awt/FileDialog.java
浏览文件 @
a5e5d666
...
@@ -99,7 +99,7 @@ public class FileDialog extends Dialog {
...
@@ -99,7 +99,7 @@ public class FileDialog extends Dialog {
* Contains the File instances for all the files that the user selects.
* Contains the File instances for all the files that the user selects.
*
*
* @serial
* @serial
* @see getFiles
* @see
#
getFiles
* @since 1.7
* @since 1.7
*/
*/
private
File
[]
files
;
private
File
[]
files
;
...
...
src/share/classes/java/awt/Frame.java
浏览文件 @
a5e5d666
...
@@ -828,6 +828,11 @@ public class Frame extends Window implements MenuContainer {
...
@@ -828,6 +828,11 @@ public class Frame extends Window implements MenuContainer {
return
frame
.
state
;
return
frame
.
state
;
}
}
}
}
public
Rectangle
getMaximizedBounds
(
Frame
frame
)
{
synchronized
(
frame
.
getObjectLock
())
{
return
frame
.
maximizedBounds
;
}
}
}
}
);
);
}
}
...
@@ -855,8 +860,10 @@ public class Frame extends Window implements MenuContainer {
...
@@ -855,8 +860,10 @@ public class Frame extends Window implements MenuContainer {
* @see #getMaximizedBounds()
* @see #getMaximizedBounds()
* @since 1.4
* @since 1.4
*/
*/
public
synchronized
void
setMaximizedBounds
(
Rectangle
bounds
)
{
public
void
setMaximizedBounds
(
Rectangle
bounds
)
{
this
.
maximizedBounds
=
bounds
;
synchronized
(
getObjectLock
())
{
this
.
maximizedBounds
=
bounds
;
}
FramePeer
peer
=
(
FramePeer
)
this
.
peer
;
FramePeer
peer
=
(
FramePeer
)
this
.
peer
;
if
(
peer
!=
null
)
{
if
(
peer
!=
null
)
{
peer
.
setMaximizedBounds
(
bounds
);
peer
.
setMaximizedBounds
(
bounds
);
...
@@ -873,21 +880,40 @@ public class Frame extends Window implements MenuContainer {
...
@@ -873,21 +880,40 @@ public class Frame extends Window implements MenuContainer {
* @since 1.4
* @since 1.4
*/
*/
public
Rectangle
getMaximizedBounds
()
{
public
Rectangle
getMaximizedBounds
()
{
return
maximizedBounds
;
synchronized
(
getObjectLock
())
{
return
maximizedBounds
;
}
}
}
/**
/**
* Disables or enables decorations for this frame.
* Disables or enables decorations for this frame.
* This method can only be called while the frame is not displayable.
* <p>
* @param undecorated <code>true</code> if no frame decorations are
* This method can only be called while the frame is not displayable. To
* to be enabled;
* make this frame decorated, it must be opaque and have the default shape,
* <code>false</code> if frame decorations are to be enabled.
* otherwise the {@code IllegalComponentStateException} will be thrown.
* @throws <code>IllegalComponentStateException</code> if the frame
* Refer to {@link Window#setShape}, {@link Window#setOpacity} and {@link
* is displayable.
* Window#setBackground} for details
*
* @param undecorated {@code true} if no frame decorations are to be
* enabled; {@code false} if frame decorations are to be enabled
*
* @throws IllegalComponentStateException if the frame is displayable
* @throws IllegalComponentStateException if {@code undecorated} is
* {@code false}, and this frame does not have the default shape
* @throws IllegalComponentStateException if {@code undecorated} is
* {@code false}, and this frame opacity is less than {@code 1.0f}
* @throws IllegalComponentStateException if {@code undecorated} is
* {@code false}, and the alpha value of this frame background
* color is less than {@code 1.0f}
*
* @see #isUndecorated
* @see #isUndecorated
* @see Component#isDisplayable
* @see Component#isDisplayable
* @see Window#getShape
* @see Window#getOpacity
* @see Window#getBackground
* @see javax.swing.JFrame#setDefaultLookAndFeelDecorated(boolean)
* @see javax.swing.JFrame#setDefaultLookAndFeelDecorated(boolean)
*
* @since 1.4
* @since 1.4
*/
*/
public
void
setUndecorated
(
boolean
undecorated
)
{
public
void
setUndecorated
(
boolean
undecorated
)
{
...
@@ -896,6 +922,18 @@ public class Frame extends Window implements MenuContainer {
...
@@ -896,6 +922,18 @@ public class Frame extends Window implements MenuContainer {
if
(
isDisplayable
())
{
if
(
isDisplayable
())
{
throw
new
IllegalComponentStateException
(
"The frame is displayable."
);
throw
new
IllegalComponentStateException
(
"The frame is displayable."
);
}
}
if
(!
undecorated
)
{
if
(
getOpacity
()
<
1.0f
)
{
throw
new
IllegalComponentStateException
(
"The frame is not opaque"
);
}
if
(
getShape
()
!=
null
)
{
throw
new
IllegalComponentStateException
(
"The frame does not have a default shape"
);
}
Color
bg
=
getBackground
();
if
((
bg
!=
null
)
&&
(
bg
.
getAlpha
()
<
255
))
{
throw
new
IllegalComponentStateException
(
"The frame background color is not opaque"
);
}
}
this
.
undecorated
=
undecorated
;
this
.
undecorated
=
undecorated
;
}
}
}
}
...
@@ -912,6 +950,45 @@ public class Frame extends Window implements MenuContainer {
...
@@ -912,6 +950,45 @@ public class Frame extends Window implements MenuContainer {
return
undecorated
;
return
undecorated
;
}
}
/**
* {@inheritDoc}
*/
@Override
public
void
setOpacity
(
float
opacity
)
{
synchronized
(
getTreeLock
())
{
if
((
opacity
<
1.0f
)
&&
!
isUndecorated
())
{
throw
new
IllegalComponentStateException
(
"The frame is decorated"
);
}
super
.
setOpacity
(
opacity
);
}
}
/**
* {@inheritDoc}
*/
@Override
public
void
setShape
(
Shape
shape
)
{
synchronized
(
getTreeLock
())
{
if
((
shape
!=
null
)
&&
!
isUndecorated
())
{
throw
new
IllegalComponentStateException
(
"The frame is decorated"
);
}
super
.
setShape
(
shape
);
}
}
/**
* {@inheritDoc}
*/
@Override
public
void
setBackground
(
Color
bgColor
)
{
synchronized
(
getTreeLock
())
{
if
((
bgColor
!=
null
)
&&
(
bgColor
.
getAlpha
()
<
255
)
&&
!
isUndecorated
())
{
throw
new
IllegalComponentStateException
(
"The frame is decorated"
);
}
super
.
setBackground
(
bgColor
);
}
}
/**
/**
* Removes the specified menu bar from this frame.
* Removes the specified menu bar from this frame.
* @param m the menu component to remove.
* @param m the menu component to remove.
...
...
src/share/classes/java/awt/Window.java
浏览文件 @
a5e5d666
...
@@ -3474,14 +3474,20 @@ public class Window extends Container implements Accessible {
...
@@ -3474,14 +3474,20 @@ public class Window extends Container implements Accessible {
* level of 0 may or may not disable the mouse event handling on this
* level of 0 may or may not disable the mouse event handling on this
* window. This is a platform-dependent behavior.
* window. This is a platform-dependent behavior.
* <p>
* <p>
* In order for this method to enable the translucency effect, the {@link
* The following conditions must be met in order to set the opacity value
* GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)} method must indicate that
* less than {@code 1.0f}:
* the {@link GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
* <ul>
* translucency is supported.
* <li>The {@link GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
* translucency must be supported by the underlying system
* <li>The window must be undecorated (see {@link Frame#setUndecorated}
* and {@link Dialog#setUndecorated})
* <li>The window must not be in full-screen mode (see {@link
* GraphicsDevice#setFullScreenWindow(Window)})
* </ul>
* <p>
* <p>
*
Also note that the window must not be in the full-screen mode when
*
If the requested opacity value is less than {@code 1.0f}, and any of the
*
setting the opacity value < 1.0f. Otherwise the {@code
*
above conditions are not met, the window opacity will not change,
*
IllegalComponentStateException} is
thrown.
*
and the {@code IllegalComponentStateException} will be
thrown.
* <p>
* <p>
* The translucency levels of individual pixels may also be effected by the
* The translucency levels of individual pixels may also be effected by the
* alpha component of their color (see {@link Window#setBackground(Color)}) and the
* alpha component of their color (see {@link Window#setBackground(Color)}) and the
...
@@ -3491,15 +3497,20 @@ public class Window extends Container implements Accessible {
...
@@ -3491,15 +3497,20 @@ public class Window extends Container implements Accessible {
*
*
* @throws IllegalArgumentException if the opacity is out of the range
* @throws IllegalArgumentException if the opacity is out of the range
* [0..1]
* [0..1]
* @throws IllegalComponentStateException if the window is decorated and
* the opacity is less than {@code 1.0f}
* @throws IllegalComponentStateException if the window is in full screen
* @throws IllegalComponentStateException if the window is in full screen
* mode, and the opacity is less than
1.0f
* mode, and the opacity is less than
{@code 1.0f}
* @throws UnsupportedOperationException if the {@code
* @throws UnsupportedOperationException if the {@code
* GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
* GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
* translucency kind is not supported and the opacity is less than 1.0f
* translucency is not supported and the opacity is less than
* {@code 1.0f}
*
*
* @see Window#getOpacity
* @see Window#getOpacity
* @see Window#setBackground(Color)
* @see Window#setBackground(Color)
* @see Window#setShape(Shape)
* @see Window#setShape(Shape)
* @see Frame#isUndecorated
* @see Dialog#isUndecorated
* @see GraphicsDevice.WindowTranslucency
* @see GraphicsDevice.WindowTranslucency
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
*
*
...
@@ -3557,24 +3568,26 @@ public class Window extends Container implements Accessible {
...
@@ -3557,24 +3568,26 @@ public class Window extends Container implements Accessible {
/**
/**
* Sets the shape of the window.
* Sets the shape of the window.
* <p>
* <p>
* Setting a shape enables cutting off some parts of the window, leaving
* Setting a shape cuts off some parts of the window. Only the parts that
* visible and clickable only those parts belonging to the given shape
* belong to the given {@link Shape} remain visible and clickable. If
* (see {@link Shape}). If the shape argument is null, this methods
* the shape argument is {@code null}, this method restores the default
* restores the default shape (making the window rectangular on most
* shape, making the window rectangular on most platforms.
* platforms.)
* <p>
* <p>
* The following conditions must be met
in order
to set a non-null shape:
* The following conditions must be met to set a non-null shape:
* <ul>
* <ul>
* <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
* <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
* PERPIXEL_TRANSPARENT} translucency
kind
must be supported by the
* PERPIXEL_TRANSPARENT} translucency must be supported by the
* underlying system
* underlying system
* <i>and</i>
* <li>The window must be undecorated (see {@link Frame#setUndecorated}
* <li>The window must not be in the full-screen mode (see
* and {@link Dialog#setUndecorated})
* {@link GraphicsDevice#setFullScreenWindow(Window)})
* <li>The window must not be in full-screen mode (see {@link
* GraphicsDevice#setFullScreenWindow(Window)})
* </ul>
* </ul>
* If a certain condition is not met, either the {@code
* <p>
* UnsupportedOperationException} or {@code IllegalComponentStateException}
* If the requested shape is not {@code null}, and any of the above
* is thrown.
* conditions are not met, the shape of this window will not change,
* and either the {@code UnsupportedOperationException} or {@code
* IllegalComponentStateException} will be thrown.
* <p>
* <p>
* The tranlucency levels of individual pixels may also be effected by the
* The tranlucency levels of individual pixels may also be effected by the
* alpha component of their color (see {@link Window#setBackground(Color)}) and the
* alpha component of their color (see {@link Window#setBackground(Color)}) and the
...
@@ -3584,6 +3597,8 @@ public class Window extends Container implements Accessible {
...
@@ -3584,6 +3597,8 @@ public class Window extends Container implements Accessible {
* @param shape the shape to set to the window
* @param shape the shape to set to the window
*
*
* @throws IllegalComponentStateException if the shape is not {@code
* @throws IllegalComponentStateException if the shape is not {@code
* null} and the window is decorated
* @throws IllegalComponentStateException if the shape is not {@code
* null} and the window is in full-screen mode
* null} and the window is in full-screen mode
* @throws UnsupportedOperationException if the shape is not {@code
* @throws UnsupportedOperationException if the shape is not {@code
* null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
* null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
...
@@ -3592,6 +3607,8 @@ public class Window extends Container implements Accessible {
...
@@ -3592,6 +3607,8 @@ public class Window extends Container implements Accessible {
* @see Window#getShape()
* @see Window#getShape()
* @see Window#setBackground(Color)
* @see Window#setBackground(Color)
* @see Window#setOpacity(float)
* @see Window#setOpacity(float)
* @see Frame#isUndecorated
* @see Dialog#isUndecorated
* @see GraphicsDevice.WindowTranslucency
* @see GraphicsDevice.WindowTranslucency
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
*
*
...
@@ -3645,37 +3662,46 @@ public class Window extends Container implements Accessible {
...
@@ -3645,37 +3662,46 @@ public class Window extends Container implements Accessible {
* GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}
* GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}
* tranclucency, the alpha component of the given background color
* tranclucency, the alpha component of the given background color
* may effect the mode of operation for this window: it indicates whether
* may effect the mode of operation for this window: it indicates whether
* this window must be opaque (alpha == 1.0f) or per-pixel translucent
* this window must be opaque (alpha equals {@code 1.0f}) or per-pixel translucent
* (alpha < 1.0f). All the following conditions must be met in order
* (alpha is less than {@code 1.0f}). If the given background color is
* to be able to enable the per-pixel transparency mode for this window:
* {@code null}, the window is considered completely opaque.
* <p>
* All the following conditions must be met to enable the per-pixel
* transparency mode for this window:
* <ul>
* <ul>
* <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
* <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
* PERPIXEL_TRANSLUCENT} translucency must be supported
* PERPIXEL_TRANSLUCENT} translucency must be supported by the graphics
* by the graphics device where this window is located <i>and</i>
* device where this window is located
* <li>The window must not be in the full-screen mode (see {@link
* <li>The window must be undecorated (see {@link Frame#setUndecorated}
* and {@link Dialog#setUndecorated})
* <li>The window must not be in full-screen mode (see {@link
* GraphicsDevice#setFullScreenWindow(Window)})
* GraphicsDevice#setFullScreenWindow(Window)})
* </ul>
* </ul>
* If a certain condition is not met at the time of calling this method,
* <p>
* the alpha component of the given background color will not effect the
* If the alpha component of the requested background color is less than
* mode of operation for this window.
* {@code 1.0f}, and any of the above conditions are not met, the background
* color of this window will not change, the alpha component of the given
* background color will not affect the mode of operation for this window,
* and either the {@code UnsupportedOperationException} or {@code
* IllegalComponentStateException} will be thrown.
* <p>
* <p>
* When the window is per-pixel translucent, the drawing sub-system
* When the window is per-pixel translucent, the drawing sub-system
* respects the alpha value of each individual pixel. If a pixel gets
* respects the alpha value of each individual pixel. If a pixel gets
* painted with the alpha color component equal to zero, it becomes
* painted with the alpha color component equal to zero, it becomes
* visually transparent
, i
f the alpha of the pixel is equal to 1.0f, the
* visually transparent
. I
f the alpha of the pixel is equal to 1.0f, the
* pixel is fully opaque. Interim values of the alpha color component make
* pixel is fully opaque. Interim values of the alpha color component make
* the pixel semi-transparent. In this mode the background of the window
* the pixel semi-transparent. In this mode
,
the background of the window
* gets painted with the alpha value of the given background color
(meaning
* gets painted with the alpha value of the given background color
. If the
*
that it is not painted at all if the alpha value of the argument of this
*
alpha value of the argument of this method is equal to {@code 0}, the
*
method is equal to zero.)
*
background is not painted at all.
* <p>
* <p>
* The actual level of translucency of a given pixel also depends on window
* The actual level of translucency of a given pixel also depends on window
* opacity (see {@link #setOpacity(float)}), as well as the current shape of
* opacity (see {@link #setOpacity(float)}), as well as the current shape of
* this window (see {@link #setShape(Shape)}).
* this window (see {@link #setShape(Shape)}).
* <p>
* <p>
* Note that painting a pixel with the alpha value of
0 may or may not
* Note that painting a pixel with the alpha value of
{@code 0} may or may
* disable the mouse event handling on this pixel. This is a
*
not
disable the mouse event handling on this pixel. This is a
* platform-dependent behavior. To make sure the mouse
click
s do not get
* platform-dependent behavior. To make sure the mouse
event
s do not get
* dispatched to a particular pixel, the pixel must be excluded from the
* dispatched to a particular pixel, the pixel must be excluded from the
* shape of the window.
* shape of the window.
* <p>
* <p>
...
@@ -3685,17 +3711,21 @@ public class Window extends Container implements Accessible {
...
@@ -3685,17 +3711,21 @@ public class Window extends Container implements Accessible {
* @param bgColor the color to become this window's background color.
* @param bgColor the color to become this window's background color.
*
*
* @throws IllegalComponentStateException if the alpha value of the given
* @throws IllegalComponentStateException if the alpha value of the given
* background color is less than 1.0f and the window is in
* background color is less than {@code 1.0f} and the window is decorated
* @throws IllegalComponentStateException if the alpha value of the given
* background color is less than {@code 1.0f} and the window is in
* full-screen mode
* full-screen mode
* @throws UnsupportedOperationException if the alpha value of the given
* @throws UnsupportedOperationException if the alpha value of the given
* background color is less than
1.0f and
* background color is less than
{@code 1.0f} and {@link
*
{@link
GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
* GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
* PERPIXEL_TRANSLUCENT} translucency is not supported
* PERPIXEL_TRANSLUCENT} translucency is not supported
*
*
* @see Window#getBackground
* @see Window#getBackground
* @see Window#isOpaque
* @see Window#isOpaque
* @see Window#setOpacity(float)
* @see Window#setOpacity(float)
* @see Window#setShape(Shape)
* @see Window#setShape(Shape)
* @see Frame#isUndecorated
* @see Dialog#isUndecorated
* @see GraphicsDevice.WindowTranslucency
* @see GraphicsDevice.WindowTranslucency
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
* @see GraphicsConfiguration#isTranslucencyCapable()
* @see GraphicsConfiguration#isTranslucencyCapable()
...
@@ -3739,7 +3769,7 @@ public class Window extends Container implements Accessible {
...
@@ -3739,7 +3769,7 @@ public class Window extends Container implements Accessible {
* <p>
* <p>
* The method returns {@code false} if the background color of the window
* The method returns {@code false} if the background color of the window
* is not {@code null} and the alpha component of the color is less than
* is not {@code null} and the alpha component of the color is less than
*
1.0f
. The method returns {@code true} otherwise.
*
{@code 1.0f}
. The method returns {@code true} otherwise.
*
*
* @return {@code true} if the window is opaque, {@code false} otherwise
* @return {@code true} if the window is opaque, {@code false} otherwise
*
*
...
...
src/share/classes/java/io/BufferedInputStream.java
浏览文件 @
a5e5d666
...
@@ -395,7 +395,11 @@ class BufferedInputStream extends FilterInputStream {
...
@@ -395,7 +395,11 @@ class BufferedInputStream extends FilterInputStream {
* or an I/O error occurs.
* or an I/O error occurs.
*/
*/
public
synchronized
int
available
()
throws
IOException
{
public
synchronized
int
available
()
throws
IOException
{
return
getInIfOpen
().
available
()
+
(
count
-
pos
);
int
n
=
count
-
pos
;
int
avail
=
getInIfOpen
().
available
();
return
n
>
(
Integer
.
MAX_VALUE
-
avail
)
?
Integer
.
MAX_VALUE
:
n
+
avail
;
}
}
/**
/**
...
...
src/share/classes/java/io/PushbackInputStream.java
浏览文件 @
a5e5d666
...
@@ -273,7 +273,11 @@ class PushbackInputStream extends FilterInputStream {
...
@@ -273,7 +273,11 @@ class PushbackInputStream extends FilterInputStream {
*/
*/
public
int
available
()
throws
IOException
{
public
int
available
()
throws
IOException
{
ensureOpen
();
ensureOpen
();
return
(
buf
.
length
-
pos
)
+
super
.
available
();
int
n
=
buf
.
length
-
pos
;
int
avail
=
super
.
available
();
return
n
>
(
Integer
.
MAX_VALUE
-
avail
)
?
Integer
.
MAX_VALUE
:
n
+
avail
;
}
}
/**
/**
...
...
src/share/classes/java/lang/Readable.java
浏览文件 @
a5e5d666
...
@@ -44,11 +44,11 @@ public interface Readable {
...
@@ -44,11 +44,11 @@ public interface Readable {
* rewinding of the buffer is performed.
* rewinding of the buffer is performed.
*
*
* @param cb the buffer to read characters into
* @param cb the buffer to read characters into
* @return
@return The number of <tt>char</tt>
values added to the buffer,
* @return
The number of {@code char}
values added to the buffer,
* or -1 if this source of characters is at its end
* or -1 if this source of characters is at its end
* @throws IOException if an I/O error occurs
* @throws IOException if an I/O error occurs
* @throws NullPointerException if cb is null
* @throws NullPointerException if cb is null
* @throws ReadOnlyBufferException if cb is a read only buffer
* @throws
java.nio.
ReadOnlyBufferException if cb is a read only buffer
*/
*/
public
int
read
(
java
.
nio
.
CharBuffer
cb
)
throws
IOException
;
public
int
read
(
java
.
nio
.
CharBuffer
cb
)
throws
IOException
;
...
...
src/share/classes/java/nio/StringCharBuffer.java
浏览文件 @
a5e5d666
...
@@ -47,7 +47,7 @@ class StringCharBuffer // package-private
...
@@ -47,7 +47,7 @@ class StringCharBuffer // package-private
0
,
0
,
this
.
remaining
(),
this
.
remaining
(),
this
.
remaining
(),
this
.
remaining
(),
this
.
position
());
offset
+
this
.
position
());
}
}
private
StringCharBuffer
(
CharSequence
s
,
private
StringCharBuffer
(
CharSequence
s
,
...
...
src/share/classes/java/nio/channels/AsynchronousSocketChannel.java
浏览文件 @
a5e5d666
...
@@ -110,7 +110,8 @@ import java.nio.ByteBuffer;
...
@@ -110,7 +110,8 @@ import java.nio.ByteBuffer;
* state of the {@link ByteBuffer}, or the sequence of buffers, for the I/O
* state of the {@link ByteBuffer}, or the sequence of buffers, for the I/O
* operation is not defined. Buffers should be discarded or at least care must
* operation is not defined. Buffers should be discarded or at least care must
* be taken to ensure that the buffers are not accessed while the channel remains
* be taken to ensure that the buffers are not accessed while the channel remains
* open.
* open. All methods that accept timeout parameters treat values less than or
* equal to zero to mean that the I/O operation does not timeout.
*
*
* @since 1.7
* @since 1.7
*/
*/
...
@@ -367,7 +368,7 @@ public abstract class AsynchronousSocketChannel
...
@@ -367,7 +368,7 @@ public abstract class AsynchronousSocketChannel
* @param dst
* @param dst
* The buffer into which bytes are to be transferred
* The buffer into which bytes are to be transferred
* @param timeout
* @param timeout
* The
timeout, or {@code 0L} for no timeout
* The
maximum time for the I/O operation to complete
* @param unit
* @param unit
* The time unit of the {@code timeout} argument
* The time unit of the {@code timeout} argument
* @param attachment
* @param attachment
...
@@ -376,8 +377,7 @@ public abstract class AsynchronousSocketChannel
...
@@ -376,8 +377,7 @@ public abstract class AsynchronousSocketChannel
* The handler for consuming the result
* The handler for consuming the result
*
*
* @throws IllegalArgumentException
* @throws IllegalArgumentException
* If the {@code timeout} parameter is negative or the buffer is
* If the buffer is read-only
* read-only
* @throws ReadPendingException
* @throws ReadPendingException
* If a read operation is already in progress on this channel
* If a read operation is already in progress on this channel
* @throws NotYetConnectedException
* @throws NotYetConnectedException
...
@@ -471,7 +471,7 @@ public abstract class AsynchronousSocketChannel
...
@@ -471,7 +471,7 @@ public abstract class AsynchronousSocketChannel
* The maximum number of buffers to be accessed; must be non-negative
* The maximum number of buffers to be accessed; must be non-negative
* and no larger than {@code dsts.length - offset}
* and no larger than {@code dsts.length - offset}
* @param timeout
* @param timeout
* The
timeout, or {@code 0L} for no timeout
* The
maximum time for the I/O operation to complete
* @param unit
* @param unit
* The time unit of the {@code timeout} argument
* The time unit of the {@code timeout} argument
* @param attachment
* @param attachment
...
@@ -483,8 +483,7 @@ public abstract class AsynchronousSocketChannel
...
@@ -483,8 +483,7 @@ public abstract class AsynchronousSocketChannel
* If the pre-conditions for the {@code offset} and {@code length}
* If the pre-conditions for the {@code offset} and {@code length}
* parameter aren't met
* parameter aren't met
* @throws IllegalArgumentException
* @throws IllegalArgumentException
* If the {@code timeout} parameter is negative, or a buffer is
* If the buffer is read-only
* read-only
* @throws ReadPendingException
* @throws ReadPendingException
* If a read operation is already in progress on this channel
* If a read operation is already in progress on this channel
* @throws NotYetConnectedException
* @throws NotYetConnectedException
...
@@ -524,7 +523,7 @@ public abstract class AsynchronousSocketChannel
...
@@ -524,7 +523,7 @@ public abstract class AsynchronousSocketChannel
* @param src
* @param src
* The buffer from which bytes are to be retrieved
* The buffer from which bytes are to be retrieved
* @param timeout
* @param timeout
* The
timeout, or {@code 0L} for no timeout
* The
maximum time for the I/O operation to complete
* @param unit
* @param unit
* The time unit of the {@code timeout} argument
* The time unit of the {@code timeout} argument
* @param attachment
* @param attachment
...
@@ -532,8 +531,6 @@ public abstract class AsynchronousSocketChannel
...
@@ -532,8 +531,6 @@ public abstract class AsynchronousSocketChannel
* @param handler
* @param handler
* The handler for consuming the result
* The handler for consuming the result
*
*
* @throws IllegalArgumentException
* If the {@code timeout} parameter is negative
* @throws WritePendingException
* @throws WritePendingException
* If a write operation is already in progress on this channel
* If a write operation is already in progress on this channel
* @throws NotYetConnectedException
* @throws NotYetConnectedException
...
@@ -623,7 +620,7 @@ public abstract class AsynchronousSocketChannel
...
@@ -623,7 +620,7 @@ public abstract class AsynchronousSocketChannel
* The maximum number of buffers to be accessed; must be non-negative
* The maximum number of buffers to be accessed; must be non-negative
* and no larger than {@code srcs.length - offset}
* and no larger than {@code srcs.length - offset}
* @param timeout
* @param timeout
* The
timeout, or {@code 0L} for no timeout
* The
maximum time for the I/O operation to complete
* @param unit
* @param unit
* The time unit of the {@code timeout} argument
* The time unit of the {@code timeout} argument
* @param attachment
* @param attachment
...
@@ -634,8 +631,6 @@ public abstract class AsynchronousSocketChannel
...
@@ -634,8 +631,6 @@ public abstract class AsynchronousSocketChannel
* @throws IndexOutOfBoundsException
* @throws IndexOutOfBoundsException
* If the pre-conditions for the {@code offset} and {@code length}
* If the pre-conditions for the {@code offset} and {@code length}
* parameter aren't met
* parameter aren't met
* @throws IllegalArgumentException
* If the {@code timeout} parameter is negative
* @throws WritePendingException
* @throws WritePendingException
* If a write operation is already in progress on this channel
* If a write operation is already in progress on this channel
* @throws NotYetConnectedException
* @throws NotYetConnectedException
...
...
src/share/classes/java/sql/SQLPermission.java
浏览文件 @
a5e5d666
...
@@ -84,7 +84,7 @@ import java.security.*;
...
@@ -84,7 +84,7 @@ import java.security.*;
* {@code setJNDIContext} and {@code setLogger}</td>
* {@code setJNDIContext} and {@code setLogger}</td>
* <td>Permits an application to specify the JNDI context from which the
* <td>Permits an application to specify the JNDI context from which the
* {@code SyncProvider} implementations can be retrieved from and the logging
* {@code SyncProvider} implementations can be retrieved from and the logging
* object to be used by the
{@code
SyncProvider} implementation.</td>
* object to be used by the
{@code
SyncProvider} implementation.</td>
* </tr>
* </tr>
*
*
* <tr>
* <tr>
...
...
src/share/classes/java/util/Formatter.java
浏览文件 @
a5e5d666
...
@@ -1581,6 +1581,7 @@ import sun.misc.FormattedFloatingDecimal;
...
@@ -1581,6 +1581,7 @@ import sun.misc.FormattedFloatingDecimal;
* instance of the Java virtual machine.
* instance of the Java virtual machine.
*
*
* <tr><td valign="top">{@code 'Z'}
* <tr><td valign="top">{@code 'Z'}
* <td valign="top"> <tt>'\u005a'</tt>
* <td> A string representing the abbreviation for the time zone. This
* <td> A string representing the abbreviation for the time zone. This
* value will be adjusted as necessary for Daylight Saving Time. For
* value will be adjusted as necessary for Daylight Saving Time. For
* {@code long}, {@link Long}, and {@link Date} the time zone used is
* {@code long}, {@link Long}, and {@link Date} the time zone used is
...
...
src/share/classes/javax/security/auth/Policy.java
浏览文件 @
a5e5d666
...
@@ -25,6 +25,9 @@
...
@@ -25,6 +25,9 @@
package
javax.security.auth
;
package
javax.security.auth
;
import
java.security.Security
;
import
sun.security.util.Debug
;
/**
/**
* <p> This is an abstract class for representing the system policy for
* <p> This is an abstract class for representing the system policy for
* Subject-based authorization. A subclass implementation
* Subject-based authorization. A subclass implementation
...
@@ -159,6 +162,10 @@ public abstract class Policy {
...
@@ -159,6 +162,10 @@ public abstract class Policy {
private
static
Policy
policy
;
private
static
Policy
policy
;
private
static
ClassLoader
contextClassLoader
;
private
static
ClassLoader
contextClassLoader
;
// true if a custom (not com.sun.security.auth.PolicyFile) system-wide
// policy object is set
private
static
boolean
isCustomPolicy
;
static
{
static
{
contextClassLoader
=
java
.
security
.
AccessController
.
doPrivileged
contextClassLoader
=
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
<
ClassLoader
>()
{
(
new
java
.
security
.
PrivilegedAction
<
ClassLoader
>()
{
...
@@ -234,6 +241,8 @@ public abstract class Policy {
...
@@ -234,6 +241,8 @@ public abstract class Policy {
contextClassLoader
).
newInstance
();
contextClassLoader
).
newInstance
();
}
}
});
});
isCustomPolicy
=
!
finalClass
.
equals
(
"com.sun.security.auth.PolicyFile"
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
SecurityException
throw
new
SecurityException
(
sun
.
security
.
util
.
ResourcesMgr
.
getString
(
sun
.
security
.
util
.
ResourcesMgr
.
getString
...
@@ -265,6 +274,46 @@ public abstract class Policy {
...
@@ -265,6 +274,46 @@ public abstract class Policy {
java
.
lang
.
SecurityManager
sm
=
System
.
getSecurityManager
();
java
.
lang
.
SecurityManager
sm
=
System
.
getSecurityManager
();
if
(
sm
!=
null
)
sm
.
checkPermission
(
new
AuthPermission
(
"setPolicy"
));
if
(
sm
!=
null
)
sm
.
checkPermission
(
new
AuthPermission
(
"setPolicy"
));
Policy
.
policy
=
policy
;
Policy
.
policy
=
policy
;
// all non-null policy objects are assumed to be custom
isCustomPolicy
=
policy
!=
null
?
true
:
false
;
}
/**
* Returns true if a custom (not com.sun.security.auth.PolicyFile)
* system-wide policy object has been set or installed. This method is
* called by SubjectDomainCombiner to provide backwards compatibility for
* developers that provide their own javax.security.auth.Policy
* implementations.
*
* @return true if a custom (not com.sun.security.auth.PolicyFile)
* system-wide policy object has been set; false otherwise
*/
static
boolean
isCustomPolicySet
(
Debug
debug
)
{
if
(
policy
!=
null
)
{
if
(
debug
!=
null
&&
isCustomPolicy
)
{
debug
.
println
(
"Providing backwards compatibility for "
+
"javax.security.auth.policy implementation: "
+
policy
.
toString
());
}
return
isCustomPolicy
;
}
// check if custom policy has been set using auth.policy.provider prop
String
policyClass
=
java
.
security
.
AccessController
.
doPrivileged
(
new
java
.
security
.
PrivilegedAction
<
String
>()
{
public
String
run
()
{
return
Security
.
getProperty
(
"auth.policy.provider"
);
}
});
if
(
policyClass
!=
null
&&
!
policyClass
.
equals
(
"com.sun.security.auth.PolicyFile"
))
{
if
(
debug
!=
null
)
{
debug
.
println
(
"Providing backwards compatibility for "
+
"javax.security.auth.policy implementation: "
+
policyClass
);
}
return
true
;
}
return
false
;
}
}
/**
/**
...
...
src/share/classes/javax/security/auth/SubjectDomainCombiner.java
浏览文件 @
a5e5d666
/*
/*
* Copyright (c) 1999, 20
07
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 20
10
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -26,8 +26,6 @@
...
@@ -26,8 +26,6 @@
package
javax.security.auth
;
package
javax.security.auth
;
import
java.security.AccessController
;
import
java.security.AccessController
;
import
java.security.AccessControlContext
;
import
java.security.AllPermission
;
import
java.security.Permission
;
import
java.security.Permission
;
import
java.security.Permissions
;
import
java.security.Permissions
;
import
java.security.PermissionCollection
;
import
java.security.PermissionCollection
;
...
@@ -35,10 +33,8 @@ import java.security.Policy;
...
@@ -35,10 +33,8 @@ import java.security.Policy;
import
java.security.Principal
;
import
java.security.Principal
;
import
java.security.PrivilegedAction
;
import
java.security.PrivilegedAction
;
import
java.security.ProtectionDomain
;
import
java.security.ProtectionDomain
;
import
java.lang.ClassLoader
;
import
java.security.Security
;
import
java.security.Security
;
import
java.util.Set
;
import
java.util.Set
;
import
java.util.Iterator
;
import
java.util.WeakHashMap
;
import
java.util.WeakHashMap
;
import
java.lang.ref.WeakReference
;
import
java.lang.ref.WeakReference
;
...
@@ -61,7 +57,8 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
...
@@ -61,7 +57,8 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
"\t[SubjectDomainCombiner]"
);
"\t[SubjectDomainCombiner]"
);
// Note: check only at classloading time, not dynamically during combine()
// Note: check only at classloading time, not dynamically during combine()
private
static
final
boolean
useJavaxPolicy
=
compatPolicy
();
private
static
final
boolean
useJavaxPolicy
=
javax
.
security
.
auth
.
Policy
.
isCustomPolicySet
(
debug
);
// Relevant only when useJavaxPolicy is true
// Relevant only when useJavaxPolicy is true
private
static
final
boolean
allowCaching
=
private
static
final
boolean
allowCaching
=
...
@@ -202,8 +199,8 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
...
@@ -202,8 +199,8 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
return
null
;
return
null
;
}
}
// maintain backwards compatibility for
people
who provide
// maintain backwards compatibility for
developers
who provide
// their own javax.security.auth.Policy implementations
// their own
custom
javax.security.auth.Policy implementations
if
(
useJavaxPolicy
)
{
if
(
useJavaxPolicy
)
{
return
combineJavaxPolicy
(
currentDomains
,
assignedDomains
);
return
combineJavaxPolicy
(
currentDomains
,
assignedDomains
);
}
}
...
@@ -476,8 +473,7 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
...
@@ -476,8 +473,7 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
String
s
=
AccessController
.
doPrivileged
String
s
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
String
>()
{
(
new
PrivilegedAction
<
String
>()
{
public
String
run
()
{
public
String
run
()
{
return
java
.
security
.
Security
.
getProperty
return
Security
.
getProperty
(
"cache.auth.policy"
);
(
"cache.auth.policy"
);
}
}
});
});
if
(
s
!=
null
)
{
if
(
s
!=
null
)
{
...
@@ -488,29 +484,6 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
...
@@ -488,29 +484,6 @@ public class SubjectDomainCombiner implements java.security.DomainCombiner {
return
true
;
return
true
;
}
}
// maintain backwards compatibility for people who provide
// their own javax.security.auth.Policy implementations
private
static
boolean
compatPolicy
()
{
javax
.
security
.
auth
.
Policy
javaxPolicy
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
javax
.
security
.
auth
.
Policy
>()
{
public
javax
.
security
.
auth
.
Policy
run
()
{
return
javax
.
security
.
auth
.
Policy
.
getPolicy
();
}
});
if
(!(
javaxPolicy
instanceof
com
.
sun
.
security
.
auth
.
PolicyFile
))
{
if
(
debug
!=
null
)
{
debug
.
println
(
"Providing backwards compatibility for "
+
"javax.security.auth.policy implementation: "
+
javaxPolicy
.
toString
());
}
return
true
;
}
else
{
return
false
;
}
}
private
static
void
printInputDomains
(
ProtectionDomain
[]
currentDomains
,
private
static
void
printInputDomains
(
ProtectionDomain
[]
currentDomains
,
ProtectionDomain
[]
assignedDomains
)
{
ProtectionDomain
[]
assignedDomains
)
{
if
(
currentDomains
==
null
||
currentDomains
.
length
==
0
)
{
if
(
currentDomains
==
null
||
currentDomains
.
length
==
0
)
{
...
...
src/share/classes/sun/awt/AWTAccessor.java
浏览文件 @
a5e5d666
...
@@ -223,6 +223,16 @@ public final class AWTAccessor {
...
@@ -223,6 +223,16 @@ public final class AWTAccessor {
void
processEvent
(
Component
comp
,
AWTEvent
e
);
void
processEvent
(
Component
comp
,
AWTEvent
e
);
}
}
/*
* An interface of accessor for the java.awt.Container class.
*/
public
interface
ContainerAccessor
{
/**
* Validates the container unconditionally.
*/
void
validateUnconditionally
(
Container
cont
);
}
/*
/*
* An interface of accessor for java.awt.Window class.
* An interface of accessor for java.awt.Window class.
*/
*/
...
@@ -334,6 +344,10 @@ public final class AWTAccessor {
...
@@ -334,6 +344,10 @@ public final class AWTAccessor {
* Gets the state of this frame.
* Gets the state of this frame.
*/
*/
int
getExtendedState
(
Frame
frame
);
int
getExtendedState
(
Frame
frame
);
/*
* Gets the maximized bounds of this frame.
*/
Rectangle
getMaximizedBounds
(
Frame
frame
);
}
}
/*
/*
...
@@ -440,53 +454,19 @@ public final class AWTAccessor {
...
@@ -440,53 +454,19 @@ public final class AWTAccessor {
}
}
/*
/*
* The java.awt.Component class accessor object.
* Accessor instances are initialized in the static initializers of
* corresponding AWT classes by using setters defined below.
*/
*/
private
static
ComponentAccessor
componentAccessor
;
private
static
ComponentAccessor
componentAccessor
;
private
static
ContainerAccessor
containerAccessor
;
/*
* The java.awt.Window class accessor object.
*/
private
static
WindowAccessor
windowAccessor
;
private
static
WindowAccessor
windowAccessor
;
/*
* The java.awt.AWTEvent class accessor object.
*/
private
static
AWTEventAccessor
awtEventAccessor
;
private
static
AWTEventAccessor
awtEventAccessor
;
/*
* The java.awt.event.InputEvent class accessor object.
*/
private
static
InputEventAccessor
inputEventAccessor
;
private
static
InputEventAccessor
inputEventAccessor
;
/*
* The java.awt.Frame class accessor object.
*/
private
static
FrameAccessor
frameAccessor
;
private
static
FrameAccessor
frameAccessor
;
/*
* The java.awt.KeyboardFocusManager class accessor object.
*/
private
static
KeyboardFocusManagerAccessor
kfmAccessor
;
private
static
KeyboardFocusManagerAccessor
kfmAccessor
;
/*
* The java.awt.MenuComponent class accessor object.
*/
private
static
MenuComponentAccessor
menuComponentAccessor
;
private
static
MenuComponentAccessor
menuComponentAccessor
;
/*
* The java.awt.EventQueue class accessor object.
*/
private
static
EventQueueAccessor
eventQueueAccessor
;
private
static
EventQueueAccessor
eventQueueAccessor
;
/*
* The java.awt.PopupMenu class accessor object.
*/
private
static
PopupMenuAccessor
popupMenuAccessor
;
private
static
PopupMenuAccessor
popupMenuAccessor
;
/*
* The java.awt.FileDialog class accessor object.
*/
private
static
FileDialogAccessor
fileDialogAccessor
;
private
static
FileDialogAccessor
fileDialogAccessor
;
/*
/*
...
@@ -497,7 +477,7 @@ public final class AWTAccessor {
...
@@ -497,7 +477,7 @@ public final class AWTAccessor {
}
}
/*
/*
* Retrieve the accessor object for the java.awt.
Window
class.
* Retrieve the accessor object for the java.awt.
Component
class.
*/
*/
public
static
ComponentAccessor
getComponentAccessor
()
{
public
static
ComponentAccessor
getComponentAccessor
()
{
if
(
componentAccessor
==
null
)
{
if
(
componentAccessor
==
null
)
{
...
@@ -507,6 +487,24 @@ public final class AWTAccessor {
...
@@ -507,6 +487,24 @@ public final class AWTAccessor {
return
componentAccessor
;
return
componentAccessor
;
}
}
/*
* Set an accessor object for the java.awt.Container class.
*/
public
static
void
setContainerAccessor
(
ContainerAccessor
ca
)
{
containerAccessor
=
ca
;
}
/*
* Retrieve the accessor object for the java.awt.Container class.
*/
public
static
ContainerAccessor
getContainerAccessor
()
{
if
(
containerAccessor
==
null
)
{
unsafe
.
ensureClassInitialized
(
Container
.
class
);
}
return
containerAccessor
;
}
/*
/*
* Set an accessor object for the java.awt.Window class.
* Set an accessor object for the java.awt.Window class.
*/
*/
...
...
src/share/classes/sun/io/ByteToCharCp833.java
0 → 100644
浏览文件 @
a5e5d666
/*
* Copyright (c) 2010 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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
sun.io
;
import
sun.nio.cs.ext.IBM833
;
public
class
ByteToCharCp833
extends
ByteToCharSingleByte
{
private
final
static
IBM833
nioCoder
=
new
IBM833
();
public
String
getCharacterEncoding
()
{
return
"Cp833"
;
}
public
ByteToCharCp833
()
{
super
.
byteToCharTable
=
nioCoder
.
getDecoderSingleByteMappings
();
}
}
src/share/classes/sun/io/CharToByteCp833.java
0 → 100644
浏览文件 @
a5e5d666
/*
* Copyright (c) 2010 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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
sun.io
;
import
sun.nio.cs.ext.IBM833
;
public
class
CharToByteCp833
extends
CharToByteSingleByte
{
private
final
static
IBM833
nioCoder
=
new
IBM833
();
public
String
getCharacterEncoding
()
{
return
"Cp833"
;
}
public
CharToByteCp833
()
{
super
.
mask1
=
0xFF00
;
super
.
mask2
=
0x00FF
;
super
.
shift
=
8
;
super
.
index1
=
nioCoder
.
getEncoderIndex1
();
super
.
index2
=
nioCoder
.
getEncoderIndex2
();
}
}
src/share/classes/sun/io/CharacterEncoding.java
浏览文件 @
a5e5d666
/*
/*
* Copyright (c) 1996, 20
06
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1996, 20
10
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -406,6 +406,11 @@ public class CharacterEncoding {
...
@@ -406,6 +406,11 @@ public class CharacterEncoding {
aliasTable
.
put
(
"cp775"
,
"Cp775"
);
aliasTable
.
put
(
"cp775"
,
"Cp775"
);
aliasTable
.
put
(
"775"
,
"Cp775"
);
aliasTable
.
put
(
"775"
,
"Cp775"
);
aliasTable
.
put
(
"ibm833"
,
"Cp833"
);
aliasTable
.
put
(
"ibm-833"
,
"Cp833"
);
aliasTable
.
put
(
"cp833"
,
"Cp833"
);
aliasTable
.
put
(
"833"
,
"Cp833"
);
aliasTable
.
put
(
"ibm834"
,
"Cp834"
);
aliasTable
.
put
(
"ibm834"
,
"Cp834"
);
aliasTable
.
put
(
"ibm-834"
,
"Cp834"
);
aliasTable
.
put
(
"ibm-834"
,
"Cp834"
);
aliasTable
.
put
(
"cp834"
,
"Cp834"
);
aliasTable
.
put
(
"cp834"
,
"Cp834"
);
...
...
src/share/classes/sun/launcher/LauncherHelper.java
浏览文件 @
a5e5d666
...
@@ -44,8 +44,16 @@ import java.io.IOException;
...
@@ -44,8 +44,16 @@ import java.io.IOException;
import
java.io.PrintStream
;
import
java.io.PrintStream
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Modifier
;
import
java.lang.reflect.Modifier
;
import
java.math.BigDecimal
;
import
java.math.MathContext
;
import
java.math.RoundingMode
;
import
java.util.ResourceBundle
;
import
java.util.ResourceBundle
;
import
java.text.MessageFormat
;
import
java.text.MessageFormat
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Properties
;
import
java.util.jar.Attributes
;
import
java.util.jar.Attributes
;
import
java.util.jar.JarFile
;
import
java.util.jar.JarFile
;
import
java.util.jar.Manifest
;
import
java.util.jar.Manifest
;
...
@@ -59,6 +67,17 @@ public enum LauncherHelper {
...
@@ -59,6 +67,17 @@ public enum LauncherHelper {
private
static
StringBuilder
outBuf
=
new
StringBuilder
();
private
static
StringBuilder
outBuf
=
new
StringBuilder
();
private
static
ResourceBundle
javarb
=
null
;
private
static
ResourceBundle
javarb
=
null
;
private
static
final
String
INDENT
=
" "
;
private
static
final
String
VM_SETTINGS
=
"VM settings:"
;
private
static
final
String
PROP_SETTINGS
=
"Property settings:"
;
private
static
final
String
LOCALE_SETTINGS
=
"Locale settings:"
;
private
static
final
long
K
=
1024
;
private
static
final
long
M
=
K
*
K
;
private
static
final
long
G
=
M
*
K
;
private
static
final
long
T
=
G
*
K
;
private
static
synchronized
ResourceBundle
getLauncherResourceBundle
()
{
private
static
synchronized
ResourceBundle
getLauncherResourceBundle
()
{
if
(
javarb
==
null
)
{
if
(
javarb
==
null
)
{
javarb
=
ResourceBundle
.
getBundle
(
defaultBundleName
);
javarb
=
ResourceBundle
.
getBundle
(
defaultBundleName
);
...
@@ -66,6 +85,184 @@ public enum LauncherHelper {
...
@@ -66,6 +85,184 @@ public enum LauncherHelper {
return
javarb
;
return
javarb
;
}
}
/*
* A method called by the launcher to print out the standard settings,
* by default -XshowSettings is equivalent to -XshowSettings:all,
* Specific information may be gotten by using suboptions with possible
* values vm, properties and locale.
*
* printToStderr: choose between stdout and stderr
*
* optionFlag: specifies which options to print default is all other
* possible values are vm, properties, locale.
*
* maxHeapSize: in bytes, as set by the launcher, a zero-value indicates
* this code should determine this value, using a suitable method.
*
* stackSize: in bytes, as set by the launcher, a zero-value indicates
* this code determine this value, using a suitable method.
*/
static
void
showSettings
(
boolean
printToStderr
,
String
optionFlag
,
long
maxHeapSize
,
long
stackSize
,
boolean
isServer
)
{
PrintStream
ostream
=
(
printToStderr
)
?
System
.
err
:
System
.
out
;
String
opts
[]
=
optionFlag
.
split
(
":"
);
String
optStr
=
(
opts
.
length
>
1
&&
opts
[
1
]
!=
null
)
?
opts
[
1
].
trim
()
:
"all"
;
switch
(
optStr
)
{
case
"vm"
:
printVmSettings
(
ostream
,
maxHeapSize
,
stackSize
,
isServer
);
break
;
case
"properties"
:
printProperties
(
ostream
);
break
;
case
"locale"
:
printLocale
(
ostream
);
break
;
default
:
printVmSettings
(
ostream
,
maxHeapSize
,
stackSize
,
isServer
);
printProperties
(
ostream
);
printLocale
(
ostream
);
break
;
}
}
/*
* prints the main vm settings subopt/section
*/
private
static
void
printVmSettings
(
PrintStream
ostream
,
long
maxHeapSize
,
long
stackSize
,
boolean
isServer
)
{
ostream
.
println
(
VM_SETTINGS
);
if
(
stackSize
!=
0L
)
{
ostream
.
println
(
INDENT
+
"Stack Size: "
+
scaleValue
(
stackSize
));
}
if
(
maxHeapSize
!=
0L
)
{
ostream
.
println
(
INDENT
+
"Max. Heap Size: "
+
scaleValue
(
maxHeapSize
));
}
else
{
ostream
.
println
(
INDENT
+
"Max. Heap Size (Estimated): "
+
scaleValue
(
Runtime
.
getRuntime
().
maxMemory
()));
}
ostream
.
println
(
INDENT
+
"Ergonomics Machine Class: "
+
((
isServer
)
?
"server"
:
"client"
));
ostream
.
println
(
INDENT
+
"Using VM: "
+
System
.
getProperty
(
"java.vm.name"
));
ostream
.
println
();
}
/*
* scale the incoming values to a human readable form, represented as
* K, M, G and T, see java.c parse_size for the scaled values and
* suffixes.
*/
private
static
String
scaleValue
(
double
v
)
{
MathContext
mc2
=
new
MathContext
(
3
,
RoundingMode
.
HALF_EVEN
);
if
(
v
>=
K
&&
v
<
M
)
{
return
(
new
BigDecimal
(
v
/
K
,
mc2
)).
toPlainString
()
+
"K"
;
}
else
if
(
v
>=
M
&&
v
<
G
)
{
return
(
new
BigDecimal
(
v
/
M
,
mc2
)).
toPlainString
()
+
"M"
;
}
else
if
(
v
>=
G
&&
v
<
T
)
{
return
(
new
BigDecimal
(
v
/
G
,
mc2
)).
toPlainString
()
+
"G"
;
}
else
if
(
v
>=
T
)
{
return
(
new
BigDecimal
(
v
/
T
,
mc2
)).
toPlainString
()
+
"T"
;
}
else
{
return
String
.
format
(
"%.0f"
,
v
);
}
}
/*
* prints the properties subopt/section
*/
private
static
void
printProperties
(
PrintStream
ostream
)
{
Properties
p
=
System
.
getProperties
();
ostream
.
println
(
PROP_SETTINGS
);
List
<
String
>
sortedPropertyKeys
=
new
ArrayList
<>();
sortedPropertyKeys
.
addAll
(
p
.
stringPropertyNames
());
Collections
.
sort
(
sortedPropertyKeys
);
for
(
String
x
:
sortedPropertyKeys
)
{
printPropertyValue
(
ostream
,
x
,
p
.
getProperty
(
x
));
}
ostream
.
println
();
}
private
static
boolean
isPath
(
String
key
)
{
return
key
.
endsWith
(
".dirs"
)
||
key
.
endsWith
(
".path"
);
}
private
static
void
printPropertyValue
(
PrintStream
ostream
,
String
key
,
String
value
)
{
ostream
.
print
(
INDENT
+
key
+
" = "
);
if
(
key
.
equals
(
"line.separator"
))
{
byte
[]
bytes
=
value
.
getBytes
();
for
(
byte
b
:
bytes
)
{
switch
(
b
)
{
case
0xd
:
ostream
.
print
(
"CR "
);
break
;
case
0xa
:
ostream
.
print
(
"LF "
);
break
;
default
:
ostream
.
printf
(
"0x%02X"
,
b
&
0xff
);
break
;
}
}
ostream
.
println
();
return
;
}
if
(!
isPath
(
key
))
{
ostream
.
println
(
value
);
return
;
}
// pretty print the path values as a list
String
[]
values
=
value
.
split
(
System
.
getProperty
(
"path.separator"
));
int
len
=
values
.
length
;
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
if
(
i
==
0
)
{
// first line treated specially
ostream
.
println
(
values
[
i
]);
}
else
{
// following lines prefix with indents
ostream
.
print
(
INDENT
+
INDENT
);
ostream
.
println
(
values
[
i
]);
}
}
}
/*
* prints the locale subopt/section
*/
private
static
void
printLocale
(
PrintStream
ostream
)
{
Locale
locale
=
Locale
.
getDefault
();
ostream
.
println
(
LOCALE_SETTINGS
);
ostream
.
println
(
INDENT
+
"default locale = "
+
locale
.
getDisplayLanguage
());
printLocales
(
ostream
);
ostream
.
println
();
}
private
static
void
printLocales
(
PrintStream
ostream
)
{
Locale
[]
locales
=
Locale
.
getAvailableLocales
();
final
int
len
=
locales
==
null
?
0
:
locales
.
length
;
if
(
len
<
1
)
{
return
;
}
ostream
.
print
(
INDENT
+
"available locales = "
);
final
int
last
=
len
-
1
;
for
(
int
i
=
0
;
i
<
last
;
i
++)
{
ostream
.
print
(
locales
[
i
]);
if
(
i
!=
last
)
{
ostream
.
print
(
", "
);
}
// print columns of 8
if
((
i
+
1
)
%
8
==
0
)
{
ostream
.
println
();
ostream
.
print
(
INDENT
+
INDENT
);
}
}
ostream
.
println
(
locales
[
last
]);
}
/**
/**
* A private helper method to get a localized message and also
* A private helper method to get a localized message and also
* apply any arguments that we might pass.
* apply any arguments that we might pass.
...
...
src/share/classes/sun/launcher/resources/launcher.properties
浏览文件 @
a5e5d666
#
#
# Copyright (c) 2007, 20
08
, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2007, 20
10
, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
#
# This code is free software; you can redistribute it and/or modify it
# This code is free software; you can redistribute it and/or modify it
...
@@ -97,7 +97,15 @@ java.launcher.X.usage=\
...
@@ -97,7 +97,15 @@ java.launcher.X.usage=\
\
-Xcheck:jni perform additional checks for JNI functions
\n\
\
-Xcheck:jni perform additional checks for JNI functions
\n\
\
-Xshare:off do not attempt to use shared class data
\n\
\
-Xshare:off do not attempt to use shared class data
\n\
\
-Xshare:auto use shared class data if possible (default)
\n\
\
-Xshare:auto use shared class data if possible (default)
\n\
\
-Xshare:on require using shared class data, otherwise fail.
\n\n\
\
-Xshare:on require using shared class data, otherwise fail.
\n\
\
-XshowSettings show all settings and continue
\n\
\
-XshowSettings:all
\n\
\
show all settings and continue
\n\
\
-XshowSettings:vm show all vm related settings and continue
\n\
\
-XshowSettings:properties
\n\
\
show all property settings and continue
\n\
\
-XshowSettings:locale
\n\
\
show all locale related settings and continue
\n\n\
The -X options are non-standard and subject to change without notice.
\n
The -X options are non-standard and subject to change without notice.
\n
java.launcher.cls.error1
=
\
java.launcher.cls.error1
=
\
...
...
src/share/classes/sun/net/httpserver/ChunkedInputStream.java
浏览文件 @
a5e5d666
...
@@ -110,6 +110,7 @@ class ChunkedInputStream extends LeftOverInputStream {
...
@@ -110,6 +110,7 @@ class ChunkedInputStream extends LeftOverInputStream {
if
(
remaining
==
0
)
{
if
(
remaining
==
0
)
{
eof
=
true
;
eof
=
true
;
consumeCRLF
();
consumeCRLF
();
t
.
getServerImpl
().
requestCompleted
(
t
.
getConnection
());
return
-
1
;
return
-
1
;
}
}
needToReadHeader
=
false
;
needToReadHeader
=
false
;
...
...
src/share/classes/sun/net/httpserver/Event.java
浏览文件 @
a5e5d666
...
@@ -40,5 +40,7 @@ class Event {
...
@@ -40,5 +40,7 @@ class Event {
class
WriteFinishedEvent
extends
Event
{
class
WriteFinishedEvent
extends
Event
{
WriteFinishedEvent
(
ExchangeImpl
t
)
{
WriteFinishedEvent
(
ExchangeImpl
t
)
{
super
(
t
);
super
(
t
);
assert
!
t
.
writefinished
;
t
.
writefinished
=
true
;
}
}
}
}
src/share/classes/sun/net/httpserver/ExchangeImpl.java
浏览文件 @
a5e5d666
...
@@ -38,6 +38,7 @@ class ExchangeImpl {
...
@@ -38,6 +38,7 @@ class ExchangeImpl {
Headers
reqHdrs
,
rspHdrs
;
Headers
reqHdrs
,
rspHdrs
;
Request
req
;
Request
req
;
String
method
;
String
method
;
boolean
writefinished
;
URI
uri
;
URI
uri
;
HttpConnection
connection
;
HttpConnection
connection
;
long
reqContentLen
;
long
reqContentLen
;
...
...
src/share/classes/sun/net/httpserver/FixedLengthInputStream.java
浏览文件 @
a5e5d666
...
@@ -56,6 +56,9 @@ class FixedLengthInputStream extends LeftOverInputStream {
...
@@ -56,6 +56,9 @@ class FixedLengthInputStream extends LeftOverInputStream {
int
n
=
in
.
read
(
b
,
off
,
len
);
int
n
=
in
.
read
(
b
,
off
,
len
);
if
(
n
>
-
1
)
{
if
(
n
>
-
1
)
{
remaining
-=
n
;
remaining
-=
n
;
if
(
remaining
==
0
)
{
t
.
getServerImpl
().
requestCompleted
(
t
.
getConnection
());
}
}
}
return
n
;
return
n
;
}
}
...
...
src/share/classes/sun/net/httpserver/HttpConnection.java
浏览文件 @
a5e5d666
...
@@ -55,10 +55,15 @@ class HttpConnection {
...
@@ -55,10 +55,15 @@ class HttpConnection {
SelectionKey
selectionKey
;
SelectionKey
selectionKey
;
String
protocol
;
String
protocol
;
long
time
;
long
time
;
volatile
long
creationTime
;
// time this connection was created
volatile
long
rspStartedTime
;
// time we started writing the response
int
remaining
;
int
remaining
;
boolean
closed
=
false
;
boolean
closed
=
false
;
Logger
logger
;
Logger
logger
;
public
enum
State
{
IDLE
,
REQUEST
,
RESPONSE
};
volatile
State
state
;
public
String
toString
()
{
public
String
toString
()
{
String
s
=
null
;
String
s
=
null
;
if
(
chan
!=
null
)
{
if
(
chan
!=
null
)
{
...
@@ -78,6 +83,14 @@ class HttpConnection {
...
@@ -78,6 +83,14 @@ class HttpConnection {
context
=
ctx
;
context
=
ctx
;
}
}
State
getState
()
{
return
state
;
}
void
setState
(
State
s
)
{
state
=
s
;
}
void
setParameters
(
void
setParameters
(
InputStream
in
,
OutputStream
rawout
,
SocketChannel
chan
,
InputStream
in
,
OutputStream
rawout
,
SocketChannel
chan
,
SSLEngine
engine
,
SSLStreams
sslStreams
,
SSLContext
sslContext
,
String
protocol
,
SSLEngine
engine
,
SSLStreams
sslStreams
,
SSLContext
sslContext
,
String
protocol
,
...
...
src/share/classes/sun/net/httpserver/Request.java
浏览文件 @
a5e5d666
...
@@ -201,32 +201,22 @@ class Request {
...
@@ -201,32 +201,22 @@ class Request {
static
class
ReadStream
extends
InputStream
{
static
class
ReadStream
extends
InputStream
{
SocketChannel
channel
;
SocketChannel
channel
;
SelectorCache
sc
;
Selector
selector
;
ByteBuffer
chanbuf
;
ByteBuffer
chanbuf
;
SelectionKey
key
;
int
available
;
byte
[]
one
;
byte
[]
one
;
boolean
closed
=
false
,
eof
=
false
;
private
boolean
closed
=
false
,
eof
=
false
;
ByteBuffer
markBuf
;
/* reads may be satisifed from this buffer */
ByteBuffer
markBuf
;
/* reads may be satisifed from this buffer */
boolean
marked
;
boolean
marked
;
boolean
reset
;
boolean
reset
;
int
readlimit
;
int
readlimit
;
static
long
readTimeout
;
static
long
readTimeout
;
ServerImpl
server
;
ServerImpl
server
;
final
static
int
BUFSIZE
=
8
*
1024
;
static
{
readTimeout
=
ServerConfig
.
getReadTimeout
();
}
public
ReadStream
(
ServerImpl
server
,
SocketChannel
chan
)
throws
IOException
{
public
ReadStream
(
ServerImpl
server
,
SocketChannel
chan
)
throws
IOException
{
this
.
channel
=
chan
;
this
.
channel
=
chan
;
this
.
server
=
server
;
this
.
server
=
server
;
sc
=
SelectorCache
.
getSelectorCache
();
chanbuf
=
ByteBuffer
.
allocate
(
BUFSIZE
);
selector
=
sc
.
getSelector
();
chanbuf
.
clear
();
chanbuf
=
ByteBuffer
.
allocate
(
8
*
1024
);
key
=
chan
.
register
(
selector
,
SelectionKey
.
OP_READ
);
available
=
0
;
one
=
new
byte
[
1
];
one
=
new
byte
[
1
];
closed
=
marked
=
reset
=
false
;
closed
=
marked
=
reset
=
false
;
}
}
...
@@ -255,6 +245,12 @@ class Request {
...
@@ -255,6 +245,12 @@ class Request {
return
-
1
;
return
-
1
;
}
}
assert
channel
.
isBlocking
();
if
(
off
<
0
||
srclen
<
0
||
srclen
>
(
b
.
length
-
off
))
{
throw
new
IndexOutOfBoundsException
();
}
if
(
reset
)
{
/* satisfy from markBuf */
if
(
reset
)
{
/* satisfy from markBuf */
canreturn
=
markBuf
.
remaining
();
canreturn
=
markBuf
.
remaining
();
willreturn
=
canreturn
>
srclen
?
srclen
:
canreturn
;
willreturn
=
canreturn
>
srclen
?
srclen
:
canreturn
;
...
@@ -263,17 +259,19 @@ class Request {
...
@@ -263,17 +259,19 @@ class Request {
reset
=
false
;
reset
=
false
;
}
}
}
else
{
/* satisfy from channel */
}
else
{
/* satisfy from channel */
canreturn
=
available
();
chanbuf
.
clear
();
while
(
canreturn
==
0
&&
!
eof
)
{
if
(
srclen
<
BUFSIZE
)
{
block
();
chanbuf
.
limit
(
srclen
);
canreturn
=
available
();
}
}
if
(
eof
)
{
do
{
willreturn
=
channel
.
read
(
chanbuf
);
}
while
(
willreturn
==
0
);
if
(
willreturn
==
-
1
)
{
eof
=
true
;
return
-
1
;
return
-
1
;
}
}
willreturn
=
canreturn
>
srclen
?
srclen
:
canreturn
;
chanbuf
.
flip
()
;
chanbuf
.
get
(
b
,
off
,
willreturn
);
chanbuf
.
get
(
b
,
off
,
willreturn
);
available
-=
willreturn
;
if
(
marked
)
{
/* copy into markBuf */
if
(
marked
)
{
/* copy into markBuf */
try
{
try
{
...
@@ -286,6 +284,11 @@ class Request {
...
@@ -286,6 +284,11 @@ class Request {
return
willreturn
;
return
willreturn
;
}
}
public
boolean
markSupported
()
{
return
true
;
}
/* Does not query the OS socket */
public
synchronized
int
available
()
throws
IOException
{
public
synchronized
int
available
()
throws
IOException
{
if
(
closed
)
if
(
closed
)
throw
new
IOException
(
"Stream is closed"
);
throw
new
IOException
(
"Stream is closed"
);
...
@@ -296,36 +299,7 @@ class Request {
...
@@ -296,36 +299,7 @@ class Request {
if
(
reset
)
if
(
reset
)
return
markBuf
.
remaining
();
return
markBuf
.
remaining
();
if
(
available
>
0
)
return
chanbuf
.
remaining
();
return
available
;
chanbuf
.
clear
();
available
=
channel
.
read
(
chanbuf
);
if
(
available
>
0
)
{
chanbuf
.
flip
();
}
else
if
(
available
==
-
1
)
{
eof
=
true
;
available
=
0
;
}
return
available
;
}
/**
* block() only called when available==0 and buf is empty
*/
private
synchronized
void
block
()
throws
IOException
{
long
currtime
=
server
.
getTime
();
long
maxtime
=
currtime
+
readTimeout
;
while
(
currtime
<
maxtime
)
{
if
(
selector
.
select
(
readTimeout
)
==
1
)
{
selector
.
selectedKeys
().
clear
();
available
();
return
;
}
currtime
=
server
.
getTime
();
}
throw
new
SocketTimeoutException
(
"no data received"
);
}
}
public
void
close
()
throws
IOException
{
public
void
close
()
throws
IOException
{
...
@@ -333,8 +307,6 @@ class Request {
...
@@ -333,8 +307,6 @@ class Request {
return
;
return
;
}
}
channel
.
close
();
channel
.
close
();
selector
.
selectNow
();
sc
.
freeSelector
(
selector
);
closed
=
true
;
closed
=
true
;
}
}
...
@@ -362,23 +334,14 @@ class Request {
...
@@ -362,23 +334,14 @@ class Request {
SocketChannel
channel
;
SocketChannel
channel
;
ByteBuffer
buf
;
ByteBuffer
buf
;
SelectionKey
key
;
SelectionKey
key
;
SelectorCache
sc
;
Selector
selector
;
boolean
closed
;
boolean
closed
;
byte
[]
one
;
byte
[]
one
;
ServerImpl
server
;
ServerImpl
server
;
static
long
writeTimeout
;
static
{
writeTimeout
=
ServerConfig
.
getWriteTimeout
();
}
public
WriteStream
(
ServerImpl
server
,
SocketChannel
channel
)
throws
IOException
{
public
WriteStream
(
ServerImpl
server
,
SocketChannel
channel
)
throws
IOException
{
this
.
channel
=
channel
;
this
.
channel
=
channel
;
this
.
server
=
server
;
this
.
server
=
server
;
sc
=
SelectorCache
.
getSelectorCache
();
assert
channel
.
isBlocking
();
selector
=
sc
.
getSelector
();
key
=
channel
.
register
(
selector
,
SelectionKey
.
OP_WRITE
);
closed
=
false
;
closed
=
false
;
one
=
new
byte
[
1
];
one
=
new
byte
[
1
];
buf
=
ByteBuffer
.
allocate
(
4096
);
buf
=
ByteBuffer
.
allocate
(
4096
);
...
@@ -411,31 +374,14 @@ class Request {
...
@@ -411,31 +374,14 @@ class Request {
l
-=
n
;
l
-=
n
;
if
(
l
==
0
)
if
(
l
==
0
)
return
;
return
;
block
();
}
}
void
block
()
throws
IOException
{
long
currtime
=
server
.
getTime
();
long
maxtime
=
currtime
+
writeTimeout
;
while
(
currtime
<
maxtime
)
{
if
(
selector
.
select
(
writeTimeout
)
==
1
)
{
selector
.
selectedKeys
().
clear
();
return
;
}
currtime
=
server
.
getTime
();
}
}
throw
new
SocketTimeoutException
(
"write blocked too long"
);
}
}
public
void
close
()
throws
IOException
{
public
void
close
()
throws
IOException
{
if
(
closed
)
if
(
closed
)
return
;
return
;
//server.logStackTrace ("Request.OS.close: isOpen="+channel.isOpen());
channel
.
close
();
channel
.
close
();
selector
.
selectNow
();
sc
.
freeSelector
(
selector
);
closed
=
true
;
closed
=
true
;
}
}
}
}
...
...
src/share/classes/sun/net/httpserver/SSLStreams.java
浏览文件 @
a5e5d666
...
@@ -53,8 +53,6 @@ class SSLStreams {
...
@@ -53,8 +53,6 @@ class SSLStreams {
EngineWrapper
wrapper
;
EngineWrapper
wrapper
;
OutputStream
os
;
OutputStream
os
;
InputStream
is
;
InputStream
is
;
static
long
readTimeout
=
ServerConfig
.
getReadTimeout
();
static
long
writeTimeout
=
ServerConfig
.
getWriteTimeout
();
/* held by thread doing the hand-shake on this connection */
/* held by thread doing the hand-shake on this connection */
Lock
handshaking
=
new
ReentrantLock
();
Lock
handshaking
=
new
ReentrantLock
();
...
@@ -77,10 +75,13 @@ class SSLStreams {
...
@@ -77,10 +75,13 @@ class SSLStreams {
if
(
cfg
!=
null
)
{
if
(
cfg
!=
null
)
{
Parameters
params
=
new
Parameters
(
cfg
,
addr
);
Parameters
params
=
new
Parameters
(
cfg
,
addr
);
cfg
.
configure
(
params
);
cfg
.
configure
(
params
);
//BEGIN_TIGER_EXCLUDE
SSLParameters
sslParams
=
params
.
getSSLParameters
();
SSLParameters
sslParams
=
params
.
getSSLParameters
();
if
(
sslParams
!=
null
)
{
if
(
sslParams
!=
null
)
{
engine
.
setSSLParameters
(
sslParams
);
engine
.
setSSLParameters
(
sslParams
);
}
else
{
}
else
//END_TIGER_EXCLUDE
{
/* tiger compatibility */
/* tiger compatibility */
if
(
params
.
getCipherSuites
()
!=
null
)
{
if
(
params
.
getCipherSuites
()
!=
null
)
{
try
{
try
{
...
@@ -104,7 +105,6 @@ class SSLStreams {
...
@@ -104,7 +105,6 @@ class SSLStreams {
class
Parameters
extends
HttpsParameters
{
class
Parameters
extends
HttpsParameters
{
InetSocketAddress
addr
;
InetSocketAddress
addr
;
SSLParameters
params
;
HttpsConfigurator
cfg
;
HttpsConfigurator
cfg
;
Parameters
(
HttpsConfigurator
cfg
,
InetSocketAddress
addr
)
{
Parameters
(
HttpsConfigurator
cfg
,
InetSocketAddress
addr
)
{
...
@@ -117,12 +117,15 @@ class SSLStreams {
...
@@ -117,12 +117,15 @@ class SSLStreams {
public
HttpsConfigurator
getHttpsConfigurator
()
{
public
HttpsConfigurator
getHttpsConfigurator
()
{
return
cfg
;
return
cfg
;
}
}
//BEGIN_TIGER_EXCLUDE
SSLParameters
params
;
public
void
setSSLParameters
(
SSLParameters
p
)
{
public
void
setSSLParameters
(
SSLParameters
p
)
{
params
=
p
;
params
=
p
;
}
}
SSLParameters
getSSLParameters
()
{
SSLParameters
getSSLParameters
()
{
return
params
;
return
params
;
}
}
//END_TIGER_EXCLUDE
}
}
/**
/**
...
@@ -245,9 +248,6 @@ class SSLStreams {
...
@@ -245,9 +248,6 @@ class SSLStreams {
SocketChannel
chan
;
SocketChannel
chan
;
SSLEngine
engine
;
SSLEngine
engine
;
SelectorCache
sc
;
Selector
write_selector
,
read_selector
;
SelectionKey
wkey
,
rkey
;
Object
wrapLock
,
unwrapLock
;
Object
wrapLock
,
unwrapLock
;
ByteBuffer
unwrap_src
,
wrap_dst
;
ByteBuffer
unwrap_src
,
wrap_dst
;
boolean
closed
=
false
;
boolean
closed
=
false
;
...
@@ -260,16 +260,9 @@ class SSLStreams {
...
@@ -260,16 +260,9 @@ class SSLStreams {
unwrapLock
=
new
Object
();
unwrapLock
=
new
Object
();
unwrap_src
=
allocate
(
BufType
.
PACKET
);
unwrap_src
=
allocate
(
BufType
.
PACKET
);
wrap_dst
=
allocate
(
BufType
.
PACKET
);
wrap_dst
=
allocate
(
BufType
.
PACKET
);
sc
=
SelectorCache
.
getSelectorCache
();
write_selector
=
sc
.
getSelector
();
wkey
=
chan
.
register
(
write_selector
,
SelectionKey
.
OP_WRITE
);
read_selector
=
sc
.
getSelector
();
wkey
=
chan
.
register
(
read_selector
,
SelectionKey
.
OP_READ
);
}
}
void
close
()
throws
IOException
{
void
close
()
throws
IOException
{
sc
.
freeSelector
(
write_selector
);
sc
.
freeSelector
(
read_selector
);
}
}
/* try to wrap and send the data in src. Handles OVERFLOW.
/* try to wrap and send the data in src. Handles OVERFLOW.
...
@@ -304,15 +297,7 @@ class SSLStreams {
...
@@ -304,15 +297,7 @@ class SSLStreams {
wrap_dst
.
flip
();
wrap_dst
.
flip
();
int
l
=
wrap_dst
.
remaining
();
int
l
=
wrap_dst
.
remaining
();
assert
l
==
r
.
result
.
bytesProduced
();
assert
l
==
r
.
result
.
bytesProduced
();
long
currtime
=
time
.
getTime
();
long
maxtime
=
currtime
+
writeTimeout
;
while
(
l
>
0
)
{
while
(
l
>
0
)
{
write_selector
.
select
(
writeTimeout
);
// timeout
currtime
=
time
.
getTime
();
if
(
currtime
>
maxtime
)
{
throw
new
SocketTimeoutException
(
"write timed out"
);
}
write_selector
.
selectedKeys
().
clear
();
l
-=
chan
.
write
(
wrap_dst
);
l
-=
chan
.
write
(
wrap_dst
);
}
}
}
}
...
@@ -342,20 +327,12 @@ class SSLStreams {
...
@@ -342,20 +327,12 @@ class SSLStreams {
needData
=
true
;
needData
=
true
;
}
}
synchronized
(
unwrapLock
)
{
synchronized
(
unwrapLock
)
{
int
x
,
y
;
int
x
;
do
{
do
{
if
(
needData
)
{
if
(
needData
)
{
long
currTime
=
time
.
getTime
();
long
maxtime
=
currTime
+
readTimeout
;
do
{
do
{
if
(
currTime
>
maxtime
)
{
throw
new
SocketTimeoutException
(
"read timedout"
);
}
y
=
read_selector
.
select
(
readTimeout
);
currTime
=
time
.
getTime
();
}
while
(
y
!=
1
);
read_selector
.
selectedKeys
().
clear
();
x
=
chan
.
read
(
unwrap_src
);
x
=
chan
.
read
(
unwrap_src
);
}
while
(
x
==
0
);
if
(
x
==
-
1
)
{
if
(
x
==
-
1
)
{
throw
new
IOException
(
"connection closed for reading"
);
throw
new
IOException
(
"connection closed for reading"
);
}
}
...
...
src/share/classes/sun/net/httpserver/SelectorCache.java
已删除
100644 → 0
浏览文件 @
82a3749e
/*
* Copyright (c) 2006, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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
sun.net.httpserver
;
import
java.util.*
;
import
java.nio.*
;
import
java.net.*
;
import
java.io.*
;
import
java.security.*
;
import
java.nio.channels.*
;
/*
* Implements a cache of java.nio.channels.Selector
* where Selectors are allocated on demand and placed
* in a temporary cache for a period of time, so they
* can be reused. If a period of between 2 and 4 minutes
* elapses without being used, then they are closed.
*/
public
class
SelectorCache
{
static
SelectorCache
cache
=
null
;
private
SelectorCache
()
{
freeSelectors
=
new
LinkedList
<
SelectorWrapper
>();
CacheCleaner
c
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
CacheCleaner
>()
{
public
CacheCleaner
run
()
{
CacheCleaner
cleaner
=
new
CacheCleaner
();
cleaner
.
setDaemon
(
true
);
return
cleaner
;
}
});
c
.
start
();
}
/**
* factory method for creating single instance
*/
public
static
SelectorCache
getSelectorCache
()
{
synchronized
(
SelectorCache
.
class
)
{
if
(
cache
==
null
)
{
cache
=
new
SelectorCache
();
}
}
return
cache
;
}
private
static
class
SelectorWrapper
{
private
Selector
sel
;
private
boolean
deleteFlag
;
private
SelectorWrapper
(
Selector
sel
)
{
this
.
sel
=
sel
;
this
.
deleteFlag
=
false
;
}
public
Selector
getSelector
()
{
return
sel
;}
public
boolean
getDeleteFlag
()
{
return
deleteFlag
;}
public
void
setDeleteFlag
(
boolean
b
)
{
deleteFlag
=
b
;}
}
/* list of free selectors. Can be re-allocated for a period
* of time, after which if not allocated will be closed
* and removed from the list (by CacheCleaner thread)
*/
LinkedList
<
SelectorWrapper
>
freeSelectors
;
synchronized
Selector
getSelector
()
throws
IOException
{
SelectorWrapper
wrapper
=
null
;
Selector
selector
;
if
(
freeSelectors
.
size
()
>
0
)
{
wrapper
=
freeSelectors
.
remove
();
selector
=
wrapper
.
getSelector
();
}
else
{
selector
=
Selector
.
open
();
}
return
selector
;
}
synchronized
void
freeSelector
(
Selector
selector
)
{
freeSelectors
.
add
(
new
SelectorWrapper
(
selector
));
}
/* Thread ensures that entries on freeSelector list
* remain there for at least 2 minutes and no longer
* than 4 minutes.
*/
class
CacheCleaner
extends
Thread
{
public
void
run
()
{
long
timeout
=
ServerConfig
.
getSelCacheTimeout
()
*
1000
;
while
(
true
)
{
try
{
Thread
.
sleep
(
timeout
);
}
catch
(
Exception
e
)
{}
synchronized
(
freeSelectors
)
{
ListIterator
<
SelectorWrapper
>
l
=
freeSelectors
.
listIterator
();
while
(
l
.
hasNext
())
{
SelectorWrapper
w
=
l
.
next
();
if
(
w
.
getDeleteFlag
())
{
/* 2nd pass. Close the selector */
try
{
w
.
getSelector
().
close
();
}
catch
(
IOException
e
)
{}
l
.
remove
();
}
else
{
/* 1st pass. Set the flag */
w
.
setDeleteFlag
(
true
);
}
}
}
}
}
}
}
src/share/classes/sun/net/httpserver/ServerConfig.java
浏览文件 @
a5e5d666
...
@@ -27,6 +27,8 @@ package sun.net.httpserver;
...
@@ -27,6 +27,8 @@ package sun.net.httpserver;
import
com.sun.net.httpserver.*
;
import
com.sun.net.httpserver.*
;
import
com.sun.net.httpserver.spi.*
;
import
com.sun.net.httpserver.spi.*
;
import
java.util.logging.Logger
;
import
java.security.PrivilegedAction
;
/**
/**
* Parameters that users will not likely need to set
* Parameters that users will not likely need to set
...
@@ -37,23 +39,26 @@ class ServerConfig {
...
@@ -37,23 +39,26 @@ class ServerConfig {
static
int
clockTick
;
static
int
clockTick
;
static
int
defaultClockTick
=
10000
;
// 10 sec.
static
final
int
DEFAULT_CLOCK_TICK
=
10000
;
// 10 sec.
/* These values must be a reasonable multiple of clockTick */
/* These values must be a reasonable multiple of clockTick */
static
long
defaultReadTimeout
=
20
;
// 20 sec.
static
final
long
DEFAULT_IDLE_INTERVAL
=
300
;
// 5 min
static
long
defaultWriteTimeout
=
60
;
// 60 sec.
static
final
int
DEFAULT_MAX_IDLE_CONNECTIONS
=
200
;
static
long
defaultIdleInterval
=
300
;
// 5 min
static
long
defaultSelCacheTimeout
=
120
;
// seconds
static
int
defaultMaxIdleConnections
=
200
;
static
long
defaultDrainAmount
=
64
*
1024
;
static
final
long
DEFAULT_MAX_REQ_TIME
=
-
1
;
// default: forever
static
final
long
DEFAULT_MAX_RSP_TIME
=
-
1
;
// default: forever
static
final
long
DEFAULT_TIMER_MILLIS
=
1000
;
static
final
long
DEFAULT_DRAIN_AMOUNT
=
64
*
1024
;
static
long
readTimeout
;
static
long
writeTimeout
;
static
long
idleInterval
;
static
long
idleInterval
;
static
long
selCacheTimeout
;
static
long
drainAmount
;
// max # of bytes to drain from an inputstream
static
long
drainAmount
;
// max # of bytes to drain from an inputstream
static
int
maxIdleConnections
;
static
int
maxIdleConnections
;
// max time a request or response is allowed to take
static
long
maxReqTime
;
static
long
maxRspTime
;
static
long
timerMillis
;
static
boolean
debug
=
false
;
static
boolean
debug
=
false
;
static
{
static
{
...
@@ -61,49 +66,79 @@ class ServerConfig {
...
@@ -61,49 +66,79 @@ class ServerConfig {
idleInterval
=
((
Long
)
java
.
security
.
AccessController
.
doPrivileged
(
idleInterval
=
((
Long
)
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetLongAction
(
new
sun
.
security
.
action
.
GetLongAction
(
"sun.net.httpserver.idleInterval"
,
"sun.net.httpserver.idleInterval"
,
defaultIdleInterval
))).
longValue
()
*
1000
;
DEFAULT_IDLE_INTERVAL
))).
longValue
()
*
1000
;
clockTick
=
((
Integer
)
java
.
security
.
AccessController
.
doPrivileged
(
clockTick
=
((
Integer
)
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetIntegerAction
(
new
sun
.
security
.
action
.
GetIntegerAction
(
"sun.net.httpserver.clockTick"
,
"sun.net.httpserver.clockTick"
,
defaultClockTick
))).
intValue
();
DEFAULT_CLOCK_TICK
))).
intValue
();
maxIdleConnections
=
((
Integer
)
java
.
security
.
AccessController
.
doPrivileged
(
maxIdleConnections
=
((
Integer
)
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetIntegerAction
(
new
sun
.
security
.
action
.
GetIntegerAction
(
"sun.net.httpserver.maxIdleConnections"
,
"sun.net.httpserver.maxIdleConnections"
,
defaultMaxIdleConnections
))).
intValue
();
DEFAULT_MAX_IDLE_CONNECTIONS
))).
intValue
();
readTimeou
t
=
((
Long
)
java
.
security
.
AccessController
.
doPrivileged
(
drainAmoun
t
=
((
Long
)
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetLongAction
(
new
sun
.
security
.
action
.
GetLongAction
(
"sun.net.httpserver.
readTimeou
t"
,
"sun.net.httpserver.
drainAmoun
t"
,
defaultReadTimeout
))).
longValue
()*
1000
;
DEFAULT_DRAIN_AMOUNT
))).
longValue
()
;
selCacheTimeout
=
((
Long
)
java
.
security
.
AccessController
.
doPrivileged
(
maxReqTime
=
((
Long
)
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetLongAction
(
new
sun
.
security
.
action
.
GetLongAction
(
"sun.net.httpserver.
selCacheTimeout
"
,
"sun.net.httpserver.
maxReqTime
"
,
defaultSelCacheTimeout
))).
longValue
()*
1000
;
DEFAULT_MAX_REQ_TIME
))).
longValue
()
;
writeTimeout
=
((
Long
)
java
.
security
.
AccessController
.
doPrivileged
(
maxRspTime
=
((
Long
)
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetLongAction
(
new
sun
.
security
.
action
.
GetLongAction
(
"sun.net.httpserver.
writeTimeout
"
,
"sun.net.httpserver.
maxRspTime
"
,
defaultWriteTimeout
))).
longValue
()*
1000
;
DEFAULT_MAX_RSP_TIME
))).
longValue
()
;
drainAmount
=
((
Long
)
java
.
security
.
AccessController
.
doPrivileged
(
timerMillis
=
((
Long
)
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetLongAction
(
new
sun
.
security
.
action
.
GetLongAction
(
"sun.net.httpserver.
drainAmount
"
,
"sun.net.httpserver.
timerMillis
"
,
defaultDrainAmount
))).
longValue
();
DEFAULT_TIMER_MILLIS
))).
longValue
();
debug
=
((
Boolean
)
java
.
security
.
AccessController
.
doPrivileged
(
debug
=
((
Boolean
)
java
.
security
.
AccessController
.
doPrivileged
(
new
sun
.
security
.
action
.
GetBooleanAction
(
new
sun
.
security
.
action
.
GetBooleanAction
(
"sun.net.httpserver.debug"
))).
booleanValue
();
"sun.net.httpserver.debug"
))).
booleanValue
();
}
}
static
long
getReadTimeout
()
{
return
readTimeout
;
}
static
long
getSelCacheTimeout
()
{
static
void
checkLegacyProperties
(
final
Logger
logger
)
{
return
selCacheTimeout
;
// legacy properties that are no longer used
// print a warning to logger if they are set.
java
.
security
.
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Void
>()
{
public
Void
run
()
{
if
(
System
.
getProperty
(
"sun.net.httpserver.readTimeout"
)
!=
null
)
{
logger
.
warning
(
"sun.net.httpserver.readTimeout "
+
"property is no longer used. "
+
"Use sun.net.httpserver.maxReqTime instead."
);
}
if
(
System
.
getProperty
(
"sun.net.httpserver.writeTimeout"
)
!=
null
)
{
logger
.
warning
(
"sun.net.httpserver.writeTimeout "
+
"property is no longer used. Use "
+
"sun.net.httpserver.maxRspTime instead."
);
}
if
(
System
.
getProperty
(
"sun.net.httpserver.selCacheTimeout"
)
!=
null
)
{
logger
.
warning
(
"sun.net.httpserver.selCacheTimeout "
+
"property is no longer used."
);
}
return
null
;
}
}
);
}
}
static
boolean
debugEnabled
()
{
static
boolean
debugEnabled
()
{
...
@@ -122,11 +157,19 @@ class ServerConfig {
...
@@ -122,11 +157,19 @@ class ServerConfig {
return
maxIdleConnections
;
return
maxIdleConnections
;
}
}
static
long
getWriteTimeout
()
{
return
writeTimeout
;
}
static
long
getDrainAmount
()
{
static
long
getDrainAmount
()
{
return
drainAmount
;
return
drainAmount
;
}
}
static
long
getMaxReqTime
()
{
return
maxReqTime
;
}
static
long
getMaxRspTime
()
{
return
maxRspTime
;
}
static
long
getTimerMillis
()
{
return
timerMillis
;
}
}
}
src/share/classes/sun/net/httpserver/ServerImpl.java
浏览文件 @
a5e5d666
...
@@ -37,6 +37,7 @@ import java.util.logging.Level;
...
@@ -37,6 +37,7 @@ import java.util.logging.Level;
import
javax.net.ssl.*
;
import
javax.net.ssl.*
;
import
com.sun.net.httpserver.*
;
import
com.sun.net.httpserver.*
;
import
com.sun.net.httpserver.spi.*
;
import
com.sun.net.httpserver.spi.*
;
import
sun.net.httpserver.HttpConnection.State
;
/**
/**
* Provides implementation for both HTTP and HTTPS
* Provides implementation for both HTTP and HTTPS
...
@@ -55,6 +56,12 @@ class ServerImpl implements TimeSource {
...
@@ -55,6 +56,12 @@ class ServerImpl implements TimeSource {
private
SelectionKey
listenerKey
;
private
SelectionKey
listenerKey
;
private
Set
<
HttpConnection
>
idleConnections
;
private
Set
<
HttpConnection
>
idleConnections
;
private
Set
<
HttpConnection
>
allConnections
;
private
Set
<
HttpConnection
>
allConnections
;
/* following two are used to keep track of the times
* when a connection/request is first received
* and when we start to send the response
*/
private
Set
<
HttpConnection
>
reqConnections
;
private
Set
<
HttpConnection
>
rspConnections
;
private
List
<
Event
>
events
;
private
List
<
Event
>
events
;
private
Object
lolock
=
new
Object
();
private
Object
lolock
=
new
Object
();
private
volatile
boolean
finished
=
false
;
private
volatile
boolean
finished
=
false
;
...
@@ -62,14 +69,19 @@ class ServerImpl implements TimeSource {
...
@@ -62,14 +69,19 @@ class ServerImpl implements TimeSource {
private
boolean
bound
=
false
;
private
boolean
bound
=
false
;
private
boolean
started
=
false
;
private
boolean
started
=
false
;
private
volatile
long
time
;
/* current time */
private
volatile
long
time
;
/* current time */
private
volatile
long
subticks
=
0
;
private
volatile
long
ticks
;
/* number of clock ticks since server started */
private
volatile
long
ticks
;
/* number of clock ticks since server started */
private
HttpServer
wrapper
;
private
HttpServer
wrapper
;
final
static
int
CLOCK_TICK
=
ServerConfig
.
getClockTick
();
final
static
int
CLOCK_TICK
=
ServerConfig
.
getClockTick
();
final
static
long
IDLE_INTERVAL
=
ServerConfig
.
getIdleInterval
();
final
static
long
IDLE_INTERVAL
=
ServerConfig
.
getIdleInterval
();
final
static
int
MAX_IDLE_CONNECTIONS
=
ServerConfig
.
getMaxIdleConnections
();
final
static
int
MAX_IDLE_CONNECTIONS
=
ServerConfig
.
getMaxIdleConnections
();
final
static
long
TIMER_MILLIS
=
ServerConfig
.
getTimerMillis
();
final
static
long
MAX_REQ_TIME
=
getTimeMillis
(
ServerConfig
.
getMaxReqTime
());
final
static
long
MAX_RSP_TIME
=
getTimeMillis
(
ServerConfig
.
getMaxRspTime
());
final
static
boolean
timer1Enabled
=
MAX_REQ_TIME
!=
-
1
||
MAX_RSP_TIME
!=
-
1
;
private
Timer
timer
;
private
Timer
timer
,
timer1
;
private
Logger
logger
;
private
Logger
logger
;
ServerImpl
(
ServerImpl
(
...
@@ -79,6 +91,7 @@ class ServerImpl implements TimeSource {
...
@@ -79,6 +91,7 @@ class ServerImpl implements TimeSource {
this
.
protocol
=
protocol
;
this
.
protocol
=
protocol
;
this
.
wrapper
=
wrapper
;
this
.
wrapper
=
wrapper
;
this
.
logger
=
Logger
.
getLogger
(
"com.sun.net.httpserver"
);
this
.
logger
=
Logger
.
getLogger
(
"com.sun.net.httpserver"
);
ServerConfig
.
checkLegacyProperties
(
logger
);
https
=
protocol
.
equalsIgnoreCase
(
"https"
);
https
=
protocol
.
equalsIgnoreCase
(
"https"
);
this
.
address
=
addr
;
this
.
address
=
addr
;
contexts
=
new
ContextList
();
contexts
=
new
ContextList
();
...
@@ -94,9 +107,18 @@ class ServerImpl implements TimeSource {
...
@@ -94,9 +107,18 @@ class ServerImpl implements TimeSource {
dispatcher
=
new
Dispatcher
();
dispatcher
=
new
Dispatcher
();
idleConnections
=
Collections
.
synchronizedSet
(
new
HashSet
<
HttpConnection
>());
idleConnections
=
Collections
.
synchronizedSet
(
new
HashSet
<
HttpConnection
>());
allConnections
=
Collections
.
synchronizedSet
(
new
HashSet
<
HttpConnection
>());
allConnections
=
Collections
.
synchronizedSet
(
new
HashSet
<
HttpConnection
>());
reqConnections
=
Collections
.
synchronizedSet
(
new
HashSet
<
HttpConnection
>());
rspConnections
=
Collections
.
synchronizedSet
(
new
HashSet
<
HttpConnection
>());
time
=
System
.
currentTimeMillis
();
time
=
System
.
currentTimeMillis
();
timer
=
new
Timer
(
"server-timer"
,
true
);
timer
=
new
Timer
(
"server-timer"
,
true
);
timer
.
schedule
(
new
ServerTimerTask
(),
CLOCK_TICK
,
CLOCK_TICK
);
timer
.
schedule
(
new
ServerTimerTask
(),
CLOCK_TICK
,
CLOCK_TICK
);
if
(
timer1Enabled
)
{
timer1
=
new
Timer
(
"server-timer1"
,
true
);
timer1
.
schedule
(
new
ServerTimerTask1
(),
TIMER_MILLIS
,
TIMER_MILLIS
);
logger
.
config
(
"HttpServer timer1 enabled period in ms: "
+
TIMER_MILLIS
);
logger
.
config
(
"MAX_REQ_TIME: "
+
MAX_REQ_TIME
);
logger
.
config
(
"MAX_RSP_TIME: "
+
MAX_RSP_TIME
);
}
events
=
new
LinkedList
<
Event
>();
events
=
new
LinkedList
<
Event
>();
logger
.
config
(
"HttpServer created "
+
protocol
+
" "
+
addr
);
logger
.
config
(
"HttpServer created "
+
protocol
+
" "
+
addr
);
}
}
...
@@ -181,6 +203,9 @@ class ServerImpl implements TimeSource {
...
@@ -181,6 +203,9 @@ class ServerImpl implements TimeSource {
allConnections
.
clear
();
allConnections
.
clear
();
idleConnections
.
clear
();
idleConnections
.
clear
();
timer
.
cancel
();
timer
.
cancel
();
if
(
timer1Enabled
)
{
timer1
.
cancel
();
}
}
}
Dispatcher
dispatcher
;
Dispatcher
dispatcher
;
...
@@ -236,13 +261,6 @@ class ServerImpl implements TimeSource {
...
@@ -236,13 +261,6 @@ class ServerImpl implements TimeSource {
}
}
}
}
int
resultSize
()
{
synchronized
(
lolock
)
{
return
events
.
size
();
}
}
/* main server listener task */
/* main server listener task */
class
Dispatcher
implements
Runnable
{
class
Dispatcher
implements
Runnable
{
...
@@ -257,7 +275,7 @@ class ServerImpl implements TimeSource {
...
@@ -257,7 +275,7 @@ class ServerImpl implements TimeSource {
if
(
terminating
&&
exchanges
==
0
)
{
if
(
terminating
&&
exchanges
==
0
)
{
finished
=
true
;
finished
=
true
;
}
}
SocketChannel
chan
=
c
.
getChannel
(
);
responseCompleted
(
c
);
LeftOverInputStream
is
=
t
.
getOriginalInputStream
();
LeftOverInputStream
is
=
t
.
getOriginalInputStream
();
if
(!
is
.
isEOF
())
{
if
(!
is
.
isEOF
())
{
t
.
close
=
true
;
t
.
close
=
true
;
...
@@ -268,17 +286,10 @@ class ServerImpl implements TimeSource {
...
@@ -268,17 +286,10 @@ class ServerImpl implements TimeSource {
}
else
{
}
else
{
if
(
is
.
isDataBuffered
())
{
if
(
is
.
isDataBuffered
())
{
/* don't re-enable the interestops, just handle it */
/* don't re-enable the interestops, just handle it */
requestStarted
(
c
);
handle
(
c
.
getChannel
(),
c
);
handle
(
c
.
getChannel
(),
c
);
}
else
{
}
else
{
/* re-enable interestops */
connsToRegister
.
add
(
c
);
SelectionKey
key
=
c
.
getSelectionKey
();
if
(
key
.
isValid
())
{
key
.
interestOps
(
key
.
interestOps
()|
SelectionKey
.
OP_READ
);
}
c
.
time
=
getTime
()
+
IDLE_INTERVAL
;
idleConnections
.
add
(
c
);
}
}
}
}
}
}
...
@@ -290,22 +301,51 @@ class ServerImpl implements TimeSource {
...
@@ -290,22 +301,51 @@ class ServerImpl implements TimeSource {
}
}
}
}
final
LinkedList
<
HttpConnection
>
connsToRegister
=
new
LinkedList
<
HttpConnection
>();
void
reRegister
(
HttpConnection
c
)
{
/* re-register with selector */
try
{
SocketChannel
chan
=
c
.
getChannel
();
chan
.
configureBlocking
(
false
);
SelectionKey
key
=
chan
.
register
(
selector
,
SelectionKey
.
OP_READ
);
key
.
attach
(
c
);
c
.
selectionKey
=
key
;
c
.
time
=
getTime
()
+
IDLE_INTERVAL
;
idleConnections
.
add
(
c
);
}
catch
(
IOException
e
)
{
dprint
(
e
);
logger
.
log
(
Level
.
FINER
,
"Dispatcher(8)"
,
e
);
c
.
close
();
}
}
public
void
run
()
{
public
void
run
()
{
while
(!
finished
)
{
while
(!
finished
)
{
try
{
try
{
ListIterator
<
HttpConnection
>
li
=
connsToRegister
.
listIterator
();
for
(
HttpConnection
c
:
connsToRegister
)
{
reRegister
(
c
);
}
connsToRegister
.
clear
();
/* process the events list first */
List
<
Event
>
list
=
null
;
selector
.
select
(
1000
);
synchronized
(
lolock
)
{
if
(
events
.
size
()
>
0
)
{
list
=
events
;
events
=
new
LinkedList
<
Event
>();
}
}
while
(
resultSize
()
>
0
)
{
if
(
list
!=
null
)
{
Event
r
;
for
(
Event
r:
list
)
{
synchronized
(
lolock
)
{
r
=
events
.
remove
(
0
);
handleEvent
(
r
);
handleEvent
(
r
);
}
}
}
}
selector
.
select
(
1000
);
/* process the selected list now */
/* process the selected list now */
Set
<
SelectionKey
>
selected
=
selector
.
selectedKeys
();
Set
<
SelectionKey
>
selected
=
selector
.
selectedKeys
();
...
@@ -327,6 +367,7 @@ class ServerImpl implements TimeSource {
...
@@ -327,6 +367,7 @@ class ServerImpl implements TimeSource {
c
.
selectionKey
=
newkey
;
c
.
selectionKey
=
newkey
;
c
.
setChannel
(
chan
);
c
.
setChannel
(
chan
);
newkey
.
attach
(
c
);
newkey
.
attach
(
c
);
requestStarted
(
c
);
allConnections
.
add
(
c
);
allConnections
.
add
(
c
);
}
else
{
}
else
{
try
{
try
{
...
@@ -334,27 +375,44 @@ class ServerImpl implements TimeSource {
...
@@ -334,27 +375,44 @@ class ServerImpl implements TimeSource {
boolean
closed
;
boolean
closed
;
SocketChannel
chan
=
(
SocketChannel
)
key
.
channel
();
SocketChannel
chan
=
(
SocketChannel
)
key
.
channel
();
HttpConnection
conn
=
(
HttpConnection
)
key
.
attachment
();
HttpConnection
conn
=
(
HttpConnection
)
key
.
attachment
();
// interestOps will be restored at end of read
key
.
interestOps
(
0
);
key
.
cancel
();
chan
.
configureBlocking
(
true
);
if
(
idleConnections
.
remove
(
conn
))
{
// was an idle connection so add it
// to reqConnections set.
requestStarted
(
conn
);
}
handle
(
chan
,
conn
);
handle
(
chan
,
conn
);
}
else
{
}
else
{
assert
false
;
assert
false
;
}
}
}
catch
(
CancelledKeyException
e
)
{
handleException
(
key
,
null
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
HttpConnection
conn
=
(
HttpConnection
)
key
.
attachment
();
handleException
(
key
,
e
);
logger
.
log
(
Level
.
FINER
,
"Dispatcher (2)"
,
e
);
conn
.
close
();
}
}
}
}
}
}
// call the selector just to process the cancelled keys
selector
.
selectNow
();
}
catch
(
IOException
e
)
{
logger
.
log
(
Level
.
FINER
,
"Dispatcher (4)"
,
e
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
log
(
Level
.
FINER
,
"Dispatcher (3)"
,
e
);
e
.
printStackTrace
();
logger
.
log
(
Level
.
FINER
,
"Dispatcher (7)"
,
e
);
}
}
}
}
}
}
private
void
handleException
(
SelectionKey
key
,
Exception
e
)
{
HttpConnection
conn
=
(
HttpConnection
)
key
.
attachment
();
if
(
e
!=
null
)
{
logger
.
log
(
Level
.
FINER
,
"Dispatcher (2)"
,
e
);
}
closeConnection
(
conn
);
}
public
void
handle
(
SocketChannel
chan
,
HttpConnection
conn
)
public
void
handle
(
SocketChannel
chan
,
HttpConnection
conn
)
throws
IOException
throws
IOException
{
{
...
@@ -363,10 +421,10 @@ class ServerImpl implements TimeSource {
...
@@ -363,10 +421,10 @@ class ServerImpl implements TimeSource {
executor
.
execute
(
t
);
executor
.
execute
(
t
);
}
catch
(
HttpError
e1
)
{
}
catch
(
HttpError
e1
)
{
logger
.
log
(
Level
.
FINER
,
"Dispatcher (4)"
,
e1
);
logger
.
log
(
Level
.
FINER
,
"Dispatcher (4)"
,
e1
);
c
onn
.
close
(
);
c
loseConnection
(
conn
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
logger
.
log
(
Level
.
FINER
,
"Dispatcher (5)"
,
e
);
logger
.
log
(
Level
.
FINER
,
"Dispatcher (5)"
,
e
);
c
onn
.
close
(
);
c
loseConnection
(
conn
);
}
}
}
}
}
}
...
@@ -390,7 +448,26 @@ class ServerImpl implements TimeSource {
...
@@ -390,7 +448,26 @@ class ServerImpl implements TimeSource {
return
logger
;
return
logger
;
}
}
/* per exchange task */
private
void
closeConnection
(
HttpConnection
conn
)
{
conn
.
close
();
allConnections
.
remove
(
conn
);
switch
(
conn
.
getState
())
{
case
REQUEST:
reqConnections
.
remove
(
conn
);
break
;
case
RESPONSE:
rspConnections
.
remove
(
conn
);
break
;
case
IDLE:
idleConnections
.
remove
(
conn
);
break
;
}
assert
!
reqConnections
.
remove
(
conn
);
assert
!
rspConnections
.
remove
(
conn
);
assert
!
idleConnections
.
remove
(
conn
);
}
/* per exchange task */
class
Exchange
implements
Runnable
{
class
Exchange
implements
Runnable
{
SocketChannel
chan
;
SocketChannel
chan
;
...
@@ -450,8 +527,7 @@ class ServerImpl implements TimeSource {
...
@@ -450,8 +527,7 @@ class ServerImpl implements TimeSource {
requestLine
=
req
.
requestLine
();
requestLine
=
req
.
requestLine
();
if
(
requestLine
==
null
)
{
if
(
requestLine
==
null
)
{
/* connection closed */
/* connection closed */
connection
.
close
();
closeConnection
(
connection
);
allConnections
.
remove
(
connection
);
return
;
return
;
}
}
int
space
=
requestLine
.
indexOf
(
' '
);
int
space
=
requestLine
.
indexOf
(
' '
);
...
@@ -482,6 +558,9 @@ class ServerImpl implements TimeSource {
...
@@ -482,6 +558,9 @@ class ServerImpl implements TimeSource {
if
(
s
!=
null
)
{
if
(
s
!=
null
)
{
clen
=
Long
.
parseLong
(
s
);
clen
=
Long
.
parseLong
(
s
);
}
}
if
(
clen
==
0
)
{
requestCompleted
(
connection
);
}
}
}
ctx
=
contexts
.
findContext
(
protocol
,
uri
.
getPath
());
ctx
=
contexts
.
findContext
(
protocol
,
uri
.
getPath
());
if
(
ctx
==
null
)
{
if
(
ctx
==
null
)
{
...
@@ -560,7 +639,7 @@ class ServerImpl implements TimeSource {
...
@@ -560,7 +639,7 @@ class ServerImpl implements TimeSource {
}
catch
(
IOException
e1
)
{
}
catch
(
IOException
e1
)
{
logger
.
log
(
Level
.
FINER
,
"ServerImpl.Exchange (1)"
,
e1
);
logger
.
log
(
Level
.
FINER
,
"ServerImpl.Exchange (1)"
,
e1
);
c
onnection
.
close
(
);
c
loseConnection
(
connection
);
}
catch
(
NumberFormatException
e3
)
{
}
catch
(
NumberFormatException
e3
)
{
reject
(
Code
.
HTTP_BAD_REQUEST
,
reject
(
Code
.
HTTP_BAD_REQUEST
,
requestLine
,
"NumberFormatException thrown"
);
requestLine
,
"NumberFormatException thrown"
);
...
@@ -569,7 +648,7 @@ class ServerImpl implements TimeSource {
...
@@ -569,7 +648,7 @@ class ServerImpl implements TimeSource {
requestLine
,
"URISyntaxException thrown"
);
requestLine
,
"URISyntaxException thrown"
);
}
catch
(
Exception
e4
)
{
}
catch
(
Exception
e4
)
{
logger
.
log
(
Level
.
FINER
,
"ServerImpl.Exchange (2)"
,
e4
);
logger
.
log
(
Level
.
FINER
,
"ServerImpl.Exchange (2)"
,
e4
);
c
onnection
.
close
(
);
c
loseConnection
(
connection
);
}
}
}
}
...
@@ -591,47 +670,60 @@ class ServerImpl implements TimeSource {
...
@@ -591,47 +670,60 @@ class ServerImpl implements TimeSource {
rejected
=
true
;
rejected
=
true
;
logReply
(
code
,
requestStr
,
message
);
logReply
(
code
,
requestStr
,
message
);
sendReply
(
sendReply
(
code
,
tru
e
,
"<h1>"
+
code
+
Code
.
msg
(
code
)+
"</h1>"
+
message
code
,
fals
e
,
"<h1>"
+
code
+
Code
.
msg
(
code
)+
"</h1>"
+
message
);
);
/* connection is already closed by sendReply, now remove it */
closeConnection
(
connection
);
allConnections
.
remove
(
connection
);
}
}
void
sendReply
(
void
sendReply
(
int
code
,
boolean
closeNow
,
String
text
)
int
code
,
boolean
closeNow
,
String
text
)
{
{
try
{
try
{
String
s
=
"HTTP/1.1 "
+
code
+
Code
.
msg
(
code
)
+
"\r\n"
;
StringBuilder
builder
=
new
StringBuilder
(
512
);
builder
.
append
(
"HTTP/1.1 "
)
.
append
(
code
).
append
(
Code
.
msg
(
code
)).
append
(
"\r\n"
);
if
(
text
!=
null
&&
text
.
length
()
!=
0
)
{
if
(
text
!=
null
&&
text
.
length
()
!=
0
)
{
s
=
s
+
"Content-Length: "
+
text
.
length
()+
"\r\n"
;
builder
.
append
(
"Content-Length: "
)
s
=
s
+
"Content-Type: text/html\r\n"
;
.
append
(
text
.
length
()).
append
(
"\r\n"
)
.
append
(
"Content-Type: text/html\r\n"
);
}
else
{
}
else
{
s
=
s
+
"Content-Length: 0\r\n"
;
builder
.
append
(
"Content-Length: 0\r\n"
)
;
text
=
""
;
text
=
""
;
}
}
if
(
closeNow
)
{
if
(
closeNow
)
{
s
=
s
+
"Connection: close\r\n"
;
builder
.
append
(
"Connection: close\r\n"
)
;
}
}
s
=
s
+
"\r\n"
+
text
;
builder
.
append
(
"\r\n"
).
append
(
text
);
String
s
=
builder
.
toString
();
byte
[]
b
=
s
.
getBytes
(
"ISO8859_1"
);
byte
[]
b
=
s
.
getBytes
(
"ISO8859_1"
);
rawout
.
write
(
b
);
rawout
.
write
(
b
);
rawout
.
flush
();
rawout
.
flush
();
if
(
closeNow
)
{
if
(
closeNow
)
{
c
onnection
.
close
(
);
c
loseConnection
(
connection
);
}
}
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
logger
.
log
(
Level
.
FINER
,
"ServerImpl.sendReply"
,
e
);
logger
.
log
(
Level
.
FINER
,
"ServerImpl.sendReply"
,
e
);
c
onnection
.
close
(
);
c
loseConnection
(
connection
);
}
}
}
}
}
}
void
logReply
(
int
code
,
String
requestStr
,
String
text
)
{
void
logReply
(
int
code
,
String
requestStr
,
String
text
)
{
if
(!
logger
.
isLoggable
(
Level
.
FINE
))
{
return
;
}
if
(
text
==
null
)
{
if
(
text
==
null
)
{
text
=
""
;
text
=
""
;
}
}
String
message
=
requestStr
+
" ["
+
code
+
" "
+
String
r
;
if
(
requestStr
.
length
()
>
80
)
{
r
=
requestStr
.
substring
(
0
,
80
)
+
"<TRUNCATED>"
;
}
else
{
r
=
requestStr
;
}
String
message
=
r
+
" ["
+
code
+
" "
+
Code
.
msg
(
code
)
+
"] ("
+
text
+
")"
;
Code
.
msg
(
code
)
+
"] ("
+
text
+
")"
;
logger
.
fine
(
message
);
logger
.
fine
(
message
);
}
}
...
@@ -667,6 +759,34 @@ class ServerImpl implements TimeSource {
...
@@ -667,6 +759,34 @@ class ServerImpl implements TimeSource {
return
wrapper
;
return
wrapper
;
}
}
void
requestStarted
(
HttpConnection
c
)
{
c
.
creationTime
=
getTime
();
c
.
setState
(
State
.
REQUEST
);
reqConnections
.
add
(
c
);
}
// called after a request has been completely read
// by the server. This stops the timer which would
// close the connection if the request doesn't arrive
// quickly enough. It then starts the timer
// that ensures the client reads the response in a timely
// fashion.
void
requestCompleted
(
HttpConnection
c
)
{
assert
c
.
getState
()
==
State
.
REQUEST
;
reqConnections
.
remove
(
c
);
c
.
rspStartedTime
=
getTime
();
rspConnections
.
add
(
c
);
c
.
setState
(
State
.
RESPONSE
);
}
// called after response has been sent
void
responseCompleted
(
HttpConnection
c
)
{
assert
c
.
getState
()
==
State
.
RESPONSE
;
rspConnections
.
remove
(
c
);
c
.
setState
(
State
.
IDLE
);
}
/**
/**
* TimerTask run every CLOCK_TICK ms
* TimerTask run every CLOCK_TICK ms
*/
*/
...
@@ -689,4 +809,62 @@ class ServerImpl implements TimeSource {
...
@@ -689,4 +809,62 @@ class ServerImpl implements TimeSource {
}
}
}
}
}
}
class
ServerTimerTask1
extends
TimerTask
{
// runs every TIMER_MILLIS
public
void
run
()
{
LinkedList
<
HttpConnection
>
toClose
=
new
LinkedList
<
HttpConnection
>();
time
=
System
.
currentTimeMillis
();
synchronized
(
reqConnections
)
{
if
(
MAX_REQ_TIME
!=
-
1
)
{
for
(
HttpConnection
c
:
reqConnections
)
{
if
(
c
.
creationTime
+
TIMER_MILLIS
+
MAX_REQ_TIME
<=
time
)
{
toClose
.
add
(
c
);
}
}
for
(
HttpConnection
c
:
toClose
)
{
logger
.
log
(
Level
.
FINE
,
"closing: no request: "
+
c
);
reqConnections
.
remove
(
c
);
allConnections
.
remove
(
c
);
c
.
close
();
}
}
}
toClose
=
new
LinkedList
<
HttpConnection
>();
synchronized
(
rspConnections
)
{
if
(
MAX_RSP_TIME
!=
-
1
)
{
for
(
HttpConnection
c
:
rspConnections
)
{
if
(
c
.
rspStartedTime
+
TIMER_MILLIS
+
MAX_RSP_TIME
<=
time
)
{
toClose
.
add
(
c
);
}
}
for
(
HttpConnection
c
:
toClose
)
{
logger
.
log
(
Level
.
FINE
,
"closing: no response: "
+
c
);
rspConnections
.
remove
(
c
);
allConnections
.
remove
(
c
);
c
.
close
();
}
}
}
}
}
void
logStackTrace
(
String
s
)
{
logger
.
finest
(
s
);
StringBuilder
b
=
new
StringBuilder
();
StackTraceElement
[]
e
=
Thread
.
currentThread
().
getStackTrace
();
for
(
int
i
=
0
;
i
<
e
.
length
;
i
++)
{
b
.
append
(
e
[
i
].
toString
()).
append
(
"\n"
);
}
logger
.
finest
(
b
.
toString
());
}
static
long
getTimeMillis
(
long
secs
)
{
if
(
secs
==
-
1
)
{
return
-
1
;
}
else
{
return
secs
*
1000
;
}
}
}
}
src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java
浏览文件 @
a5e5d666
...
@@ -235,8 +235,6 @@ abstract class AsynchronousSocketChannelImpl
...
@@ -235,8 +235,6 @@ abstract class AsynchronousSocketChannelImpl
if
(
remoteAddress
==
null
)
if
(
remoteAddress
==
null
)
throw
new
NotYetConnectedException
();
throw
new
NotYetConnectedException
();
if
(
timeout
<
0L
)
throw
new
IllegalArgumentException
(
"Negative timeout"
);
boolean
hasSpaceToRead
=
isScatteringRead
||
dst
.
hasRemaining
();
boolean
hasSpaceToRead
=
isScatteringRead
||
dst
.
hasRemaining
();
boolean
shutdown
=
false
;
boolean
shutdown
=
false
;
...
@@ -342,8 +340,6 @@ abstract class AsynchronousSocketChannelImpl
...
@@ -342,8 +340,6 @@ abstract class AsynchronousSocketChannelImpl
if
(
isOpen
())
{
if
(
isOpen
())
{
if
(
remoteAddress
==
null
)
if
(
remoteAddress
==
null
)
throw
new
NotYetConnectedException
();
throw
new
NotYetConnectedException
();
if
(
timeout
<
0L
)
throw
new
IllegalArgumentException
(
"Negative timeout"
);
// check and update state
// check and update state
synchronized
(
writeLock
)
{
synchronized
(
writeLock
)
{
if
(
writeKilled
)
if
(
writeKilled
)
...
...
src/share/classes/sun/nio/cs/UTF_8.java
浏览文件 @
a5e5d666
...
@@ -358,7 +358,7 @@ class UTF_8 extends Unicode
...
@@ -358,7 +358,7 @@ class UTF_8 extends Unicode
private
static
class
Encoder
extends
CharsetEncoder
{
private
static
class
Encoder
extends
CharsetEncoder
{
private
Encoder
(
Charset
cs
)
{
private
Encoder
(
Charset
cs
)
{
super
(
cs
,
1.1f
,
4
.0f
);
super
(
cs
,
1.1f
,
3
.0f
);
}
}
public
boolean
canEncode
(
char
c
)
{
public
boolean
canEncode
(
char
c
)
{
...
...
src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java
浏览文件 @
a5e5d666
...
@@ -778,6 +778,13 @@ public class ExtendedCharsets
...
@@ -778,6 +778,13 @@ public class ExtendedCharsets
"csIBM500"
"csIBM500"
});
});
charset
(
"x-IBM833"
,
"IBM833"
,
new
String
[]
{
"cp833"
,
"ibm833"
,
"ibm-833"
});
//EBCDIC DBCS-only Korean
//EBCDIC DBCS-only Korean
charset
(
"x-IBM834"
,
"IBM834"
,
charset
(
"x-IBM834"
,
"IBM834"
,
new
String
[]
{
new
String
[]
{
...
...
src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java
浏览文件 @
a5e5d666
...
@@ -250,16 +250,16 @@ public class CCacheInputStream extends KrbDataInputStream implements FileCCacheC
...
@@ -250,16 +250,16 @@ public class CCacheInputStream extends KrbDataInputStream implements FileCCacheC
else
return
null
;
else
return
null
;
}
}
Ticket
readData
()
throws
IOException
,
RealmException
,
KrbApErrException
,
Asn1
Exception
{
byte
[]
readData
()
throws
IO
Exception
{
int
length
;
int
length
;
length
=
read
(
4
);
length
=
read
(
4
);
if
(
length
>
0
)
{
if
(
length
==
0
)
{
return
null
;
}
else
{
byte
[]
bytes
=
new
byte
[
length
];
byte
[]
bytes
=
new
byte
[
length
];
read
(
bytes
,
0
,
length
);
read
(
bytes
,
0
,
length
);
Ticket
ticket
=
new
Ticket
(
bytes
);
return
bytes
;
return
ticket
;
}
}
else
return
null
;
}
}
boolean
[]
readFlags
()
throws
IOException
{
boolean
[]
readFlags
()
throws
IOException
{
...
@@ -328,6 +328,17 @@ public class CCacheInputStream extends KrbDataInputStream implements FileCCacheC
...
@@ -328,6 +328,17 @@ public class CCacheInputStream extends KrbDataInputStream implements FileCCacheC
}
}
return
flags
;
return
flags
;
}
}
/**
* Reads the next cred in stream.
* @return the next cred, null if ticket or second_ticket unparseable.
*
* Note: MIT krb5 1.8.1 might generate a config entry with server principal
* X-CACHECONF:/krb5_ccache_conf_data/fast_avail/krbtgt/REALM@REALM. The
* entry is used by KDC to inform the client that it support certain
* features. Its ticket is not a valid krb5 ticket and thus this method
* returns null.
*/
Credentials
readCred
(
int
version
)
throws
IOException
,
RealmException
,
KrbApErrException
,
Asn1Exception
{
Credentials
readCred
(
int
version
)
throws
IOException
,
RealmException
,
KrbApErrException
,
Asn1Exception
{
PrincipalName
cpname
=
readPrincipal
(
version
);
PrincipalName
cpname
=
readPrincipal
(
version
);
if
(
DEBUG
)
if
(
DEBUG
)
...
@@ -367,17 +378,17 @@ public class CCacheInputStream extends KrbDataInputStream implements FileCCacheC
...
@@ -367,17 +378,17 @@ public class CCacheInputStream extends KrbDataInputStream implements FileCCacheC
if
(
auData
!=
null
)
{
if
(
auData
!=
null
)
{
auData
=
new
AuthorizationData
(
auDataEntry
);
auData
=
new
AuthorizationData
(
auDataEntry
);
}
}
Ticket
ticket
=
readData
();
byte
[]
ticketData
=
readData
();
if
(
DEBUG
)
{
byte
[]
ticketData2
=
readData
();
System
.
out
.
println
(
">>>DEBUG <CCacheInputStream>"
);
if
(
ticket
==
null
)
{
try
{
System
.
out
.
println
(
"///ticket is null"
);
return
new
Credentials
(
cpname
,
spname
,
key
,
authtime
,
starttime
,
}
endtime
,
renewTill
,
skey
,
tFlags
,
addrs
,
auData
,
ticketData
!=
null
?
new
Ticket
(
ticketData
)
:
null
,
ticketData2
!=
null
?
new
Ticket
(
ticketData2
)
:
null
);
}
catch
(
Exception
e
)
{
// If any of new Ticket(*) fails.
return
null
;
}
}
Ticket
secTicket
=
readData
();
Credentials
cred
=
new
Credentials
(
cpname
,
spname
,
key
,
authtime
,
starttime
,
endtime
,
renewTill
,
skey
,
tFlags
,
addrs
,
auData
,
ticket
,
secTicket
);
return
cred
;
}
}
}
}
src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
浏览文件 @
a5e5d666
/*
/*
* Copyright (c) 2000, 20
09
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 20
10
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -186,7 +186,10 @@ public class FileCredentialsCache extends CredentialsCache
...
@@ -186,7 +186,10 @@ public class FileCredentialsCache extends CredentialsCache
primaryRealm
=
primaryPrincipal
.
getRealm
();
primaryRealm
=
primaryPrincipal
.
getRealm
();
credentialsList
=
new
Vector
<
Credentials
>
();
credentialsList
=
new
Vector
<
Credentials
>
();
while
(
cis
.
available
()
>
0
)
{
while
(
cis
.
available
()
>
0
)
{
credentialsList
.
addElement
(
cis
.
readCred
(
version
));
Credentials
cred
=
cis
.
readCred
(
version
);
if
(
cred
!=
null
)
{
credentialsList
.
addElement
(
cred
);
}
}
}
cis
.
close
();
cis
.
close
();
}
}
...
...
src/share/classes/sun/security/pkcs11/P11Cipher.java
浏览文件 @
a5e5d666
...
@@ -74,7 +74,7 @@ final class P11Cipher extends CipherSpi {
...
@@ -74,7 +74,7 @@ final class P11Cipher extends CipherSpi {
// DEC: return the length of trailing padding bytes given the specified
// DEC: return the length of trailing padding bytes given the specified
// padded data
// padded data
int
unpad
(
byte
[]
paddedData
,
int
len
)
int
unpad
(
byte
[]
paddedData
,
int
len
)
throws
BadPaddingException
;
throws
BadPaddingException
,
IllegalBlockSizeException
;
}
}
private
static
class
PKCS5Padding
implements
Padding
{
private
static
class
PKCS5Padding
implements
Padding
{
...
@@ -96,9 +96,10 @@ final class P11Cipher extends CipherSpi {
...
@@ -96,9 +96,10 @@ final class P11Cipher extends CipherSpi {
}
}
public
int
unpad
(
byte
[]
paddedData
,
int
len
)
public
int
unpad
(
byte
[]
paddedData
,
int
len
)
throws
BadPaddingException
{
throws
BadPaddingException
,
IllegalBlockSizeException
{
if
(
len
<
1
||
len
>
paddedData
.
length
)
{
if
((
len
<
1
)
||
(
len
%
blockSize
!=
0
))
{
throw
new
BadPaddingException
(
"Invalid pad array length!"
);
throw
new
IllegalBlockSizeException
(
"Input length must be multiples of "
+
blockSize
);
}
}
byte
padValue
=
paddedData
[
len
-
1
];
byte
padValue
=
paddedData
[
len
-
1
];
if
(
padValue
<
1
||
padValue
>
blockSize
)
{
if
(
padValue
<
1
||
padValue
>
blockSize
)
{
...
...
src/share/classes/sun/security/ssl/Krb5Helper.java
浏览文件 @
a5e5d666
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
*
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* 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
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
* accompanied this code).
*
*
...
...
src/share/classes/sun/security/ssl/Krb5Proxy.java
浏览文件 @
a5e5d666
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
*
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* 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
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
* accompanied this code).
*
*
...
...
src/share/classes/sun/security/ssl/krb5/Krb5ProxyImpl.java
浏览文件 @
a5e5d666
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
*
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* 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
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
* accompanied this code).
*
*
...
...
src/share/demo/applets/NervousText/example1.html
浏览文件 @
a5e5d666
<title>
Nervous Text 1.1
</title>
<title>
Nervous Text 1.1
</title>
<hr>
<hr>
<applet
code=
"NervousText.class"
width=
534
height=
50
>
<applet
code=
"NervousText.class"
width=
534
height=
50
>
<param
name=
text
value=
"Java
^T^M 2 SDK, Standard Edition 6
.0"
>
<param
name=
text
value=
"Java
SE Development Kit (JDK) 7
.0"
>
</applet>
</applet>
<hr>
<hr>
<a
href=
"NervousText.java"
>
The source.
</a>
<a
href=
"NervousText.java"
>
The source.
</a>
src/share/demo/java2d/J2DBench/src/j2dbench/J2DBench.java
浏览文件 @
a5e5d666
...
@@ -75,7 +75,8 @@ public class J2DBench {
...
@@ -75,7 +75,8 @@ public class J2DBench {
static
JFrame
guiFrame
;
static
JFrame
guiFrame
;
static
final
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"MM.dd.yyyy 'at' HH:mm aaa z"
);
static
final
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"MM.dd.yyyy 'at' HH:mm aaa z"
);
public
static
void
init
()
{
public
static
void
init
()
{
progoptroot
=
new
Group
(
"prog"
,
"Program Options"
);
progoptroot
=
new
Group
(
"prog"
,
"Program Options"
);
...
@@ -176,6 +177,8 @@ public class J2DBench {
...
@@ -176,6 +177,8 @@ public class J2DBench {
public
static
void
main
(
String
argv
[])
{
public
static
void
main
(
String
argv
[])
{
init
();
init
();
TestEnvironment
.
init
();
TestEnvironment
.
init
();
Result
.
init
();
Destinations
.
init
();
Destinations
.
init
();
GraphicsTests
.
init
();
GraphicsTests
.
init
();
RenderTests
.
init
();
RenderTests
.
init
();
...
@@ -323,7 +326,7 @@ public class J2DBench {
...
@@ -323,7 +326,7 @@ public class J2DBench {
}
else
if
(
type
.
equalsIgnoreCase
(
"m"
))
{
}
else
if
(
type
.
equalsIgnoreCase
(
"m"
))
{
multiplyWith
=
60
;
multiplyWith
=
60
;
}
else
{
}
else
{
System
.
out
.
println
(
"Invalid \"-loop\" option specified."
);
System
.
err
.
println
(
"Invalid \"-loop\" option specified."
);
usage
(
1
);
usage
(
1
);
}
}
...
@@ -331,32 +334,20 @@ public class J2DBench {
...
@@ -331,32 +334,20 @@ public class J2DBench {
try
{
try
{
val
=
Integer
.
parseInt
(
argv
[
i
].
substring
(
0
,
argv
[
i
].
length
()
-
1
));
val
=
Integer
.
parseInt
(
argv
[
i
].
substring
(
0
,
argv
[
i
].
length
()
-
1
));
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"Invalid \"-loop\" option specified."
);
System
.
err
.
println
(
"Invalid \"-loop\" option specified."
);
usage
(
1
);
usage
(
1
);
}
}
requiredLoopTime
=
val
*
multiplyWith
*
1000
;
requiredLoopTime
=
val
*
multiplyWith
*
1000
;
}
}
}
else
if
(
arg
.
length
()
>
7
&&
}
else
if
(
arg
.
length
()
>
8
&&
arg
.
substring
(
0
,
7
).
equalsIgnoreCase
(
"-report"
))
arg
.
substring
(
0
,
8
).
equalsIgnoreCase
(
"-report:"
))
{
{
for
(
int
j
=
7
;
j
<
arg
.
length
();
j
++)
{
String
error
=
Result
.
parseRateOpt
(
arg
.
substring
(
8
));
char
c
=
arg
.
charAt
(
j
);
if
(
error
!=
null
)
{
switch
(
c
)
{
System
.
err
.
println
(
"Invalid rate: "
+
error
);
case
'N'
:
Result
.
unitScale
=
Result
.
UNITS_WHOLE
;
break
;
usage
(
1
);
case
'M'
:
Result
.
unitScale
=
Result
.
UNITS_MILLIONS
;
break
;
case
'K'
:
Result
.
unitScale
=
Result
.
UNITS_THOUSANDS
;
break
;
case
'A'
:
Result
.
unitScale
=
Result
.
UNITS_AUTO
;
break
;
case
'U'
:
Result
.
useUnits
=
true
;
break
;
case
'O'
:
Result
.
useUnits
=
false
;
break
;
case
's'
:
Result
.
timeScale
=
Result
.
SECONDS_WHOLE
;
break
;
case
'm'
:
Result
.
timeScale
=
Result
.
SECONDS_MILLIS
;
break
;
case
'u'
:
Result
.
timeScale
=
Result
.
SECONDS_MICROS
;
break
;
case
'n'
:
Result
.
timeScale
=
Result
.
SECONDS_NANOS
;
break
;
case
'a'
:
Result
.
timeScale
=
Result
.
SECONDS_AUTO
;
break
;
case
'/'
:
Result
.
invertRate
=
!
Result
.
invertRate
;
break
;
}
}
}
}
else
{
}
else
{
String
reason
=
Group
.
root
.
setOption
(
arg
);
String
reason
=
Group
.
root
.
setOption
(
arg
);
...
@@ -411,7 +402,7 @@ public class J2DBench {
...
@@ -411,7 +402,7 @@ public class J2DBench {
writer
.
flush
();
writer
.
flush
();
}
catch
(
IOException
ioe
)
{
}
catch
(
IOException
ioe
)
{
ioe
.
printStackTrace
();
ioe
.
printStackTrace
();
System
.
out
.
println
(
"\nERROR : Could not create Loop-Report. Exit"
);
System
.
err
.
println
(
"\nERROR : Could not create Loop-Report. Exit"
);
System
.
exit
(
1
);
System
.
exit
(
1
);
}
}
}
}
...
@@ -466,7 +457,7 @@ public class J2DBench {
...
@@ -466,7 +457,7 @@ public class J2DBench {
}
while
(
J2DBench
.
looping
);
}
while
(
J2DBench
.
looping
);
if
(
J2DBench
.
looping
)
{
if
(
J2DBench
.
looping
)
{
writer
.
println
(
"</html>"
);
writer
.
println
(
"</html>"
);
writer
.
flush
();
writer
.
flush
();
writer
.
close
();
writer
.
close
();
...
...
src/share/demo/java2d/J2DBench/src/j2dbench/Option.java
浏览文件 @
a5e5d666
...
@@ -170,7 +170,7 @@ public abstract class Option extends Node implements Modifier {
...
@@ -170,7 +170,7 @@ public abstract class Option extends Node implements Modifier {
updateGUI
();
updateGUI
();
jcb
.
addItemListener
(
new
ItemListener
()
{
jcb
.
addItemListener
(
new
ItemListener
()
{
public
void
itemStateChanged
(
ItemEvent
e
)
{
public
void
itemStateChanged
(
ItemEvent
e
)
{
if
(
e
.
getStateChange
()
==
e
.
SELECTED
)
{
if
(
e
.
getStateChange
()
==
ItemEvent
.
SELECTED
)
{
JComboBox
jcb
=
(
JComboBox
)
e
.
getItemSelectable
();
JComboBox
jcb
=
(
JComboBox
)
e
.
getItemSelectable
();
value
=
jcb
.
getSelectedIndex
();
value
=
jcb
.
getSelectedIndex
();
if
(
J2DBench
.
verbose
.
isEnabled
())
{
if
(
J2DBench
.
verbose
.
isEnabled
())
{
...
@@ -261,7 +261,7 @@ public abstract class Option extends Node implements Modifier {
...
@@ -261,7 +261,7 @@ public abstract class Option extends Node implements Modifier {
updateGUI
();
updateGUI
();
jcb
.
addItemListener
(
new
ItemListener
()
{
jcb
.
addItemListener
(
new
ItemListener
()
{
public
void
itemStateChanged
(
ItemEvent
e
)
{
public
void
itemStateChanged
(
ItemEvent
e
)
{
value
=
(
e
.
getStateChange
()
==
e
.
SELECTED
);
value
=
(
e
.
getStateChange
()
==
ItemEvent
.
SELECTED
);
if
(
J2DBench
.
verbose
.
isEnabled
())
{
if
(
J2DBench
.
verbose
.
isEnabled
())
{
System
.
out
.
println
(
getOptionString
());
System
.
out
.
println
(
getOptionString
());
}
}
...
@@ -569,8 +569,6 @@ public abstract class Option extends Node implements Modifier {
...
@@ -569,8 +569,6 @@ public abstract class Option extends Node implements Modifier {
}
}
public
String
setValueFromString
(
String
value
)
{
public
String
setValueFromString
(
String
value
)
{
int
prev
=
0
;
int
next
=
0
;
int
enabled
=
0
;
int
enabled
=
0
;
StringTokenizer
st
=
new
StringTokenizer
(
value
,
","
);
StringTokenizer
st
=
new
StringTokenizer
(
value
,
","
);
while
(
st
.
hasMoreTokens
())
{
while
(
st
.
hasMoreTokens
())
{
...
@@ -588,7 +586,6 @@ public abstract class Option extends Node implements Modifier {
...
@@ -588,7 +586,6 @@ public abstract class Option extends Node implements Modifier {
if
(
s
!=
null
)
{
if
(
s
!=
null
)
{
return
"Bad value in list ("
+
s
+
")"
;
return
"Bad value in list ("
+
s
+
")"
;
}
}
prev
=
next
+
1
;
}
}
this
.
enabled
=
enabled
;
this
.
enabled
=
enabled
;
updateGUI
();
updateGUI
();
...
@@ -623,6 +620,175 @@ public abstract class Option extends Node implements Modifier {
...
@@ -623,6 +620,175 @@ public abstract class Option extends Node implements Modifier {
}
}
}
}
public
static
class
ObjectChoice
extends
Option
{
int
size
;
String
optionnames
[];
Object
optionvalues
[];
String
abbrevnames
[];
String
descnames
[];
int
defaultselected
;
int
selected
;
JPanel
jp
;
JComboBox
jcombo
;
public
ObjectChoice
(
Group
parent
,
String
nodeName
,
String
description
,
String
optionnames
[],
Object
optionvalues
[],
String
abbrevnames
[],
String
descnames
[],
int
defaultselected
)
{
this
(
parent
,
nodeName
,
description
,
Math
.
min
(
Math
.
min
(
optionnames
.
length
,
optionvalues
.
length
),
Math
.
min
(
abbrevnames
.
length
,
descnames
.
length
)),
optionnames
,
optionvalues
,
abbrevnames
,
descnames
,
defaultselected
);
}
public
ObjectChoice
(
Group
parent
,
String
nodeName
,
String
description
,
int
size
,
String
optionnames
[],
Object
optionvalues
[],
String
abbrevnames
[],
String
descnames
[],
int
defaultselected
)
{
super
(
parent
,
nodeName
,
description
);
this
.
size
=
size
;
this
.
optionnames
=
trim
(
optionnames
,
size
);
this
.
optionvalues
=
trim
(
optionvalues
,
size
);
this
.
abbrevnames
=
trim
(
abbrevnames
,
size
);
this
.
descnames
=
trim
(
descnames
,
size
);
this
.
selected
=
this
.
defaultselected
=
defaultselected
;
}
private
static
String
[]
trim
(
String
list
[],
int
size
)
{
if
(
list
.
length
==
size
)
{
return
list
;
}
String
newlist
[]
=
new
String
[
size
];
System
.
arraycopy
(
list
,
0
,
newlist
,
0
,
size
);
return
newlist
;
}
private
static
Object
[]
trim
(
Object
list
[],
int
size
)
{
if
(
list
.
length
==
size
)
{
return
list
;
}
Object
newlist
[]
=
new
Object
[
size
];
System
.
arraycopy
(
list
,
0
,
newlist
,
0
,
size
);
return
newlist
;
}
public
void
restoreDefault
()
{
if
(
selected
!=
defaultselected
)
{
selected
=
defaultselected
;
updateGUI
();
}
}
public
void
updateGUI
()
{
if
(
jcombo
!=
null
)
{
jcombo
.
setSelectedIndex
(
this
.
selected
);
}
}
public
boolean
isDefault
()
{
return
(
selected
==
defaultselected
);
}
public
Modifier
.
Iterator
getIterator
(
TestEnvironment
env
)
{
return
new
SwitchIterator
(
optionvalues
,
1
<<
selected
);
}
public
JComponent
getJComponent
()
{
if
(
jp
==
null
)
{
jp
=
new
JPanel
();
jp
.
setLayout
(
new
BorderLayout
());
jp
.
add
(
new
JLabel
(
getDescription
()),
BorderLayout
.
WEST
);
jcombo
=
new
JComboBox
(
descnames
);
updateGUI
();
jcombo
.
addItemListener
(
new
ItemListener
()
{
public
void
itemStateChanged
(
ItemEvent
e
)
{
if
(
e
.
getStateChange
()
==
ItemEvent
.
SELECTED
)
{
selected
=
jcombo
.
getSelectedIndex
();
if
(
J2DBench
.
verbose
.
isEnabled
())
{
System
.
out
.
println
(
getOptionString
());
}
}
}
});
jp
.
add
(
jcombo
,
BorderLayout
.
EAST
);
}
return
jp
;
}
public
Object
getValue
()
{
return
optionvalues
[
selected
];
}
public
int
getIntValue
()
{
return
((
Integer
)
optionvalues
[
selected
]).
intValue
();
}
public
boolean
getBooleanValue
()
{
return
((
Boolean
)
optionvalues
[
selected
]).
booleanValue
();
}
public
String
getValString
()
{
return
optionnames
[
selected
];
}
int
findValueIndex
(
Object
value
)
{
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
if
(
optionvalues
[
i
]
==
value
)
{
return
i
;
}
}
return
-
1
;
}
public
String
getValString
(
Object
value
)
{
return
optionnames
[
findValueIndex
(
value
)];
}
public
String
getAbbreviatedModifierDescription
(
Object
value
)
{
return
abbrevnames
[
findValueIndex
(
value
)];
}
public
String
setValue
(
int
v
)
{
return
setValue
(
new
Integer
(
v
));
}
public
String
setValue
(
boolean
v
)
{
return
setValue
(
new
Boolean
(
v
));
}
public
String
setValue
(
Object
value
)
{
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
if
(
optionvalues
[
i
].
equals
(
value
))
{
this
.
selected
=
i
;
updateGUI
();
return
null
;
}
}
return
"Bad value"
;
}
public
String
setValueFromString
(
String
value
)
{
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
if
(
optionnames
[
i
].
equals
(
value
))
{
this
.
selected
=
i
;
updateGUI
();
return
null
;
}
}
return
"Bad value"
;
}
}
public
static
class
BooleanIterator
implements
Modifier
.
Iterator
{
public
static
class
BooleanIterator
implements
Modifier
.
Iterator
{
private
Boolean
list
[];
private
Boolean
list
[];
private
int
index
;
private
int
index
;
...
...
src/share/demo/java2d/J2DBench/src/j2dbench/Result.java
浏览文件 @
a5e5d666
...
@@ -35,23 +35,199 @@ import java.util.Vector;
...
@@ -35,23 +35,199 @@ import java.util.Vector;
import
java.util.Hashtable
;
import
java.util.Hashtable
;
import
java.util.Enumeration
;
import
java.util.Enumeration
;
import
java.io.PrintWriter
;
import
java.io.PrintWriter
;
import
java.util.HashMap
;
public
class
Result
{
public
class
Result
{
public
static
final
int
UNITS_WHOLE
=
0
;
public
static
final
int
RATE_UNKNOWN
=
0
;
public
static
final
int
UNITS_THOUSANDS
=
1
;
public
static
final
int
UNITS_MILLIONS
=
2
;
public
static
final
int
WORK_OPS
=
1
;
public
static
final
int
UNITS_AUTO
=
3
;
public
static
final
int
WORK_UNITS
=
2
;
public
static
final
int
WORK_THOUSANDS
=
4
;
public
static
final
int
SECONDS_WHOLE
=
0
;
public
static
final
int
WORK_MILLIONS
=
6
;
public
static
final
int
SECONDS_MILLIS
=
1
;
public
static
final
int
WORK_AUTO
=
8
;
public
static
final
int
SECONDS_MICROS
=
2
;
public
static
final
int
SECONDS_NANOS
=
3
;
public
static
final
int
TIME_SECONDS
=
10
;
public
static
final
int
SECONDS_AUTO
=
4
;
public
static
final
int
TIME_MILLIS
=
11
;
public
static
final
int
TIME_MICROS
=
12
;
public
static
int
unitScale
=
UNITS_WHOLE
;
public
static
final
int
TIME_NANOS
=
13
;
public
static
int
timeScale
=
SECONDS_WHOLE
;
public
static
final
int
TIME_AUTO
=
14
;
public
static
boolean
useUnits
=
true
;
public
static
boolean
invertRate
=
false
;
static
Group
resultoptroot
;
static
Option
.
ObjectChoice
timeOpt
;
static
Option
.
ObjectChoice
workOpt
;
static
Option
.
ObjectChoice
rateOpt
;
public
static
void
init
()
{
resultoptroot
=
new
Group
(
TestEnvironment
.
globaloptroot
,
"results"
,
"Result Options"
);
String
workStrings
[]
=
{
"units"
,
"kilounits"
,
"megaunits"
,
"autounits"
,
"ops"
,
"kiloops"
,
"megaops"
,
"autoops"
,
};
String
workDescriptions
[]
=
{
"Test Units"
,
"Thousands of Test Units"
,
"Millions of Test Units"
,
"Auto-scaled Test Units"
,
"Operations"
,
"Thousands of Operations"
,
"Millions of Operations"
,
"Auto-scaled Operations"
,
};
Integer
workObjects
[]
=
{
new
Integer
(
WORK_UNITS
),
new
Integer
(
WORK_THOUSANDS
),
new
Integer
(
WORK_MILLIONS
),
new
Integer
(
WORK_AUTO
),
new
Integer
(
WORK_OPS
|
WORK_UNITS
),
new
Integer
(
WORK_OPS
|
WORK_THOUSANDS
),
new
Integer
(
WORK_OPS
|
WORK_MILLIONS
),
new
Integer
(
WORK_OPS
|
WORK_AUTO
),
};
workOpt
=
new
Option
.
ObjectChoice
(
resultoptroot
,
"workunits"
,
"Work Units"
,
workStrings
,
workObjects
,
workStrings
,
workDescriptions
,
0
);
String
timeStrings
[]
=
{
"sec"
,
"msec"
,
"usec"
,
"nsec"
,
"autosec"
,
};
String
timeDescriptions
[]
=
{
"Seconds"
,
"Milliseconds"
,
"Microseconds"
,
"Nanoseconds"
,
"Auto-scaled seconds"
,
};
Integer
timeObjects
[]
=
{
new
Integer
(
TIME_SECONDS
),
new
Integer
(
TIME_MILLIS
),
new
Integer
(
TIME_MICROS
),
new
Integer
(
TIME_NANOS
),
new
Integer
(
TIME_AUTO
),
};
timeOpt
=
new
Option
.
ObjectChoice
(
resultoptroot
,
"timeunits"
,
"Time Units"
,
timeStrings
,
timeObjects
,
timeStrings
,
timeDescriptions
,
0
);
String
rateStrings
[]
=
{
"unitspersec"
,
"secsperunit"
,
};
String
rateDescriptions
[]
=
{
"Work units per Time"
,
"Time units per Work"
,
};
Boolean
rateObjects
[]
=
{
Boolean
.
FALSE
,
Boolean
.
TRUE
,
};
rateOpt
=
new
Option
.
ObjectChoice
(
resultoptroot
,
"ratio"
,
"Rate Ratio"
,
rateStrings
,
rateObjects
,
rateStrings
,
rateDescriptions
,
0
);
}
public
static
boolean
isTimeUnit
(
int
unit
)
{
return
(
unit
>=
TIME_SECONDS
&&
unit
<=
TIME_AUTO
);
}
public
static
boolean
isWorkUnit
(
int
unit
)
{
return
(
unit
>=
WORK_OPS
&&
unit
<=
(
WORK_AUTO
|
WORK_OPS
));
}
public
static
String
parseRateOpt
(
String
opt
)
{
int
timeScale
=
timeOpt
.
getIntValue
();
int
workScale
=
workOpt
.
getIntValue
();
boolean
invertRate
=
rateOpt
.
getBooleanValue
();
int
divindex
=
opt
.
indexOf
(
'/'
);
if
(
divindex
<
0
)
{
int
unit
=
parseUnit
(
opt
);
if
(
isTimeUnit
(
unit
))
{
timeScale
=
unit
;
}
else
if
(
isWorkUnit
(
unit
))
{
workScale
=
unit
;
}
else
{
return
"Bad unit: "
+
opt
;
}
}
else
{
int
unit1
=
parseUnit
(
opt
.
substring
(
0
,
divindex
));
int
unit2
=
parseUnit
(
opt
.
substring
(
divindex
+
1
));
if
(
isTimeUnit
(
unit1
))
{
if
(
isWorkUnit
(
unit2
))
{
timeScale
=
unit1
;
workScale
=
unit2
;
invertRate
=
true
;
}
else
if
(
isTimeUnit
(
unit2
))
{
return
"Both time units: "
+
opt
;
}
else
{
return
"Bad denominator: "
+
opt
;
}
}
else
if
(
isWorkUnit
(
unit1
))
{
if
(
isWorkUnit
(
unit2
))
{
return
"Both work units: "
+
opt
;
}
else
if
(
isTimeUnit
(
unit2
))
{
timeScale
=
unit2
;
workScale
=
unit1
;
invertRate
=
false
;
}
else
{
return
"Bad denominator: "
+
opt
;
}
}
else
{
return
"Bad numerator: "
+
opt
;
}
}
timeOpt
.
setValue
(
timeScale
);
workOpt
.
setValue
(
workScale
);
rateOpt
.
setValue
(
invertRate
);
return
null
;
}
private
static
HashMap
unitMap
;
static
{
unitMap
=
new
HashMap
();
unitMap
.
put
(
"U"
,
new
Integer
(
WORK_UNITS
));
unitMap
.
put
(
"M"
,
new
Integer
(
WORK_MILLIONS
));
unitMap
.
put
(
"K"
,
new
Integer
(
WORK_THOUSANDS
));
unitMap
.
put
(
"A"
,
new
Integer
(
WORK_AUTO
));
unitMap
.
put
(
"MU"
,
new
Integer
(
WORK_MILLIONS
));
unitMap
.
put
(
"KU"
,
new
Integer
(
WORK_THOUSANDS
));
unitMap
.
put
(
"AU"
,
new
Integer
(
WORK_AUTO
));
unitMap
.
put
(
"O"
,
new
Integer
(
WORK_UNITS
|
WORK_OPS
));
unitMap
.
put
(
"NO"
,
new
Integer
(
WORK_UNITS
|
WORK_OPS
));
unitMap
.
put
(
"MO"
,
new
Integer
(
WORK_MILLIONS
|
WORK_OPS
));
unitMap
.
put
(
"KO"
,
new
Integer
(
WORK_THOUSANDS
|
WORK_OPS
));
unitMap
.
put
(
"AO"
,
new
Integer
(
WORK_AUTO
|
WORK_OPS
));
unitMap
.
put
(
"s"
,
new
Integer
(
TIME_SECONDS
));
unitMap
.
put
(
"m"
,
new
Integer
(
TIME_MILLIS
));
unitMap
.
put
(
"u"
,
new
Integer
(
TIME_MICROS
));
unitMap
.
put
(
"n"
,
new
Integer
(
TIME_NANOS
));
unitMap
.
put
(
"a"
,
new
Integer
(
TIME_AUTO
));
}
public
static
int
parseUnit
(
String
c
)
{
Integer
u
=
(
Integer
)
unitMap
.
get
(
c
);
if
(
u
!=
null
)
{
return
u
.
intValue
();
}
return
RATE_UNKNOWN
;
}
String
unitname
=
"unit"
;
String
unitname
=
"unit"
;
Test
test
;
Test
test
;
...
@@ -157,69 +333,76 @@ public class Result {
...
@@ -157,69 +333,76 @@ public class Result {
}
}
public
String
getAverageString
()
{
public
String
getAverageString
()
{
double
units
=
(
useUnits
?
getTotalUnits
()
:
getTotalReps
());
int
timeScale
=
timeOpt
.
getIntValue
();
int
workScale
=
workOpt
.
getIntValue
();
boolean
invertRate
=
rateOpt
.
getBooleanValue
();
double
time
=
getTotalTime
();
double
time
=
getTotalTime
();
String
timeprefix
=
""
;
switch
(
timeScale
)
{
case
TIME_AUTO:
case
TIME_SECONDS:
time
/=
1000
;
break
;
case
TIME_MILLIS:
timeprefix
=
"m"
;
break
;
case
TIME_MICROS:
time
*=
1000.0
;
timeprefix
=
"u"
;
break
;
case
TIME_NANOS:
time
*=
1000000.0
;
timeprefix
=
"n"
;
break
;
}
String
workprefix
=
""
;
boolean
isOps
=
(
workScale
&
WORK_OPS
)
!=
0
;
String
workname
=
isOps
?
"op"
:
unitname
;
double
work
=
isOps
?
getTotalReps
()
:
getTotalUnits
();
switch
(
workScale
&
(~
WORK_OPS
))
{
case
WORK_AUTO:
case
WORK_UNITS:
break
;
case
WORK_THOUSANDS:
work
/=
1000.0
;
workprefix
=
"K"
;
break
;
case
WORK_MILLIONS:
work
/=
1000000.0
;
workprefix
=
"M"
;
break
;
}
if
(
invertRate
)
{
if
(
invertRate
)
{
double
rate
=
time
/
units
;
double
rate
=
time
/
work
;
String
prefix
=
""
;
if
(
timeScale
==
TIME_AUTO
)
{
switch
(
timeScale
)
{
case
SECONDS_WHOLE:
rate
/=
1000
;
break
;
case
SECONDS_MILLIS:
prefix
=
"m"
;
break
;
case
SECONDS_MICROS:
rate
*=
1000.0
;
prefix
=
"u"
;
break
;
case
SECONDS_NANOS:
rate
*=
1000000.0
;
prefix
=
"n"
;
break
;
case
SECONDS_AUTO:
rate
/=
1000.0
;
if
(
rate
<
1.0
)
{
if
(
rate
<
1.0
)
{
rate
*=
1000.0
;
rate
*=
1000.0
;
prefix
=
"m"
;
time
prefix
=
"m"
;
if
(
rate
<
1.0
)
{
if
(
rate
<
1.0
)
{
rate
*=
1000.0
;
rate
*=
1000.0
;
prefix
=
"u"
;
time
prefix
=
"u"
;
if
(
rate
<
1.0
)
{
if
(
rate
<
1.0
)
{
rate
*=
1000.0
;
rate
*=
1000.0
;
prefix
=
"n"
;
time
prefix
=
"n"
;
}
}
}
}
}
}
break
;
}
}
return
rate
+
" "
+
prefix
+
"secs/"
+(
useUnits
?
unitname
:
"op"
)
;
return
rate
+
" "
+
timeprefix
+
"secs/"
+
workprefix
+
workname
;
}
else
{
}
else
{
double
rate
=
units
/
(
time
/
1000.0
);
double
rate
=
work
/
time
;
String
prefix
=
""
;
if
(
workScale
==
WORK_AUTO
)
{
switch
(
unitScale
)
{
case
UNITS_WHOLE:
break
;
case
UNITS_THOUSANDS:
rate
/=
1000.0
;
prefix
=
"K"
;
break
;
case
UNITS_MILLIONS:
rate
/=
1000000.0
;
prefix
=
"M"
;
break
;
case
UNITS_AUTO:
if
(
rate
>
1000.0
)
{
if
(
rate
>
1000.0
)
{
rate
/=
1000.0
;
rate
/=
1000.0
;
prefix
=
"K"
;
work
prefix
=
"K"
;
if
(
rate
>
1000.0
)
{
if
(
rate
>
1000.0
)
{
rate
/=
1000.0
;
rate
/=
1000.0
;
prefix
=
"M"
;
work
prefix
=
"M"
;
}
}
}
}
break
;
}
}
return
rate
+
" "
+
prefix
+(
useUnits
?
unitname
:
"op"
)+
"s/
sec"
;
return
rate
+
" "
+
workprefix
+
workname
+
"s/"
+
timeprefix
+
"
sec"
;
}
}
}
}
...
...
src/share/demo/java2d/J2DBench/src/j2dbench/report/J2DAnalyzer.java
浏览文件 @
a5e5d666
...
@@ -61,6 +61,8 @@ public class J2DAnalyzer {
...
@@ -61,6 +61,8 @@ public class J2DAnalyzer {
"the following result sets are combined into a group"
);
"the following result sets are combined into a group"
);
out
.
println
(
" -NoGroup "
+
out
.
println
(
" -NoGroup "
+
"the following result sets stand on their own"
);
"the following result sets stand on their own"
);
out
.
println
(
" -ShowUncontested "
+
"show results even when only result set has a result"
);
out
.
println
(
" -Graph "
+
out
.
println
(
" -Graph "
+
"graph the results visually (using lines of *'s)"
);
"graph the results visually (using lines of *'s)"
);
out
.
println
(
" -Best "
+
out
.
println
(
" -Best "
+
...
@@ -83,6 +85,7 @@ public class J2DAnalyzer {
...
@@ -83,6 +85,7 @@ public class J2DAnalyzer {
public
static
void
main
(
String
argv
[])
{
public
static
void
main
(
String
argv
[])
{
boolean
gavehelp
=
false
;
boolean
gavehelp
=
false
;
boolean
graph
=
false
;
boolean
graph
=
false
;
boolean
ignoreuncontested
=
true
;
if
(
argv
.
length
>
0
&&
argv
[
0
].
equalsIgnoreCase
(
"-html"
))
{
if
(
argv
.
length
>
0
&&
argv
[
0
].
equalsIgnoreCase
(
"-html"
))
{
String
newargs
[]
=
new
String
[
argv
.
length
-
1
];
String
newargs
[]
=
new
String
[
argv
.
length
-
1
];
System
.
arraycopy
(
argv
,
1
,
newargs
,
0
,
newargs
.
length
);
System
.
arraycopy
(
argv
,
1
,
newargs
,
0
,
newargs
.
length
);
...
@@ -97,6 +100,8 @@ public class J2DAnalyzer {
...
@@ -97,6 +100,8 @@ public class J2DAnalyzer {
results
.
add
(
groupHolder
);
results
.
add
(
groupHolder
);
}
else
if
(
arg
.
equalsIgnoreCase
(
"-NoGroup"
))
{
}
else
if
(
arg
.
equalsIgnoreCase
(
"-NoGroup"
))
{
groupHolder
=
null
;
groupHolder
=
null
;
}
else
if
(
arg
.
equalsIgnoreCase
(
"-ShowUncontested"
))
{
ignoreuncontested
=
false
;
}
else
if
(
arg
.
equalsIgnoreCase
(
"-Graph"
))
{
}
else
if
(
arg
.
equalsIgnoreCase
(
"-Graph"
))
{
graph
=
true
;
graph
=
true
;
}
else
if
(
arg
.
equalsIgnoreCase
(
"-Best"
))
{
}
else
if
(
arg
.
equalsIgnoreCase
(
"-Best"
))
{
...
@@ -171,18 +176,23 @@ public class J2DAnalyzer {
...
@@ -171,18 +176,23 @@ public class J2DAnalyzer {
String
key
=
keys
[
k
];
String
key
=
keys
[
k
];
ResultHolder
rh
=
base
.
getResultByKey
(
key
);
ResultHolder
rh
=
base
.
getResultByKey
(
key
);
double
score
=
rh
.
getScore
();
double
score
=
rh
.
getScore
();
System
.
out
.
println
(
rh
.
getShortKey
()+
":"
);
double
maxscore
=
score
;
double
maxscore
=
score
;
if
(
graph
)
{
int
numcontesting
=
0
;
for
(
int
i
=
0
;
i
<
numsets
;
i
++)
{
for
(
int
i
=
0
;
i
<
numsets
;
i
++)
{
ResultSetHolder
rsh
=
ResultSetHolder
rsh
=
(
ResultSetHolder
)
results
.
elementAt
(
i
);
(
ResultSetHolder
)
results
.
elementAt
(
i
);
ResultHolder
rh2
=
rsh
.
getResultByKey
(
key
);
ResultHolder
rh2
=
rsh
.
getResultByKey
(
key
);
if
(
rh2
!=
null
)
{
if
(
rh2
!=
null
)
{
if
(
graph
)
{
maxscore
=
Math
.
max
(
maxscore
,
rh2
.
getBestScore
());
maxscore
=
Math
.
max
(
maxscore
,
rh2
.
getBestScore
());
}
}
numcontesting
++;
}
}
}
}
if
(
ignoreuncontested
&&
numcontesting
<
2
)
{
continue
;
}
System
.
out
.
println
(
rh
.
getShortKey
()+
":"
);
for
(
int
i
=
0
;
i
<
numsets
;
i
++)
{
for
(
int
i
=
0
;
i
<
numsets
;
i
++)
{
ResultSetHolder
rsh
=
(
ResultSetHolder
)
results
.
elementAt
(
i
);
ResultSetHolder
rsh
=
(
ResultSetHolder
)
results
.
elementAt
(
i
);
System
.
out
.
print
(
rsh
.
getTitle
()+
": "
);
System
.
out
.
print
(
rsh
.
getTitle
()+
": "
);
...
...
src/share/demo/java2d/J2DBench/src/j2dbench/tests/GraphicsTests.java
浏览文件 @
a5e5d666
...
@@ -38,6 +38,8 @@ import java.awt.RenderingHints;
...
@@ -38,6 +38,8 @@ import java.awt.RenderingHints;
import
java.awt.Polygon
;
import
java.awt.Polygon
;
import
java.awt.Color
;
import
java.awt.Color
;
import
java.awt.Dimension
;
import
java.awt.Dimension
;
import
java.awt.geom.Point2D
;
import
java.awt.geom.AffineTransform
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.Field
;
import
j2dbench.Destinations
;
import
j2dbench.Destinations
;
...
@@ -74,6 +76,7 @@ public abstract class GraphicsTests extends Test {
...
@@ -74,6 +76,7 @@ public abstract class GraphicsTests extends Test {
static
Option
animList
;
static
Option
animList
;
static
Option
sizeList
;
static
Option
sizeList
;
static
Option
compRules
;
static
Option
compRules
;
static
Option
transforms
;
static
Option
doExtraAlpha
;
static
Option
doExtraAlpha
;
static
Option
doXor
;
static
Option
doXor
;
static
Option
doClipping
;
static
Option
doClipping
;
...
@@ -167,6 +170,29 @@ public abstract class GraphicsTests extends Test {
...
@@ -167,6 +170,29 @@ public abstract class GraphicsTests extends Test {
j
,
rulenames
,
rules
,
rulenames
,
j
,
rulenames
,
rules
,
rulenames
,
ruledescs
,
(
1
<<
defrule
));
ruledescs
,
(
1
<<
defrule
));
((
Option
.
ObjectList
)
compRules
).
setNumRows
(
4
);
((
Option
.
ObjectList
)
compRules
).
setNumRows
(
4
);
Transform
xforms
[]
=
{
Identity
.
instance
,
FTranslate
.
instance
,
Scale2x2
.
instance
,
Rotate15
.
instance
,
ShearX
.
instance
,
ShearY
.
instance
,
};
String
xformnames
[]
=
new
String
[
xforms
.
length
];
String
xformdescs
[]
=
new
String
[
xforms
.
length
];
for
(
int
i
=
0
;
i
<
xforms
.
length
;
i
++)
{
xformnames
[
i
]
=
xforms
[
i
].
getShortName
();
xformdescs
[
i
]
=
xforms
[
i
].
getDescription
();
}
transforms
=
new
Option
.
ObjectList
(
groptroot
,
"transform"
,
"Affine Transform"
,
xforms
.
length
,
xformnames
,
xforms
,
xformnames
,
xformdescs
,
0x1
);
((
Option
.
ObjectList
)
transforms
).
setNumRows
(
3
);
doExtraAlpha
=
doExtraAlpha
=
new
Option
.
Toggle
(
groptroot
,
"extraalpha"
,
new
Option
.
Toggle
(
groptroot
,
"extraalpha"
,
"Render with an \"extra alpha\" of 0.125"
,
"Render with an \"extra alpha\" of 0.125"
,
...
@@ -200,6 +226,7 @@ public abstract class GraphicsTests extends Test {
...
@@ -200,6 +226,7 @@ public abstract class GraphicsTests extends Test {
int
orgX
,
orgY
;
int
orgX
,
orgY
;
int
initX
,
initY
;
int
initX
,
initY
;
int
maxX
,
maxY
;
int
maxX
,
maxY
;
double
pixscale
;
}
}
public
GraphicsTests
(
Group
parent
,
String
nodeName
,
String
description
)
{
public
GraphicsTests
(
Group
parent
,
String
nodeName
,
String
description
)
{
...
@@ -211,7 +238,7 @@ public abstract class GraphicsTests extends Test {
...
@@ -211,7 +238,7 @@ public abstract class GraphicsTests extends Test {
public
Object
initTest
(
TestEnvironment
env
,
Result
result
)
{
public
Object
initTest
(
TestEnvironment
env
,
Result
result
)
{
Context
ctx
=
createContext
();
Context
ctx
=
createContext
();
initContext
(
env
,
ctx
);
initContext
(
env
,
ctx
);
result
.
setUnits
(
pixelsTouched
(
ctx
));
result
.
setUnits
(
(
int
)
(
ctx
.
pixscale
*
pixelsTouched
(
ctx
)
));
result
.
setUnitName
(
"pixel"
);
result
.
setUnitName
(
"pixel"
);
return
ctx
;
return
ctx
;
}
}
...
@@ -232,6 +259,9 @@ public abstract class GraphicsTests extends Test {
...
@@ -232,6 +259,9 @@ public abstract class GraphicsTests extends Test {
ctx
.
graphics
=
env
.
getGraphics
();
ctx
.
graphics
=
env
.
getGraphics
();
int
w
=
env
.
getWidth
();
int
w
=
env
.
getWidth
();
int
h
=
env
.
getHeight
();
int
h
=
env
.
getHeight
();
ctx
.
size
=
env
.
getIntValue
(
sizeList
);
ctx
.
outdim
=
getOutputSize
(
ctx
.
size
,
ctx
.
size
);
ctx
.
pixscale
=
1.0
;
if
(
hasGraphics2D
)
{
if
(
hasGraphics2D
)
{
Graphics2D
g2d
=
(
Graphics2D
)
ctx
.
graphics
;
Graphics2D
g2d
=
(
Graphics2D
)
ctx
.
graphics
;
AlphaComposite
ac
=
(
AlphaComposite
)
env
.
getModifier
(
compRules
);
AlphaComposite
ac
=
(
AlphaComposite
)
env
.
getModifier
(
compRules
);
...
@@ -251,11 +281,14 @@ public abstract class GraphicsTests extends Test {
...
@@ -251,11 +281,14 @@ public abstract class GraphicsTests extends Test {
p
.
addPoint
(
0
,
0
);
p
.
addPoint
(
0
,
0
);
g2d
.
clip
(
p
);
g2d
.
clip
(
p
);
}
}
Transform
tx
=
(
Transform
)
env
.
getModifier
(
transforms
);
Dimension
envdim
=
new
Dimension
(
w
,
h
);
tx
.
init
(
g2d
,
ctx
,
envdim
);
w
=
envdim
.
width
;
h
=
envdim
.
height
;
g2d
.
setRenderingHint
(
RenderingHints
.
KEY_RENDERING
,
g2d
.
setRenderingHint
(
RenderingHints
.
KEY_RENDERING
,
env
.
getModifier
(
renderHint
));
env
.
getModifier
(
renderHint
));
}
}
ctx
.
size
=
env
.
getIntValue
(
sizeList
);
ctx
.
outdim
=
getOutputSize
(
ctx
.
size
,
ctx
.
size
);
switch
(
env
.
getIntValue
(
animList
))
{
switch
(
env
.
getIntValue
(
animList
))
{
case
0
:
case
0
:
ctx
.
animate
=
false
;
ctx
.
animate
=
false
;
...
@@ -290,4 +323,201 @@ public abstract class GraphicsTests extends Test {
...
@@ -290,4 +323,201 @@ public abstract class GraphicsTests extends Test {
graphics
.
dispose
();
graphics
.
dispose
();
((
Context
)
ctx
).
graphics
=
null
;
((
Context
)
ctx
).
graphics
=
null
;
}
}
public
abstract
static
class
Transform
{
public
abstract
String
getShortName
();
public
abstract
String
getDescription
();
public
abstract
void
init
(
Graphics2D
g2d
,
Context
ctx
,
Dimension
dim
);
public
static
double
scaleForPoint
(
AffineTransform
at
,
double
xorig
,
double
yorig
,
double
x
,
double
y
,
int
w
,
int
h
)
{
Point2D
.
Double
ptd
=
new
Point2D
.
Double
(
x
,
y
);
at
.
transform
(
ptd
,
ptd
);
x
=
ptd
.
getX
();
y
=
ptd
.
getY
();
double
scale
=
1.0
;
if
(
x
<
0
)
{
scale
=
Math
.
min
(
scale
,
xorig
/
(
xorig
-
x
));
}
else
if
(
x
>
w
)
{
scale
=
Math
.
min
(
scale
,
(
w
-
xorig
)
/
(
x
-
xorig
));
}
if
(
y
<
0
)
{
scale
=
Math
.
min
(
scale
,
yorig
/
(
yorig
-
y
));
}
else
if
(
y
>
h
)
{
scale
=
Math
.
min
(
scale
,
(
h
-
yorig
)
/
(
y
-
yorig
));
}
return
scale
;
}
public
static
Dimension
scaleForTransform
(
AffineTransform
at
,
Dimension
dim
)
{
int
w
=
dim
.
width
;
int
h
=
dim
.
height
;
Point2D
.
Double
ptd
=
new
Point2D
.
Double
(
0
,
0
);
at
.
transform
(
ptd
,
ptd
);
double
ox
=
ptd
.
getX
();
double
oy
=
ptd
.
getY
();
if
(
ox
<
0
||
ox
>
w
||
oy
<
0
||
oy
>
h
)
{
throw
new
InternalError
(
"origin outside destination"
);
}
double
scalex
=
scaleForPoint
(
at
,
ox
,
oy
,
w
,
h
,
w
,
h
);
double
scaley
=
scalex
;
scalex
=
Math
.
min
(
scaleForPoint
(
at
,
ox
,
oy
,
w
,
0
,
w
,
h
),
scalex
);
scaley
=
Math
.
min
(
scaleForPoint
(
at
,
ox
,
oy
,
0
,
h
,
w
,
h
),
scaley
);
if
(
scalex
<
0
||
scaley
<
0
)
{
throw
new
InternalError
(
"could not fit dims to transform"
);
}
return
new
Dimension
((
int
)
Math
.
floor
(
w
*
scalex
),
(
int
)
Math
.
floor
(
h
*
scaley
));
}
}
public
static
class
Identity
extends
Transform
{
public
static
final
Identity
instance
=
new
Identity
();
private
Identity
()
{}
public
String
getShortName
()
{
return
"ident"
;
}
public
String
getDescription
()
{
return
"Identity"
;
}
public
void
init
(
Graphics2D
g2d
,
Context
ctx
,
Dimension
dim
)
{
}
}
public
static
class
FTranslate
extends
Transform
{
public
static
final
FTranslate
instance
=
new
FTranslate
();
private
FTranslate
()
{}
public
String
getShortName
()
{
return
"ftrans"
;
}
public
String
getDescription
()
{
return
"FTranslate 1.5"
;
}
public
void
init
(
Graphics2D
g2d
,
Context
ctx
,
Dimension
dim
)
{
int
w
=
dim
.
width
;
int
h
=
dim
.
height
;
AffineTransform
at
=
new
AffineTransform
();
at
.
translate
(
1.5
,
1.5
);
g2d
.
transform
(
at
);
dim
.
setSize
(
w
-
3
,
h
-
3
);
}
}
public
static
class
Scale2x2
extends
Transform
{
public
static
final
Scale2x2
instance
=
new
Scale2x2
();
private
Scale2x2
()
{}
public
String
getShortName
()
{
return
"scale2x2"
;
}
public
String
getDescription
()
{
return
"Scale 2x by 2x"
;
}
public
void
init
(
Graphics2D
g2d
,
Context
ctx
,
Dimension
dim
)
{
int
w
=
dim
.
width
;
int
h
=
dim
.
height
;
AffineTransform
at
=
new
AffineTransform
();
at
.
scale
(
2.0
,
2.0
);
g2d
.
transform
(
at
);
dim
.
setSize
(
w
/
2
,
h
/
2
);
ctx
.
pixscale
=
4
;
}
}
public
static
class
Rotate15
extends
Transform
{
public
static
final
Rotate15
instance
=
new
Rotate15
();
private
Rotate15
()
{}
public
String
getShortName
()
{
return
"rot15"
;
}
public
String
getDescription
()
{
return
"Rotate 15 degrees"
;
}
public
void
init
(
Graphics2D
g2d
,
Context
ctx
,
Dimension
dim
)
{
int
w
=
dim
.
width
;
int
h
=
dim
.
height
;
double
theta
=
Math
.
toRadians
(
15
);
double
cos
=
Math
.
cos
(
theta
);
double
sin
=
Math
.
sin
(
theta
);
double
xsize
=
sin
*
h
+
cos
*
w
;
double
ysize
=
sin
*
w
+
cos
*
h
;
double
scale
=
Math
.
min
(
w
/
xsize
,
h
/
ysize
);
xsize
*=
scale
;
ysize
*=
scale
;
AffineTransform
at
=
new
AffineTransform
();
at
.
translate
((
w
-
xsize
)
/
2.0
,
(
h
-
ysize
)
/
2.0
);
at
.
translate
(
sin
*
h
*
scale
,
0.0
);
at
.
rotate
(
theta
);
g2d
.
transform
(
at
);
dim
.
setSize
(
scaleForTransform
(
at
,
dim
));
}
}
public
static
class
ShearX
extends
Transform
{
public
static
final
ShearX
instance
=
new
ShearX
();
private
ShearX
()
{}
public
String
getShortName
()
{
return
"shearx"
;
}
public
String
getDescription
()
{
return
"Shear X to the right"
;
}
public
void
init
(
Graphics2D
g2d
,
Context
ctx
,
Dimension
dim
)
{
int
w
=
dim
.
width
;
int
h
=
dim
.
height
;
AffineTransform
at
=
new
AffineTransform
();
at
.
translate
(
0.0
,
(
h
-
(
w
*
h
)/(
w
+
h
*
0.1
))
/
2
);
at
.
shear
(
0.1
,
0.0
);
g2d
.
transform
(
at
);
dim
.
setSize
(
scaleForTransform
(
at
,
dim
));
}
}
public
static
class
ShearY
extends
Transform
{
public
static
final
ShearY
instance
=
new
ShearY
();
private
ShearY
()
{}
public
String
getShortName
()
{
return
"sheary"
;
}
public
String
getDescription
()
{
return
"Shear Y down"
;
}
public
void
init
(
Graphics2D
g2d
,
Context
ctx
,
Dimension
dim
)
{
int
w
=
dim
.
width
;
int
h
=
dim
.
height
;
AffineTransform
at
=
new
AffineTransform
();
at
.
translate
((
w
-
(
w
*
h
)/(
h
+
w
*
0.1
))
/
2
,
0.0
);
at
.
shear
(
0.0
,
0.1
);
g2d
.
transform
(
at
);
dim
.
setSize
(
scaleForTransform
(
at
,
dim
));
}
}
}
}
src/share/demo/java2d/J2DBench/src/j2dbench/tests/text/TextTests.java
浏览文件 @
a5e5d666
...
@@ -454,7 +454,7 @@ public abstract class TextTests extends Test {
...
@@ -454,7 +454,7 @@ public abstract class TextTests extends Test {
taaNames
,
taaHints
,
taaNames
,
taaHints
,
taaNames
,
taaNames
,
taaNames
,
taaNames
,
0x1
);
0x1
);
((
Option
.
ObjectList
)
taaList
).
setNumRows
(
2
);
((
Option
.
ObjectList
)
taaList
).
setNumRows
(
6
);
// add special TextAAOpt for backwards compatibility with
// add special TextAAOpt for backwards compatibility with
// older options files
// older options files
new
TextAAOpt
();
new
TextAAOpt
();
...
@@ -707,3 +707,4 @@ public abstract class TextTests extends Test {
...
@@ -707,3 +707,4 @@ public abstract class TextTests extends Test {
}
}
}
}
}
}
src/share/lib/security/sunpkcs11-solaris.cfg
浏览文件 @
a5e5d666
...
@@ -31,5 +31,9 @@ disabledMechanisms = {
...
@@ -31,5 +31,9 @@ disabledMechanisms = {
CKM_SHA256_RSA_PKCS
CKM_SHA256_RSA_PKCS
CKM_SHA384_RSA_PKCS
CKM_SHA384_RSA_PKCS
CKM_SHA512_RSA_PKCS
CKM_SHA512_RSA_PKCS
# the following mechanisms are disabled to ensure backward compatibility (Solaris bug 6545046)
CKM_DES_CBC_PAD
CKM_DES3_CBC_PAD
CKM_AES_CBC_PAD
}
}
src/share/native/java/util/zip/Deflater.c
浏览文件 @
a5e5d666
...
@@ -132,14 +132,17 @@ Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr,
...
@@ -132,14 +132,17 @@ Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr,
in_buf
=
(
jbyte
*
)
malloc
(
this_len
);
in_buf
=
(
jbyte
*
)
malloc
(
this_len
);
if
(
in_buf
==
0
)
{
if
(
in_buf
==
0
)
{
JNU_ThrowOutOfMemoryError
(
env
,
0
);
// Throw OOME only when length is not zero
if
(
this_len
!=
0
)
JNU_ThrowOutOfMemoryError
(
env
,
0
);
return
0
;
return
0
;
}
}
(
*
env
)
->
GetByteArrayRegion
(
env
,
this_buf
,
this_off
,
this_len
,
in_buf
);
(
*
env
)
->
GetByteArrayRegion
(
env
,
this_buf
,
this_off
,
this_len
,
in_buf
);
out_buf
=
(
jbyte
*
)
malloc
(
len
);
out_buf
=
(
jbyte
*
)
malloc
(
len
);
if
(
out_buf
==
0
)
{
if
(
out_buf
==
0
)
{
free
(
in_buf
);
free
(
in_buf
);
JNU_ThrowOutOfMemoryError
(
env
,
0
);
if
(
len
!=
0
)
JNU_ThrowOutOfMemoryError
(
env
,
0
);
return
0
;
return
0
;
}
}
...
@@ -173,7 +176,8 @@ Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr,
...
@@ -173,7 +176,8 @@ Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr,
jboolean
finish
=
(
*
env
)
->
GetBooleanField
(
env
,
this
,
finishID
);
jboolean
finish
=
(
*
env
)
->
GetBooleanField
(
env
,
this
,
finishID
);
in_buf
=
(
jbyte
*
)
malloc
(
this_len
);
in_buf
=
(
jbyte
*
)
malloc
(
this_len
);
if
(
in_buf
==
0
)
{
if
(
in_buf
==
0
)
{
JNU_ThrowOutOfMemoryError
(
env
,
0
);
if
(
this_len
!=
0
)
JNU_ThrowOutOfMemoryError
(
env
,
0
);
return
0
;
return
0
;
}
}
(
*
env
)
->
GetByteArrayRegion
(
env
,
this_buf
,
this_off
,
this_len
,
in_buf
);
(
*
env
)
->
GetByteArrayRegion
(
env
,
this_buf
,
this_off
,
this_len
,
in_buf
);
...
@@ -181,7 +185,8 @@ Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr,
...
@@ -181,7 +185,8 @@ Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr,
out_buf
=
(
jbyte
*
)
malloc
(
len
);
out_buf
=
(
jbyte
*
)
malloc
(
len
);
if
(
out_buf
==
0
)
{
if
(
out_buf
==
0
)
{
free
(
in_buf
);
free
(
in_buf
);
JNU_ThrowOutOfMemoryError
(
env
,
0
);
if
(
len
!=
0
)
JNU_ThrowOutOfMemoryError
(
env
,
0
);
return
0
;
return
0
;
}
}
...
...
src/share/native/java/util/zip/Inflater.c
浏览文件 @
a5e5d666
...
@@ -135,7 +135,8 @@ Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr,
...
@@ -135,7 +135,8 @@ Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr,
in_buf
=
(
jbyte
*
)
malloc
(
in_len
);
in_buf
=
(
jbyte
*
)
malloc
(
in_len
);
if
(
in_buf
==
0
)
{
if
(
in_buf
==
0
)
{
JNU_ThrowOutOfMemoryError
(
env
,
0
);
if
(
in_len
!=
0
)
JNU_ThrowOutOfMemoryError
(
env
,
0
);
return
0
;
return
0
;
}
}
(
*
env
)
->
GetByteArrayRegion
(
env
,
this_buf
,
this_off
,
in_len
,
in_buf
);
(
*
env
)
->
GetByteArrayRegion
(
env
,
this_buf
,
this_off
,
in_len
,
in_buf
);
...
@@ -143,7 +144,8 @@ Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr,
...
@@ -143,7 +144,8 @@ Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr,
out_buf
=
(
jbyte
*
)
malloc
(
len
);
out_buf
=
(
jbyte
*
)
malloc
(
len
);
if
(
out_buf
==
0
)
{
if
(
out_buf
==
0
)
{
free
(
in_buf
);
free
(
in_buf
);
JNU_ThrowOutOfMemoryError
(
env
,
0
);
if
(
len
!=
0
)
JNU_ThrowOutOfMemoryError
(
env
,
0
);
return
0
;
return
0
;
}
}
...
...
src/share/native/java/util/zip/zip_util.c
浏览文件 @
a5e5d666
...
@@ -314,7 +314,7 @@ findEND(jzfile *zip, void *endbuf)
...
@@ -314,7 +314,7 @@ findEND(jzfile *zip, void *endbuf)
if
(
pos
<
0
)
{
if
(
pos
<
0
)
{
/* Pretend there are some NUL bytes before start of file */
/* Pretend there are some NUL bytes before start of file */
off
=
-
pos
;
off
=
-
pos
;
memset
(
buf
,
'\0'
,
off
);
memset
(
buf
,
'\0'
,
(
size_t
)
off
);
}
}
if
(
readFullyAt
(
zfd
,
buf
+
off
,
sizeof
(
buf
)
-
off
,
if
(
readFullyAt
(
zfd
,
buf
+
off
,
sizeof
(
buf
)
-
off
,
...
@@ -426,7 +426,7 @@ static int
...
@@ -426,7 +426,7 @@ static int
isMetaName
(
const
char
*
name
,
int
length
)
isMetaName
(
const
char
*
name
,
int
length
)
{
{
const
char
*
s
;
const
char
*
s
;
if
(
length
<
sizeof
(
"META-INF/"
)
-
1
)
if
(
length
<
(
int
)
sizeof
(
"META-INF/"
)
-
1
)
return
0
;
return
0
;
for
(
s
=
"META-INF/"
;
*
s
!=
'\0'
;
s
++
)
{
for
(
s
=
"META-INF/"
;
*
s
!=
'\0'
;
s
++
)
{
char
c
=
*
name
++
;
char
c
=
*
name
++
;
...
@@ -912,7 +912,7 @@ readCENHeader(jzfile *zip, jlong cenpos, jint bufsize)
...
@@ -912,7 +912,7 @@ readCENHeader(jzfile *zip, jlong cenpos, jint bufsize)
ZFILE
zfd
=
zip
->
zfd
;
ZFILE
zfd
=
zip
->
zfd
;
char
*
cen
;
char
*
cen
;
if
(
bufsize
>
zip
->
len
-
cenpos
)
if
(
bufsize
>
zip
->
len
-
cenpos
)
bufsize
=
zip
->
len
-
cenpos
;
bufsize
=
(
jint
)(
zip
->
len
-
cenpos
)
;
if
((
cen
=
malloc
(
bufsize
))
==
NULL
)
goto
Catch
;
if
((
cen
=
malloc
(
bufsize
))
==
NULL
)
goto
Catch
;
if
(
readFullyAt
(
zfd
,
cen
,
bufsize
,
cenpos
)
==
-
1
)
goto
Catch
;
if
(
readFullyAt
(
zfd
,
cen
,
bufsize
,
cenpos
)
==
-
1
)
goto
Catch
;
censize
=
CENSIZE
(
cen
);
censize
=
CENSIZE
(
cen
);
...
@@ -1256,6 +1256,9 @@ ZIP_GetEntryDataOffset(jzfile *zip, jzentry *entry)
...
@@ -1256,6 +1256,9 @@ ZIP_GetEntryDataOffset(jzfile *zip, jzentry *entry)
* file had been previously locked with ZIP_Lock(). Returns the
* file had been previously locked with ZIP_Lock(). Returns the
* number of bytes read, or -1 if an error occurred. If zip->msg != 0
* number of bytes read, or -1 if an error occurred. If zip->msg != 0
* then a zip error occurred and zip->msg contains the error text.
* then a zip error occurred and zip->msg contains the error text.
*
* The current implementation does not support reading an entry that
* has the size bigger than 2**32 bytes in ONE invocation.
*/
*/
jint
jint
ZIP_Read
(
jzfile
*
zip
,
jzentry
*
entry
,
jlong
pos
,
void
*
buf
,
jint
len
)
ZIP_Read
(
jzfile
*
zip
,
jzentry
*
entry
,
jlong
pos
,
void
*
buf
,
jint
len
)
...
@@ -1276,7 +1279,7 @@ ZIP_Read(jzfile *zip, jzentry *entry, jlong pos, void *buf, jint len)
...
@@ -1276,7 +1279,7 @@ ZIP_Read(jzfile *zip, jzentry *entry, jlong pos, void *buf, jint len)
if
(
len
<=
0
)
if
(
len
<=
0
)
return
0
;
return
0
;
if
(
len
>
entry_size
-
pos
)
if
(
len
>
entry_size
-
pos
)
len
=
entry_size
-
pos
;
len
=
(
jint
)(
entry_size
-
pos
)
;
/* Get file offset to start reading data */
/* Get file offset to start reading data */
start
=
ZIP_GetEntryDataOffset
(
zip
,
entry
);
start
=
ZIP_GetEntryDataOffset
(
zip
,
entry
);
...
@@ -1306,6 +1309,9 @@ ZIP_Read(jzfile *zip, jzentry *entry, jlong pos, void *buf, jint len)
...
@@ -1306,6 +1309,9 @@ ZIP_Read(jzfile *zip, jzentry *entry, jlong pos, void *buf, jint len)
* from ZIP/JAR files specified in the class path. It is defined here
* from ZIP/JAR files specified in the class path. It is defined here
* so that it can be dynamically loaded by the runtime if the zip library
* so that it can be dynamically loaded by the runtime if the zip library
* is found.
* is found.
*
* The current implementation does not support reading an entry that
* has the size bigger than 2**32 bytes in ONE invocation.
*/
*/
jboolean
jboolean
InflateFully
(
jzfile
*
zip
,
jzentry
*
entry
,
void
*
buf
,
char
**
msg
)
InflateFully
(
jzfile
*
zip
,
jzentry
*
entry
,
void
*
buf
,
char
**
msg
)
...
@@ -1314,7 +1320,6 @@ InflateFully(jzfile *zip, jzentry *entry, void *buf, char **msg)
...
@@ -1314,7 +1320,6 @@ InflateFully(jzfile *zip, jzentry *entry, void *buf, char **msg)
char
tmp
[
BUF_SIZE
];
char
tmp
[
BUF_SIZE
];
jlong
pos
=
0
;
jlong
pos
=
0
;
jlong
count
=
entry
->
csize
;
jlong
count
=
entry
->
csize
;
jboolean
status
;
*
msg
=
0
;
/* Reset error message */
*
msg
=
0
;
/* Reset error message */
...
@@ -1330,10 +1335,10 @@ InflateFully(jzfile *zip, jzentry *entry, void *buf, char **msg)
...
@@ -1330,10 +1335,10 @@ InflateFully(jzfile *zip, jzentry *entry, void *buf, char **msg)
}
}
strm
.
next_out
=
buf
;
strm
.
next_out
=
buf
;
strm
.
avail_out
=
entry
->
size
;
strm
.
avail_out
=
(
uInt
)
entry
->
size
;
while
(
count
>
0
)
{
while
(
count
>
0
)
{
jint
n
=
count
>
(
jlong
)
sizeof
(
tmp
)
?
(
jint
)
sizeof
(
tmp
)
:
count
;
jint
n
=
count
>
(
jlong
)
sizeof
(
tmp
)
?
(
jint
)
sizeof
(
tmp
)
:
(
jint
)
count
;
ZIP_Lock
(
zip
);
ZIP_Lock
(
zip
);
n
=
ZIP_Read
(
zip
,
entry
,
pos
,
tmp
,
n
);
n
=
ZIP_Read
(
zip
,
entry
,
pos
,
tmp
,
n
);
ZIP_Unlock
(
zip
);
ZIP_Unlock
(
zip
);
...
@@ -1368,12 +1373,16 @@ InflateFully(jzfile *zip, jzentry *entry, void *buf, char **msg)
...
@@ -1368,12 +1373,16 @@ InflateFully(jzfile *zip, jzentry *entry, void *buf, char **msg)
return
JNI_TRUE
;
return
JNI_TRUE
;
}
}
/*
* The current implementation does not support reading an entry that
* has the size bigger than 2**32 bytes in ONE invocation.
*/
jzentry
*
JNICALL
jzentry
*
JNICALL
ZIP_FindEntry
(
jzfile
*
zip
,
char
*
name
,
jint
*
sizeP
,
jint
*
nameLenP
)
ZIP_FindEntry
(
jzfile
*
zip
,
char
*
name
,
jint
*
sizeP
,
jint
*
nameLenP
)
{
{
jzentry
*
entry
=
ZIP_GetEntry
(
zip
,
name
,
0
);
jzentry
*
entry
=
ZIP_GetEntry
(
zip
,
name
,
0
);
if
(
entry
)
{
if
(
entry
)
{
*
sizeP
=
entry
->
size
;
*
sizeP
=
(
jint
)
entry
->
size
;
*
nameLenP
=
strlen
(
entry
->
name
);
*
nameLenP
=
strlen
(
entry
->
name
);
}
}
return
entry
;
return
entry
;
...
...
src/share/native/java/util/zip/zlib-1.2.3/compress.c
浏览文件 @
a5e5d666
...
@@ -75,7 +75,7 @@ int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
...
@@ -75,7 +75,7 @@ int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
deflateEnd
(
&
stream
);
deflateEnd
(
&
stream
);
return
err
==
Z_OK
?
Z_BUF_ERROR
:
err
;
return
err
==
Z_OK
?
Z_BUF_ERROR
:
err
;
}
}
*
destLen
=
stream
.
total_out
;
*
destLen
=
(
uLong
)
stream
.
total_out
;
err
=
deflateEnd
(
&
stream
);
err
=
deflateEnd
(
&
stream
);
return
err
;
return
err
;
...
...
src/share/native/java/util/zip/zlib-1.2.3/uncompr.c
浏览文件 @
a5e5d666
...
@@ -78,7 +78,7 @@ int ZEXPORT uncompress (dest, destLen, source, sourceLen)
...
@@ -78,7 +78,7 @@ int ZEXPORT uncompress (dest, destLen, source, sourceLen)
return
Z_DATA_ERROR
;
return
Z_DATA_ERROR
;
return
err
;
return
err
;
}
}
*
destLen
=
stream
.
total_out
;
*
destLen
=
(
uLong
)
stream
.
total_out
;
err
=
inflateEnd
(
&
stream
);
err
=
inflateEnd
(
&
stream
);
return
err
;
return
err
;
...
...
src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java
浏览文件 @
a5e5d666
...
@@ -57,9 +57,12 @@ class GtkFileDialogPeer extends XDialogPeer implements FileDialogPeer {
...
@@ -57,9 +57,12 @@ class GtkFileDialogPeer extends XDialogPeer implements FileDialogPeer {
private
native
void
run
(
String
title
,
int
mode
,
String
dir
,
String
file
,
private
native
void
run
(
String
title
,
int
mode
,
String
dir
,
String
file
,
FilenameFilter
filter
,
boolean
isMultipleMode
);
FilenameFilter
filter
,
boolean
isMultipleMode
);
private
native
void
quit
();
private
native
void
quit
();
@Override
public
native
void
toFront
();
/**
/**
* Called exclusively by the native C code.
* Called exclusively by the native C code.
*/
*/
...
...
src/solaris/classes/sun/awt/X11/XFramePeer.java
浏览文件 @
a5e5d666
...
@@ -150,6 +150,8 @@ class XFramePeer extends XDecoratedPeer implements FramePeer {
...
@@ -150,6 +150,8 @@ class XFramePeer extends XDecoratedPeer implements FramePeer {
void
updateChildrenSizes
()
{
void
updateChildrenSizes
()
{
super
.
updateChildrenSizes
();
super
.
updateChildrenSizes
();
int
height
=
getMenuBarHeight
();
// XWindow.reshape calls XBaseWindow.xSetBounds, which acquires
// XWindow.reshape calls XBaseWindow.xSetBounds, which acquires
// the AWT lock, so we have to acquire the AWT lock here
// the AWT lock, so we have to acquire the AWT lock here
// before getStateLock() to avoid a deadlock with the Toolkit thread
// before getStateLock() to avoid a deadlock with the Toolkit thread
...
@@ -159,7 +161,7 @@ class XFramePeer extends XDecoratedPeer implements FramePeer {
...
@@ -159,7 +161,7 @@ class XFramePeer extends XDecoratedPeer implements FramePeer {
synchronized
(
getStateLock
())
{
synchronized
(
getStateLock
())
{
int
width
=
dimensions
.
getClientSize
().
width
;
int
width
=
dimensions
.
getClientSize
().
width
;
if
(
menubarPeer
!=
null
)
{
if
(
menubarPeer
!=
null
)
{
menubarPeer
.
reshape
(
0
,
0
,
width
,
getMenuBarHeight
()
);
menubarPeer
.
reshape
(
0
,
0
,
width
,
height
);
}
}
}
}
}
finally
{
}
finally
{
...
...
src/solaris/native/java/net/net_util_md.c
浏览文件 @
a5e5d666
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
#include <netdb.h>
#include <netdb.h>
#include <stdlib.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <dlfcn.h>
#include <values.h>
#ifdef __solaris__
#ifdef __solaris__
#include <sys/sockio.h>
#include <sys/sockio.h>
...
@@ -75,17 +76,17 @@ getnameinfo_f getnameinfo_ptr = NULL;
...
@@ -75,17 +76,17 @@ getnameinfo_f getnameinfo_ptr = NULL;
#endif
#endif
#ifdef __solaris__
#ifdef __solaris__
static
int
init_max_buf
;
static
int
init_
tcp_max_buf
,
init_udp_
max_buf
;
static
int
tcp_max_buf
;
static
int
tcp_max_buf
;
static
int
udp_max_buf
;
static
int
udp_max_buf
;
/*
/*
* Get the specified parameter from the specified driver. The value
* Get the specified parameter from the specified driver. The value
* of the parameter is assumed to be an 'int'. If the parameter
* of the parameter is assumed to be an 'int'. If the parameter
* cannot be obtained return
the specified default value.
* cannot be obtained return
-1
*/
*/
static
int
static
int
getParam
(
char
*
driver
,
char
*
param
,
int
dflt
)
getParam
(
char
*
driver
,
char
*
param
)
{
{
struct
strioctl
stri
;
struct
strioctl
stri
;
char
buf
[
64
];
char
buf
[
64
];
...
@@ -94,7 +95,7 @@ getParam(char *driver, char *param, int dflt)
...
@@ -94,7 +95,7 @@ getParam(char *driver, char *param, int dflt)
s
=
open
(
driver
,
O_RDWR
);
s
=
open
(
driver
,
O_RDWR
);
if
(
s
<
0
)
{
if
(
s
<
0
)
{
return
dflt
;
return
-
1
;
}
}
strncpy
(
buf
,
param
,
sizeof
(
buf
));
strncpy
(
buf
,
param
,
sizeof
(
buf
));
stri
.
ic_cmd
=
ND_GET
;
stri
.
ic_cmd
=
ND_GET
;
...
@@ -102,13 +103,64 @@ getParam(char *driver, char *param, int dflt)
...
@@ -102,13 +103,64 @@ getParam(char *driver, char *param, int dflt)
stri
.
ic_dp
=
buf
;
stri
.
ic_dp
=
buf
;
stri
.
ic_len
=
sizeof
(
buf
);
stri
.
ic_len
=
sizeof
(
buf
);
if
(
ioctl
(
s
,
I_STR
,
&
stri
)
<
0
)
{
if
(
ioctl
(
s
,
I_STR
,
&
stri
)
<
0
)
{
value
=
dflt
;
value
=
-
1
;
}
else
{
}
else
{
value
=
atoi
(
buf
);
value
=
atoi
(
buf
);
}
}
close
(
s
);
close
(
s
);
return
value
;
return
value
;
}
}
/*
* Iterative way to find the max value that SO_SNDBUF or SO_RCVBUF
* for Solaris versions that do not support the ioctl() in getParam().
* Ugly, but only called once (for each sotype).
*
* As an optimisation, we make a guess using the default values for Solaris
* assuming they haven't been modified with ndd.
*/
#define MAX_TCP_GUESS 1024 * 1024
#define MAX_UDP_GUESS 2 * 1024 * 1024
#define FAIL_IF_NOT_ENOBUFS if (errno != ENOBUFS) return -1
static
int
findMaxBuf
(
int
fd
,
int
opt
,
int
sotype
)
{
int
a
=
0
;
int
b
=
MAXINT
;
int
initial_guess
;
int
limit
=
-
1
;
if
(
sotype
==
SOCK_DGRAM
)
{
initial_guess
=
MAX_UDP_GUESS
;
}
else
{
initial_guess
=
MAX_TCP_GUESS
;
}
if
(
setsockopt
(
fd
,
SOL_SOCKET
,
opt
,
&
initial_guess
,
sizeof
(
int
))
==
0
)
{
initial_guess
++
;
if
(
setsockopt
(
fd
,
SOL_SOCKET
,
opt
,
&
initial_guess
,
sizeof
(
int
))
<
0
)
{
FAIL_IF_NOT_ENOBUFS
;
return
initial_guess
-
1
;
}
a
=
initial_guess
;
}
else
{
FAIL_IF_NOT_ENOBUFS
;
b
=
initial_guess
-
1
;
}
do
{
int
mid
=
a
+
(
b
-
a
)
/
2
;
if
(
setsockopt
(
fd
,
SOL_SOCKET
,
opt
,
&
mid
,
sizeof
(
int
))
==
0
)
{
limit
=
mid
;
a
=
mid
+
1
;
}
else
{
FAIL_IF_NOT_ENOBUFS
;
b
=
mid
-
1
;
}
}
while
(
b
>=
a
);
return
limit
;
}
#endif
#endif
#ifdef __linux__
#ifdef __linux__
...
@@ -1148,7 +1200,6 @@ NET_GetSockOpt(int fd, int level, int opt, void *result,
...
@@ -1148,7 +1200,6 @@ NET_GetSockOpt(int fd, int level, int opt, void *result,
return
rv
;
return
rv
;
}
}
/*
/*
* Wrapper for setsockopt system routine - performs any
* Wrapper for setsockopt system routine - performs any
* necessary pre/post processing to deal with OS specific
* necessary pre/post processing to deal with OS specific
...
@@ -1212,7 +1263,7 @@ NET_SetSockOpt(int fd, int level, int opt, const void *arg,
...
@@ -1212,7 +1263,7 @@ NET_SetSockOpt(int fd, int level, int opt, const void *arg,
#ifdef __solaris__
#ifdef __solaris__
if
(
level
==
SOL_SOCKET
)
{
if
(
level
==
SOL_SOCKET
)
{
if
(
opt
==
SO_SNDBUF
||
opt
==
SO_RCVBUF
)
{
if
(
opt
==
SO_SNDBUF
||
opt
==
SO_RCVBUF
)
{
int
sotype
,
arglen
;
int
sotype
=
0
,
arglen
;
int
*
bufsize
,
maxbuf
;
int
*
bufsize
,
maxbuf
;
int
ret
;
int
ret
;
...
@@ -1223,18 +1274,37 @@ NET_SetSockOpt(int fd, int level, int opt, const void *arg,
...
@@ -1223,18 +1274,37 @@ NET_SetSockOpt(int fd, int level, int opt, const void *arg,
/* Exceeded system limit so clamp and retry */
/* Exceeded system limit so clamp and retry */
if
(
!
init_max_buf
)
{
tcp_max_buf
=
getParam
(
"/dev/tcp"
,
"tcp_max_buf"
,
1024
*
1024
);
udp_max_buf
=
getParam
(
"/dev/udp"
,
"udp_max_buf"
,
2048
*
1024
);
init_max_buf
=
1
;
}
arglen
=
sizeof
(
sotype
);
arglen
=
sizeof
(
sotype
);
if
(
getsockopt
(
fd
,
SOL_SOCKET
,
SO_TYPE
,
(
void
*
)
&
sotype
,
if
(
getsockopt
(
fd
,
SOL_SOCKET
,
SO_TYPE
,
(
void
*
)
&
sotype
,
&
arglen
)
<
0
)
{
&
arglen
)
<
0
)
{
return
-
1
;
return
-
1
;
}
}
/*
* We try to get tcp_maxbuf (and udp_max_buf) using
* an ioctl() that isn't available on all versions of Solaris.
* If that fails, we use the search algorithm in findMaxBuf()
*/
if
(
!
init_tcp_max_buf
&&
sotype
==
SOCK_STREAM
)
{
tcp_max_buf
=
getParam
(
"/dev/tcp"
,
"tcp_max_buf"
);
if
(
tcp_max_buf
==
-
1
)
{
tcp_max_buf
=
findMaxBuf
(
fd
,
opt
,
SOCK_STREAM
);
if
(
tcp_max_buf
==
-
1
)
{
return
-
1
;
}
}
init_tcp_max_buf
=
1
;
}
else
if
(
!
init_udp_max_buf
&&
sotype
==
SOCK_DGRAM
)
{
udp_max_buf
=
getParam
(
"/dev/udp"
,
"udp_max_buf"
);
if
(
udp_max_buf
==
-
1
)
{
udp_max_buf
=
findMaxBuf
(
fd
,
opt
,
SOCK_DGRAM
);
if
(
udp_max_buf
==
-
1
)
{
return
-
1
;
}
}
init_udp_max_buf
=
1
;
}
maxbuf
=
(
sotype
==
SOCK_STREAM
)
?
tcp_max_buf
:
udp_max_buf
;
maxbuf
=
(
sotype
==
SOCK_STREAM
)
?
tcp_max_buf
:
udp_max_buf
;
bufsize
=
(
int
*
)
arg
;
bufsize
=
(
int
*
)
arg
;
if
(
*
bufsize
>
maxbuf
)
{
if
(
*
bufsize
>
maxbuf
)
{
...
...
src/solaris/native/sun/awt/gtk2_interface.c
浏览文件 @
a5e5d666
...
@@ -607,6 +607,7 @@ gboolean gtk2_load()
...
@@ -607,6 +607,7 @@ gboolean gtk2_load()
fp_gtk_tree_view_new
=
dl_symbol
(
"gtk_tree_view_new"
);
fp_gtk_tree_view_new
=
dl_symbol
(
"gtk_tree_view_new"
);
fp_gtk_viewport_new
=
dl_symbol
(
"gtk_viewport_new"
);
fp_gtk_viewport_new
=
dl_symbol
(
"gtk_viewport_new"
);
fp_gtk_window_new
=
dl_symbol
(
"gtk_window_new"
);
fp_gtk_window_new
=
dl_symbol
(
"gtk_window_new"
);
fp_gtk_window_present
=
dl_symbol
(
"gtk_window_present"
);
fp_gtk_dialog_new
=
dl_symbol
(
"gtk_dialog_new"
);
fp_gtk_dialog_new
=
dl_symbol
(
"gtk_dialog_new"
);
fp_gtk_frame_new
=
dl_symbol
(
"gtk_frame_new"
);
fp_gtk_frame_new
=
dl_symbol
(
"gtk_frame_new"
);
...
...
src/solaris/native/sun/awt/gtk2_interface.h
浏览文件 @
a5e5d666
...
@@ -749,6 +749,7 @@ int (*fp_gdk_pixbuf_get_rowstride)(const GdkPixbuf *pixbuf);
...
@@ -749,6 +749,7 @@ int (*fp_gdk_pixbuf_get_rowstride)(const GdkPixbuf *pixbuf);
int
(
*
fp_gdk_pixbuf_get_width
)(
const
GdkPixbuf
*
pixbuf
);
int
(
*
fp_gdk_pixbuf_get_width
)(
const
GdkPixbuf
*
pixbuf
);
GdkPixbuf
*
(
*
fp_gdk_pixbuf_new_from_file
)(
const
char
*
filename
,
GError
**
error
);
GdkPixbuf
*
(
*
fp_gdk_pixbuf_new_from_file
)(
const
char
*
filename
,
GError
**
error
);
void
(
*
fp_gtk_widget_destroy
)(
GtkWidget
*
widget
);
void
(
*
fp_gtk_widget_destroy
)(
GtkWidget
*
widget
);
void
(
*
fp_gtk_window_present
)(
GtkWindow
*
window
);
/**
/**
...
...
src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.c
浏览文件 @
a5e5d666
...
@@ -80,6 +80,28 @@ JNIEXPORT void JNICALL Java_sun_awt_X11_GtkFileDialogPeer_quit
...
@@ -80,6 +80,28 @@ JNIEXPORT void JNICALL Java_sun_awt_X11_GtkFileDialogPeer_quit
quit
(
env
,
jpeer
,
FALSE
);
quit
(
env
,
jpeer
,
FALSE
);
}
}
/*
* Class: sun_awt_X11_GtkFileDialogPeer
* Method: toFront
* Signature: ()V
*/
JNIEXPORT
void
JNICALL
Java_sun_awt_X11_GtkFileDialogPeer_toFront
(
JNIEnv
*
env
,
jobject
jpeer
)
{
GtkWidget
*
dialog
;
fp_gdk_threads_enter
();
dialog
=
(
GtkWidget
*
)
jlong_to_ptr
(
(
*
env
)
->
GetLongField
(
env
,
jpeer
,
widgetFieldID
));
if
(
dialog
!=
NULL
)
{
fp_gtk_window_present
((
GtkWindow
*
)
dialog
);
}
fp_gdk_threads_leave
();
}
/**
/**
* Convert a GSList to an array of filenames (without the parent folder)
* Convert a GSList to an array of filenames (without the parent folder)
*/
*/
...
...
src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.h
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
src/windows/classes/sun/awt/windows/WFramePeer.java
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
src/windows/classes/sun/security/krb5/internal/tools/Ktab.java
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
src/windows/native/sun/windows/awt_Choice.cpp
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
src/windows/native/sun/windows/awt_Choice.h
浏览文件 @
a5e5d666
...
@@ -94,6 +94,7 @@ private:
...
@@ -94,6 +94,7 @@ private:
static
BOOL
sm_isMouseMoveInList
;
static
BOOL
sm_isMouseMoveInList
;
HWND
m_hList
;
HWND
m_hList
;
WNDPROC
m_listDefWindowProc
;
WNDPROC
m_listDefWindowProc
;
int
m_selectedItem
;
static
LRESULT
CALLBACK
ListWindowProc
(
HWND
hwnd
,
UINT
message
,
static
LRESULT
CALLBACK
ListWindowProc
(
HWND
hwnd
,
UINT
message
,
WPARAM
wParam
,
LPARAM
lParam
);
WPARAM
wParam
,
LPARAM
lParam
);
};
};
...
...
src/windows/resource/java.manifest
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/ProblemList.txt
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/com/sun/net/httpserver/Test.java
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/com/sun/net/httpserver/Test1.java
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/com/sun/net/httpserver/Test13.java
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/com/sun/net/httpserver/bugs/6725892/Test.java
0 → 100644
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/com/sun/net/httpserver/bugs/B6401598.java
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/java/awt/Color/OpacityChange/OpacityChange.java
0 → 100644
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/java/awt/MenuBar/DeadlockTest1/DeadlockTest1.java
0 → 100644
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/java/nio/Buffer/StringCharBufferSliceTest.java
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/java/nio/channels/AsynchronousSocketChannel/Basic.java
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/java/security/Security/ClassLoaderDeadlock/ClassLoaderDeadlock.sh
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/java/security/Security/ClassLoaderDeadlock/Deadlock2.sh
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/java/util/concurrent/Executors/AutoShutdown.java
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/sun/nio/cs/CheckHistoricalNames.java
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/sun/security/krb5/UnknownCCEntry.java
0 → 100644
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/sun/security/krb5/tools/ktarg.sh
0 → 100644
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/sun/security/pkcs11/Cipher/TestPKCS5PaddingError.java
0 → 100644
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/sun/security/pkcs11/KeyGenerator/TestKeyGenerator.java
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
test/tools/launcher/Settings.java
0 → 100644
浏览文件 @
a5e5d666
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录