Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
503c18aa
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看板
提交
503c18aa
编写于
5月 16, 2011
作者:
L
lana
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
58fae5ce
d5dd5c75
变更
113
展开全部
显示空白变更内容
内联
并排
Showing
113 changed file
with
1691 addition
and
395 deletion
+1691
-395
make/com/sun/nio/sctp/FILES_java.gmk
make/com/sun/nio/sctp/FILES_java.gmk
+1
-1
make/java/management/mapfile-vers
make/java/management/mapfile-vers
+1
-0
make/java/nio/FILES_java.gmk
make/java/nio/FILES_java.gmk
+2
-2
src/share/classes/com/sun/management/GarbageCollectionNotificationInfo.java
...com/sun/management/GarbageCollectionNotificationInfo.java
+237
-0
src/share/classes/com/sun/nio/sctp/MessageInfo.java
src/share/classes/com/sun/nio/sctp/MessageInfo.java
+2
-2
src/share/classes/com/sun/nio/sctp/SctpChannel.java
src/share/classes/com/sun/nio/sctp/SctpChannel.java
+15
-15
src/share/classes/com/sun/nio/sctp/SctpMultiChannel.java
src/share/classes/com/sun/nio/sctp/SctpMultiChannel.java
+15
-15
src/share/classes/com/sun/nio/sctp/SctpServerChannel.java
src/share/classes/com/sun/nio/sctp/SctpServerChannel.java
+3
-3
src/share/classes/com/sun/nio/sctp/SctpSocketOption.java
src/share/classes/com/sun/nio/sctp/SctpSocketOption.java
+1
-1
src/share/classes/com/sun/nio/sctp/SctpStandardSocketOptions.java
...e/classes/com/sun/nio/sctp/SctpStandardSocketOptions.java
+7
-7
src/share/classes/java/lang/SafeVarargs.java
src/share/classes/java/lang/SafeVarargs.java
+20
-8
src/share/classes/java/lang/Throwable.java
src/share/classes/java/lang/Throwable.java
+23
-5
src/share/classes/java/net/SocketOption.java
src/share/classes/java/net/SocketOption.java
+1
-1
src/share/classes/java/net/StandardSocketOptions.java
src/share/classes/java/net/StandardSocketOptions.java
+2
-2
src/share/classes/java/nio/channels/AsynchronousServerSocketChannel.java
...es/java/nio/channels/AsynchronousServerSocketChannel.java
+2
-2
src/share/classes/java/nio/channels/AsynchronousSocketChannel.java
.../classes/java/nio/channels/AsynchronousSocketChannel.java
+5
-5
src/share/classes/java/nio/channels/DatagramChannel.java
src/share/classes/java/nio/channels/DatagramChannel.java
+8
-8
src/share/classes/java/nio/channels/MulticastChannel.java
src/share/classes/java/nio/channels/MulticastChannel.java
+4
-4
src/share/classes/java/nio/channels/NetworkChannel.java
src/share/classes/java/nio/channels/NetworkChannel.java
+2
-2
src/share/classes/java/nio/channels/ServerSocketChannel.java
src/share/classes/java/nio/channels/ServerSocketChannel.java
+2
-2
src/share/classes/java/nio/channels/SocketChannel.java
src/share/classes/java/nio/channels/SocketChannel.java
+6
-6
src/share/classes/java/nio/charset/Charset.java
src/share/classes/java/nio/charset/Charset.java
+1
-1
src/share/classes/java/nio/charset/StandardCharsets.java
src/share/classes/java/nio/charset/StandardCharsets.java
+3
-3
src/share/classes/java/nio/file/Path.java
src/share/classes/java/nio/file/Path.java
+5
-5
src/share/classes/java/nio/file/StandardWatchEventKinds.java
src/share/classes/java/nio/file/StandardWatchEventKinds.java
+4
-4
src/share/classes/java/nio/file/WatchEvent.java
src/share/classes/java/nio/file/WatchEvent.java
+4
-4
src/share/classes/java/nio/file/WatchService.java
src/share/classes/java/nio/file/WatchService.java
+2
-2
src/share/classes/java/nio/file/Watchable.java
src/share/classes/java/nio/file/Watchable.java
+1
-1
src/share/classes/java/sql/BatchUpdateException.java
src/share/classes/java/sql/BatchUpdateException.java
+3
-3
src/share/classes/java/util/Formatter.java
src/share/classes/java/util/Formatter.java
+6
-6
src/share/classes/java/util/concurrent/Phaser.java
src/share/classes/java/util/concurrent/Phaser.java
+1
-1
src/share/classes/java/util/concurrent/locks/LockSupport.java
...share/classes/java/util/concurrent/locks/LockSupport.java
+4
-0
src/share/classes/java/util/logging/LogManager.java
src/share/classes/java/util/logging/LogManager.java
+27
-4
src/share/classes/java/util/logging/Logger.java
src/share/classes/java/util/logging/Logger.java
+22
-3
src/share/classes/java/util/regex/Pattern.java
src/share/classes/java/util/regex/Pattern.java
+1
-1
src/share/classes/java/util/zip/ZipCoder.java
src/share/classes/java/util/zip/ZipCoder.java
+4
-4
src/share/classes/java/util/zip/ZipFile.java
src/share/classes/java/util/zip/ZipFile.java
+2
-2
src/share/classes/java/util/zip/ZipInputStream.java
src/share/classes/java/util/zip/ZipInputStream.java
+2
-2
src/share/classes/java/util/zip/ZipOutputStream.java
src/share/classes/java/util/zip/ZipOutputStream.java
+2
-2
src/share/classes/javax/management/loading/package.html
src/share/classes/javax/management/loading/package.html
+2
-2
src/share/classes/javax/management/modelmbean/package.html
src/share/classes/javax/management/modelmbean/package.html
+2
-2
src/share/classes/javax/management/monitor/package.html
src/share/classes/javax/management/monitor/package.html
+2
-2
src/share/classes/javax/management/openmbean/package.html
src/share/classes/javax/management/openmbean/package.html
+2
-2
src/share/classes/javax/management/package.html
src/share/classes/javax/management/package.html
+2
-2
src/share/classes/javax/management/relation/package.html
src/share/classes/javax/management/relation/package.html
+2
-2
src/share/classes/javax/management/remote/package.html
src/share/classes/javax/management/remote/package.html
+2
-2
src/share/classes/javax/management/timer/Timer.java
src/share/classes/javax/management/timer/Timer.java
+5
-1
src/share/classes/sun/awt/FontDescriptor.java
src/share/classes/sun/awt/FontDescriptor.java
+3
-3
src/share/classes/sun/management/GarbageCollectionNotifInfoCompositeData.java
...n/management/GarbageCollectionNotifInfoCompositeData.java
+219
-0
src/share/classes/sun/management/GarbageCollectorImpl.java
src/share/classes/sun/management/GarbageCollectorImpl.java
+104
-5
src/share/classes/sun/management/GcInfoCompositeData.java
src/share/classes/sun/management/GcInfoCompositeData.java
+44
-3
src/share/classes/sun/management/MemoryManagerImpl.java
src/share/classes/sun/management/MemoryManagerImpl.java
+14
-2
src/share/classes/sun/management/VMManagement.java
src/share/classes/sun/management/VMManagement.java
+1
-0
src/share/classes/sun/management/VMManagementImpl.java
src/share/classes/sun/management/VMManagementImpl.java
+6
-0
src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java
...asses/sun/nio/ch/AsynchronousServerSocketChannelImpl.java
+3
-3
src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java
...are/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java
+6
-6
src/share/classes/sun/nio/ch/DatagramChannelImpl.java
src/share/classes/sun/nio/ch/DatagramChannelImpl.java
+16
-16
src/share/classes/sun/nio/ch/DatagramSocketAdaptor.java
src/share/classes/sun/nio/ch/DatagramSocketAdaptor.java
+10
-10
src/share/classes/sun/nio/ch/ExtendedSocketOption.java
src/share/classes/sun/nio/ch/ExtendedSocketOption.java
+1
-1
src/share/classes/sun/nio/ch/NativeThreadSet.java
src/share/classes/sun/nio/ch/NativeThreadSet.java
+6
-1
src/share/classes/sun/nio/ch/Net.java
src/share/classes/sun/nio/ch/Net.java
+5
-5
src/share/classes/sun/nio/ch/ServerSocketAdaptor.java
src/share/classes/sun/nio/ch/ServerSocketAdaptor.java
+4
-4
src/share/classes/sun/nio/ch/ServerSocketChannelImpl.java
src/share/classes/sun/nio/ch/ServerSocketChannelImpl.java
+2
-2
src/share/classes/sun/nio/ch/SocketAdaptor.java
src/share/classes/sun/nio/ch/SocketAdaptor.java
+14
-14
src/share/classes/sun/nio/ch/SocketChannelImpl.java
src/share/classes/sun/nio/ch/SocketChannelImpl.java
+9
-9
src/share/classes/sun/nio/fs/AbstractPoller.java
src/share/classes/sun/nio/fs/AbstractPoller.java
+4
-4
src/share/classes/sun/nio/fs/AbstractWatchKey.java
src/share/classes/sun/nio/fs/AbstractWatchKey.java
+7
-7
src/share/classes/sun/nio/fs/PollingWatchService.java
src/share/classes/sun/nio/fs/PollingWatchService.java
+12
-12
src/share/classes/sun/security/jgss/spi/GSSContextSpi.java
src/share/classes/sun/security/jgss/spi/GSSContextSpi.java
+0
-12
src/share/classes/sun/security/ssl/JsseJce.java
src/share/classes/sun/security/ssl/JsseJce.java
+3
-3
src/share/classes/sun/text/resources/BreakIteratorRules_th.java
...are/classes/sun/text/resources/BreakIteratorRules_th.java
+1
-11
src/share/javavm/export/jmm.h
src/share/javavm/export/jmm.h
+4
-1
src/share/native/sun/management/GarbageCollectorImpl.c
src/share/native/sun/management/GarbageCollectorImpl.c
+15
-1
src/share/native/sun/management/VMManagementImpl.c
src/share/native/sun/management/VMManagementImpl.c
+7
-0
src/share/native/sun/nio/ch/genSocketOptionRegistry.c
src/share/native/sun/nio/ch/genSocketOptionRegistry.c
+16
-16
src/share/sample/nio/chatserver/ChatServer.java
src/share/sample/nio/chatserver/ChatServer.java
+3
-3
src/share/sample/nio/file/WatchDir.java
src/share/sample/nio/file/WatchDir.java
+1
-1
src/share/sample/nio/multicast/Reader.java
src/share/sample/nio/multicast/Reader.java
+1
-1
src/share/sample/nio/multicast/Sender.java
src/share/sample/nio/multicast/Sender.java
+1
-1
src/solaris/classes/sun/nio/ch/SctpChannelImpl.java
src/solaris/classes/sun/nio/ch/SctpChannelImpl.java
+1
-1
src/solaris/classes/sun/nio/ch/SctpMultiChannelImpl.java
src/solaris/classes/sun/nio/ch/SctpMultiChannelImpl.java
+1
-1
src/solaris/classes/sun/nio/ch/SctpNet.java
src/solaris/classes/sun/nio/ch/SctpNet.java
+1
-1
src/solaris/classes/sun/nio/ch/SctpServerChannelImpl.java
src/solaris/classes/sun/nio/ch/SctpServerChannelImpl.java
+2
-2
src/solaris/classes/sun/nio/fs/LinuxWatchService.java
src/solaris/classes/sun/nio/fs/LinuxWatchService.java
+10
-10
src/solaris/classes/sun/nio/fs/SolarisWatchService.java
src/solaris/classes/sun/nio/fs/SolarisWatchService.java
+9
-9
src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c
src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c
+11
-10
src/windows/classes/sun/nio/fs/WindowsWatchService.java
src/windows/classes/sun/nio/fs/WindowsWatchService.java
+5
-5
src/windows/native/sun/security/mscapi/security.cpp
src/windows/native/sun/security/mscapi/security.cpp
+1
-1
test/ProblemList.txt
test/ProblemList.txt
+3
-0
test/com/sun/management/GarbageCollectorMXBean/GarbageCollectionNotificationContentTest.java
...ectorMXBean/GarbageCollectionNotificationContentTest.java
+163
-0
test/com/sun/management/GarbageCollectorMXBean/GarbageCollectionNotificationTest.java
...ageCollectorMXBean/GarbageCollectionNotificationTest.java
+128
-0
test/com/sun/nio/sctp/SctpChannel/SocketOptionTests.java
test/com/sun/nio/sctp/SctpChannel/SocketOptionTests.java
+1
-1
test/com/sun/nio/sctp/SctpMultiChannel/SocketOptionTests.java
.../com/sun/nio/sctp/SctpMultiChannel/SocketOptionTests.java
+1
-1
test/java/nio/channels/AsynchronousServerSocketChannel/Basic.java
...a/nio/channels/AsynchronousServerSocketChannel/Basic.java
+1
-1
test/java/nio/channels/AsynchronousSocketChannel/Basic.java
test/java/nio/channels/AsynchronousSocketChannel/Basic.java
+2
-2
test/java/nio/channels/DatagramChannel/BasicMulticastTests.java
...ava/nio/channels/DatagramChannel/BasicMulticastTests.java
+2
-2
test/java/nio/channels/DatagramChannel/MulticastSendReceiveTests.java
...o/channels/DatagramChannel/MulticastSendReceiveTests.java
+2
-2
test/java/nio/channels/DatagramChannel/SocketOptionTests.java
.../java/nio/channels/DatagramChannel/SocketOptionTests.java
+1
-1
test/java/nio/channels/FileChannel/ClosedByInterrupt.java
test/java/nio/channels/FileChannel/ClosedByInterrupt.java
+10
-5
test/java/nio/channels/ServerSocketChannel/SocketOptionTests.java
...a/nio/channels/ServerSocketChannel/SocketOptionTests.java
+1
-1
test/java/nio/channels/SocketChannel/Shutdown.java
test/java/nio/channels/SocketChannel/Shutdown.java
+1
-1
test/java/nio/channels/SocketChannel/SocketOptionTests.java
test/java/nio/channels/SocketChannel/SocketOptionTests.java
+1
-1
test/java/nio/charset/StandardCharsets/Standard.java
test/java/nio/charset/StandardCharsets/Standard.java
+14
-14
test/java/nio/file/Files/CheckPermissions.java
test/java/nio/file/Files/CheckPermissions.java
+1
-1
test/java/nio/file/WatchService/Basic.java
test/java/nio/file/WatchService/Basic.java
+7
-7
test/java/nio/file/WatchService/FileTreeModifier.java
test/java/nio/file/WatchService/FileTreeModifier.java
+1
-1
test/java/nio/file/WatchService/LotsOfEvents.java
test/java/nio/file/WatchService/LotsOfEvents.java
+1
-1
test/java/nio/file/WatchService/SensitivityModifier.java
test/java/nio/file/WatchService/SensitivityModifier.java
+1
-1
test/java/nio/file/WatchService/WithSecurityManager.java
test/java/nio/file/WatchService/WithSecurityManager.java
+1
-1
test/java/util/logging/LoggingDeadlock3.java
test/java/util/logging/LoggingDeadlock3.java
+81
-0
test/java/util/logging/LoggingDeadlock3.props
test/java/util/logging/LoggingDeadlock3.props
+3
-0
test/java/util/logging/LoggingDeadlock4.java
test/java/util/logging/LoggingDeadlock4.java
+111
-0
test/javax/management/timer/StartTest.java
test/javax/management/timer/StartTest.java
+98
-0
未找到文件。
make/com/sun/nio/sctp/FILES_java.gmk
浏览文件 @
503c18aa
...
@@ -38,7 +38,7 @@ FILES_java = \
...
@@ -38,7 +38,7 @@ FILES_java = \
com/sun/nio/sctp/SctpMultiChannel.java \
com/sun/nio/sctp/SctpMultiChannel.java \
com/sun/nio/sctp/SctpServerChannel.java \
com/sun/nio/sctp/SctpServerChannel.java \
com/sun/nio/sctp/SctpSocketOption.java \
com/sun/nio/sctp/SctpSocketOption.java \
com/sun/nio/sctp/SctpStandardSocketOption.java \
com/sun/nio/sctp/SctpStandardSocketOption
s
.java \
com/sun/nio/sctp/SendFailedNotification.java \
com/sun/nio/sctp/SendFailedNotification.java \
com/sun/nio/sctp/ShutdownNotification.java \
com/sun/nio/sctp/ShutdownNotification.java \
\
\
...
...
make/java/management/mapfile-vers
浏览文件 @
503c18aa
...
@@ -49,6 +49,7 @@ SUNWprivate_1.1 {
...
@@ -49,6 +49,7 @@ SUNWprivate_1.1 {
Java_sun_management_Flag_setStringValue;
Java_sun_management_Flag_setStringValue;
Java_sun_management_GarbageCollectorImpl_getCollectionCount;
Java_sun_management_GarbageCollectorImpl_getCollectionCount;
Java_sun_management_GarbageCollectorImpl_getCollectionTime;
Java_sun_management_GarbageCollectorImpl_getCollectionTime;
Java_sun_management_GarbageCollectorImpl_setNotificationEnabled;
Java_sun_management_GcInfoBuilder_fillGcAttributeInfo;
Java_sun_management_GcInfoBuilder_fillGcAttributeInfo;
Java_sun_management_GcInfoBuilder_getLastGcInfo0;
Java_sun_management_GcInfoBuilder_getLastGcInfo0;
Java_sun_management_GcInfoBuilder_getNumGcExtAttributes;
Java_sun_management_GcInfoBuilder_getNumGcExtAttributes;
...
...
make/java/nio/FILES_java.gmk
浏览文件 @
503c18aa
...
@@ -71,7 +71,7 @@ FILES_src = \
...
@@ -71,7 +71,7 @@ FILES_src = \
java/nio/charset/CoderMalfunctionError.java \
java/nio/charset/CoderMalfunctionError.java \
java/nio/charset/CodingErrorAction.java \
java/nio/charset/CodingErrorAction.java \
java/nio/charset/MalformedInputException.java \
java/nio/charset/MalformedInputException.java \
java/nio/charset/StandardCharset.java \
java/nio/charset/StandardCharset
s
.java \
java/nio/charset/UnmappableCharacterException.java \
java/nio/charset/UnmappableCharacterException.java \
\
\
java/nio/charset/spi/CharsetProvider.java \
java/nio/charset/spi/CharsetProvider.java \
...
@@ -116,7 +116,7 @@ FILES_src = \
...
@@ -116,7 +116,7 @@ FILES_src = \
java/nio/file/SimpleFileVisitor.java \
java/nio/file/SimpleFileVisitor.java \
java/nio/file/StandardCopyOption.java \
java/nio/file/StandardCopyOption.java \
java/nio/file/StandardOpenOption.java \
java/nio/file/StandardOpenOption.java \
java/nio/file/StandardWatchEventKind.java \
java/nio/file/StandardWatchEventKind
s
.java \
java/nio/file/TempFileHelper.java \
java/nio/file/TempFileHelper.java \
java/nio/file/WatchEvent.java \
java/nio/file/WatchEvent.java \
java/nio/file/WatchKey.java \
java/nio/file/WatchKey.java \
...
...
src/share/classes/com/sun/management/GarbageCollectionNotificationInfo.java
0 → 100644
浏览文件 @
503c18aa
/*
* Copyright (c) 2011, 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
com.sun.management
;
import
javax.management.Notification
;
import
javax.management.openmbean.CompositeData
;
import
javax.management.openmbean.CompositeDataView
;
import
javax.management.openmbean.CompositeType
;
import
java.util.Collection
;
import
java.util.Collections
;
import
sun.management.GarbageCollectionNotifInfoCompositeData
;
/**
* The information about a garbage collection
*
* <p>
* A garbage collection notification is emitted by {@link GarbageCollectorMXBean}
* when the Java virtual machine completes a garbage collection action
* The notification emitted will contain the garbage collection notification
* information about the status of the memory:
* <u1>
* <li>The name of the garbage collector used perform the collection.</li>
* <li>The action performed by the garbage collector.</li>
* <li>The cause of the garbage collection action.</li>
* <li>A {@link GcInfo} object containing some statistics about the GC cycle
(start time, end time) and the memory usage before and after
the GC cycle.</li>
* </u1>
*
* <p>
* A {@link CompositeData CompositeData} representing
* the {@code GarbageCollectionNotificationInfo} object
* is stored in the
* {@linkplain javax.management.Notification#setUserData userdata}
* of a {@linkplain javax.management.Notification notification}.
* The {@link #from from} method is provided to convert from
* a {@code CompositeData} to a {@code GarbageCollectionNotificationInfo}
* object. For example:
*
* <blockquote><pre>
* Notification notif;
*
* // receive the notification emitted by a GarbageCollectorMXBean and set to notif
* ...
*
* String notifType = notif.getType();
* if (notifType.equals(GarbageCollectionNotificationInfo.GARBAGE_COLLECTION_NOTIFICATION)) {
* // retrieve the garbage collection notification information
* CompositeData cd = (CompositeData) notif.getUserData();
* GarbageCollectionNotificationInfo info = GarbageCollectionNotificationInfo.from(cd);
* ....
* }
* </pre></blockquote>
*
* <p>
* The type of the notification emitted by a {@code GarbageCollectorMXBean} is:
* <ul>
* <li>A {@linkplain #GARBAGE_COLLECTION_NOTIFICATION garbage collection notification}.
* <br>Used by every notification emitted by the garbage collector, the details about
* the notification are provided in the {@linkplain #getGcAction action} String
* <p></li>
* </ul>
**/
public
class
GarbageCollectionNotificationInfo
implements
CompositeDataView
{
private
final
String
gcName
;
private
final
String
gcAction
;
private
final
String
gcCause
;
private
final
GcInfo
gcInfo
;
private
final
CompositeData
cdata
;
/**
* Notification type denoting that
* the Java virtual machine has completed a garbage collection cycle.
* This notification is emitted by a {@link GarbageCollectorMXBean}.
* The value of this notification type is
* {@code com.sun.management.gc.notification}.
*/
public
static
final
String
GARBAGE_COLLECTION_NOTIFICATION
=
"com.sun.management.gc.notification"
;
/**
* Constructs a {@code GarbageCollectionNotificationInfo} object.
*
* @param gcName The name of the garbage collector used to perform the collection
* @param gcAction The name of the action performed by the garbage collector
* @param gcCause The cause the garbage collection action
* @param gcInfo a GcInfo object providing statistics about the GC cycle
*/
public
GarbageCollectionNotificationInfo
(
String
gcName
,
String
gcAction
,
String
gcCause
,
GcInfo
gcInfo
)
{
if
(
gcName
==
null
)
{
throw
new
NullPointerException
(
"Null gcName"
);
}
if
(
gcAction
==
null
)
{
throw
new
NullPointerException
(
"Null gcAction"
);
}
if
(
gcCause
==
null
)
{
throw
new
NullPointerException
(
"Null gcCause"
);
}
this
.
gcName
=
gcName
;
this
.
gcAction
=
gcAction
;
this
.
gcCause
=
gcCause
;
this
.
gcInfo
=
gcInfo
;
this
.
cdata
=
new
GarbageCollectionNotifInfoCompositeData
(
this
);
}
GarbageCollectionNotificationInfo
(
CompositeData
cd
)
{
GarbageCollectionNotifInfoCompositeData
.
validateCompositeData
(
cd
);
this
.
gcName
=
GarbageCollectionNotifInfoCompositeData
.
getGcName
(
cd
);
this
.
gcAction
=
GarbageCollectionNotifInfoCompositeData
.
getGcAction
(
cd
);
this
.
gcCause
=
GarbageCollectionNotifInfoCompositeData
.
getGcCause
(
cd
);
this
.
gcInfo
=
GarbageCollectionNotifInfoCompositeData
.
getGcInfo
(
cd
);
this
.
cdata
=
cd
;
}
/**
* Returns the name of the garbage collector used to perform the collection
*
* @return the name of the garbage collector used to perform the collection
*/
public
String
getGcName
()
{
return
gcName
;
}
/**
* Returns the action of the performed by the garbage collector
*
* @return the the action of the performed by the garbage collector
*/
public
String
getGcAction
()
{
return
gcAction
;
}
/**
* Returns the cause the garbage collection
*
* @return the the cause the garbage collection
*/
public
String
getGcCause
()
{
return
gcCause
;
}
/**
* Returns the GC information related to the last garbage collection
*
* @return the GC information related to the
* last garbage collection
*/
public
GcInfo
getGcInfo
()
{
return
gcInfo
;
}
/**
* Returns a {@code GarbageCollectionNotificationInfo} object represented by the
* given {@code CompositeData}.
* The given {@code CompositeData} must contain
* the following attributes:
* <blockquote>
* <table border>
* <tr>
* <th align=left>Attribute Name</th>
* <th align=left>Type</th>
* </tr>
* <tr>
* <td>gcName</td>
* <td>{@code java.lang.String}</td>
* </tr>
* <tr>
* <td>gcAction</td>
* <td>{@code java.lang.String}</td>
* </tr>
* <tr>
* <td>gcCause</td>
* <td>{@code java.lang.String}</td>
* </tr>
* <tr>
* <td>gcInfo</td>
* <td>{@code javax.management.openmbean.CompositeData}</td>
* </tr>
* </table>
* </blockquote>
*
* @param cd {@code CompositeData} representing a
* {@code GarbageCollectionNotificationInfo}
*
* @throws IllegalArgumentException if {@code cd} does not
* represent a {@code GarbaageCollectionNotificationInfo} object.
*
* @return a {@code GarbageCollectionNotificationInfo} object represented
* by {@code cd} if {@code cd} is not {@code null};
* {@code null} otherwise.
*/
public
static
GarbageCollectionNotificationInfo
from
(
CompositeData
cd
)
{
if
(
cd
==
null
)
{
return
null
;
}
if
(
cd
instanceof
GarbageCollectionNotifInfoCompositeData
)
{
return
((
GarbageCollectionNotifInfoCompositeData
)
cd
).
getGarbageCollectionNotifInfo
();
}
else
{
return
new
GarbageCollectionNotificationInfo
(
cd
);
}
}
public
CompositeData
toCompositeData
(
CompositeType
ct
)
{
return
cdata
;
}
}
src/share/classes/com/sun/nio/sctp/MessageInfo.java
浏览文件 @
503c18aa
...
@@ -179,7 +179,7 @@ public abstract class MessageInfo {
...
@@ -179,7 +179,7 @@ public abstract class MessageInfo {
* completely received. For messages being sent {@code true} indicates that
* completely received. For messages being sent {@code true} indicates that
* the message is complete, {@code false} indicates that the message is not
* the message is complete, {@code false} indicates that the message is not
* complete. How the send channel interprets this value depends on the value
* complete. How the send channel interprets this value depends on the value
* of its {@link SctpStandardSocketOption#SCTP_EXPLICIT_COMPLETE
* of its {@link SctpStandardSocketOption
s
#SCTP_EXPLICIT_COMPLETE
* SCTP_EXPLICIT_COMPLETE} socket option.
* SCTP_EXPLICIT_COMPLETE} socket option.
*
*
* @return {@code true} if, and only if, the message is complete
* @return {@code true} if, and only if, the message is complete
...
@@ -192,7 +192,7 @@ public abstract class MessageInfo {
...
@@ -192,7 +192,7 @@ public abstract class MessageInfo {
* <P> For messages being sent {@code true} indicates that
* <P> For messages being sent {@code true} indicates that
* the message is complete, {@code false} indicates that the message is not
* the message is complete, {@code false} indicates that the message is not
* complete. How the send channel interprets this value depends on the value
* complete. How the send channel interprets this value depends on the value
* of its {@link SctpStandardSocketOption#SCTP_EXPLICIT_COMPLETE
* of its {@link SctpStandardSocketOption
s
#SCTP_EXPLICIT_COMPLETE
* SCTP_EXPLICIT_COMPLETE} socket option.
* SCTP_EXPLICIT_COMPLETE} socket option.
*
*
* @param complete
* @param complete
...
...
src/share/classes/com/sun/nio/sctp/SctpChannel.java
浏览文件 @
503c18aa
...
@@ -65,55 +65,55 @@ import java.nio.channels.SelectionKey;
...
@@ -65,55 +65,55 @@ import java.nio.channels.SelectionKey;
* <th>Description</th>
* <th>Description</th>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_DISABLE_FRAGMENTS
* <td> {@link SctpStandardSocketOption
s
#SCTP_DISABLE_FRAGMENTS
* SCTP_DISABLE_FRAGMENTS} </td>
* SCTP_DISABLE_FRAGMENTS} </td>
* <td> Enables or disables message fragmentation </td>
* <td> Enables or disables message fragmentation </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_EXPLICIT_COMPLETE
* <td> {@link SctpStandardSocketOption
s
#SCTP_EXPLICIT_COMPLETE
* SCTP_EXPLICIT_COMPLETE} </td>
* SCTP_EXPLICIT_COMPLETE} </td>
* <td> Enables or disables explicit message completion </td>
* <td> Enables or disables explicit message completion </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_FRAGMENT_INTERLEAVE
* <td> {@link SctpStandardSocketOption
s
#SCTP_FRAGMENT_INTERLEAVE
* SCTP_FRAGMENT_INTERLEAVE} </td>
* SCTP_FRAGMENT_INTERLEAVE} </td>
* <td> Controls how the presentation of messages occur for the message
* <td> Controls how the presentation of messages occur for the message
* receiver </td>
* receiver </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_INIT_MAXSTREAMS
* <td> {@link SctpStandardSocketOption
s
#SCTP_INIT_MAXSTREAMS
* SCTP_INIT_MAXSTREAMS} </td>
* SCTP_INIT_MAXSTREAMS} </td>
* <td> The maximum number of streams requested by the local endpoint during
* <td> The maximum number of streams requested by the local endpoint during
* association initialization </td>
* association initialization </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_NODELAY SCTP_NODELAY} </td>
* <td> {@link SctpStandardSocketOption
s
#SCTP_NODELAY SCTP_NODELAY} </td>
* <td> Enables or disable a Nagle-like algorithm </td>
* <td> Enables or disable a Nagle-like algorithm </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_PRIMARY_ADDR
* <td> {@link SctpStandardSocketOption
s
#SCTP_PRIMARY_ADDR
* SCTP_PRIMARY_ADDR} </td>
* SCTP_PRIMARY_ADDR} </td>
* <td> Requests that the local SCTP stack use the given peer address as the
* <td> Requests that the local SCTP stack use the given peer address as the
* association primary </td>
* association primary </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_SET_PEER_PRIMARY_ADDR
* <td> {@link SctpStandardSocketOption
s
#SCTP_SET_PEER_PRIMARY_ADDR
* SCTP_SET_PEER_PRIMARY_ADDR} </td>
* SCTP_SET_PEER_PRIMARY_ADDR} </td>
* <td> Requests that the peer mark the enclosed address as the association
* <td> Requests that the peer mark the enclosed address as the association
* primary </td>
* primary </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SO_SNDBUF
* <td> {@link SctpStandardSocketOption
s
#SO_SNDBUF
* SO_SNDBUF} </td>
* SO_SNDBUF} </td>
* <td> The size of the socket send buffer </td>
* <td> The size of the socket send buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SO_RCVBUF
* <td> {@link SctpStandardSocketOption
s
#SO_RCVBUF
* SO_RCVBUF} </td>
* SO_RCVBUF} </td>
* <td> The size of the socket receive buffer </td>
* <td> The size of the socket receive buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SO_LINGER
* <td> {@link SctpStandardSocketOption
s
#SO_LINGER
* SO_LINGER} </td>
* SO_LINGER} </td>
* <td> Linger on close if data is present (when configured in blocking mode
* <td> Linger on close if data is present (when configured in blocking mode
* only) </td>
* only) </td>
...
@@ -449,7 +449,7 @@ public abstract class SctpChannel
...
@@ -449,7 +449,7 @@ public abstract class SctpChannel
* <P> This is a convience method and is equivalent to evaluating the
* <P> This is a convience method and is equivalent to evaluating the
* following expression:
* following expression:
* <blockquote><pre>
* <blockquote><pre>
* setOption(SctpStandardSocketOption.SCTP_INIT_MAXSTREAMS, SctpStandardSocketOption.InitMaxStreams.create(maxInStreams, maxOutStreams))
* setOption(SctpStandardSocketOption
s
.SCTP_INIT_MAXSTREAMS, SctpStandardSocketOption.InitMaxStreams.create(maxInStreams, maxOutStreams))
* .connect(remote);
* .connect(remote);
* </pre></blockquote>
* </pre></blockquote>
*
*
...
@@ -651,7 +651,7 @@ public abstract class SctpChannel
...
@@ -651,7 +651,7 @@ public abstract class SctpChannel
* @throws IOException
* @throws IOException
* If an I/O error occurs
* If an I/O error occurs
*
*
* @see SctpStandardSocketOption
* @see SctpStandardSocketOption
s
*/
*/
public
abstract
<
T
>
T
getOption
(
SctpSocketOption
<
T
>
name
)
public
abstract
<
T
>
T
getOption
(
SctpSocketOption
<
T
>
name
)
throws
IOException
;
throws
IOException
;
...
@@ -680,7 +680,7 @@ public abstract class SctpChannel
...
@@ -680,7 +680,7 @@ public abstract class SctpChannel
* @throws IOException
* @throws IOException
* If an I/O error occurs
* If an I/O error occurs
*
*
* @see SctpStandardSocketOption
* @see SctpStandardSocketOption
s
*/
*/
public
abstract
<
T
>
SctpChannel
setOption
(
SctpSocketOption
<
T
>
name
,
T
value
)
public
abstract
<
T
>
SctpChannel
setOption
(
SctpSocketOption
<
T
>
name
,
T
value
)
throws
IOException
;
throws
IOException
;
...
@@ -731,7 +731,7 @@ public abstract class SctpChannel
...
@@ -731,7 +731,7 @@ public abstract class SctpChannel
* MessageInfo} will return {@code false}, and more invocations of this
* MessageInfo} will return {@code false}, and more invocations of this
* method will be necessary to completely consume the messgae. Only
* method will be necessary to completely consume the messgae. Only
* one message at a time will be partially delivered in any stream. The
* one message at a time will be partially delivered in any stream. The
* socket option {@link SctpStandardSocketOption#SCTP_FRAGMENT_INTERLEAVE
* socket option {@link SctpStandardSocketOption
s
#SCTP_FRAGMENT_INTERLEAVE
* SCTP_FRAGMENT_INTERLEAVE} controls various aspects of what interlacing of
* SCTP_FRAGMENT_INTERLEAVE} controls various aspects of what interlacing of
* messages occurs.
* messages occurs.
*
*
...
@@ -804,7 +804,7 @@ public abstract class SctpChannel
...
@@ -804,7 +804,7 @@ public abstract class SctpChannel
* and sufficient room becomes available, then the remaining bytes in the
* and sufficient room becomes available, then the remaining bytes in the
* given byte buffer are transmitted as a single message. Sending a message
* given byte buffer are transmitted as a single message. Sending a message
* is atomic unless explicit message completion {@link
* is atomic unless explicit message completion {@link
* SctpStandardSocketOption#SCTP_EXPLICIT_COMPLETE SCTP_EXPLICIT_COMPLETE}
* SctpStandardSocketOption
s
#SCTP_EXPLICIT_COMPLETE SCTP_EXPLICIT_COMPLETE}
* socket option is enabled on this channel's socket.
* socket option is enabled on this channel's socket.
*
*
* <P> The message is transferred from the byte buffer as if by a regular
* <P> The message is transferred from the byte buffer as if by a regular
...
...
src/share/classes/com/sun/nio/sctp/SctpMultiChannel.java
浏览文件 @
503c18aa
...
@@ -69,55 +69,55 @@ import java.nio.channels.SelectionKey;
...
@@ -69,55 +69,55 @@ import java.nio.channels.SelectionKey;
* <th>Description</th>
* <th>Description</th>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_DISABLE_FRAGMENTS
* <td> {@link SctpStandardSocketOption
s
#SCTP_DISABLE_FRAGMENTS
* SCTP_DISABLE_FRAGMENTS} </td>
* SCTP_DISABLE_FRAGMENTS} </td>
* <td> Enables or disables message fragmentation </td>
* <td> Enables or disables message fragmentation </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_EXPLICIT_COMPLETE
* <td> {@link SctpStandardSocketOption
s
#SCTP_EXPLICIT_COMPLETE
* SCTP_EXPLICIT_COMPLETE} </td>
* SCTP_EXPLICIT_COMPLETE} </td>
* <td> Enables or disables explicit message completion </td>
* <td> Enables or disables explicit message completion </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_FRAGMENT_INTERLEAVE
* <td> {@link SctpStandardSocketOption
s
#SCTP_FRAGMENT_INTERLEAVE
* SCTP_FRAGMENT_INTERLEAVE} </td>
* SCTP_FRAGMENT_INTERLEAVE} </td>
* <td> Controls how the presentation of messages occur for the message
* <td> Controls how the presentation of messages occur for the message
* receiver </td>
* receiver </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_INIT_MAXSTREAMS
* <td> {@link SctpStandardSocketOption
s
#SCTP_INIT_MAXSTREAMS
* SCTP_INIT_MAXSTREAMS} </td>
* SCTP_INIT_MAXSTREAMS} </td>
* <td> The maximum number of streams requested by the local endpoint during
* <td> The maximum number of streams requested by the local endpoint during
* association initialization </td>
* association initialization </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_NODELAY SCTP_NODELAY} </td>
* <td> {@link SctpStandardSocketOption
s
#SCTP_NODELAY SCTP_NODELAY} </td>
* <td> Enables or disable a Nagle-like algorithm </td>
* <td> Enables or disable a Nagle-like algorithm </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_PRIMARY_ADDR
* <td> {@link SctpStandardSocketOption
s
#SCTP_PRIMARY_ADDR
* SCTP_PRIMARY_ADDR} </td>
* SCTP_PRIMARY_ADDR} </td>
* <td> Requests that the local SCTP stack use the given peer address as the
* <td> Requests that the local SCTP stack use the given peer address as the
* association primary </td>
* association primary </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_SET_PEER_PRIMARY_ADDR
* <td> {@link SctpStandardSocketOption
s
#SCTP_SET_PEER_PRIMARY_ADDR
* SCTP_SET_PEER_PRIMARY_ADDR} </td>
* SCTP_SET_PEER_PRIMARY_ADDR} </td>
* <td> Requests that the peer mark the enclosed address as the association
* <td> Requests that the peer mark the enclosed address as the association
* primary </td>
* primary </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SO_SNDBUF
* <td> {@link SctpStandardSocketOption
s
#SO_SNDBUF
* SO_SNDBUF} </td>
* SO_SNDBUF} </td>
* <td> The size of the socket send buffer </td>
* <td> The size of the socket send buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SO_RCVBUF
* <td> {@link SctpStandardSocketOption
s
#SO_RCVBUF
* SO_RCVBUF} </td>
* SO_RCVBUF} </td>
* <td> The size of the socket receive buffer </td>
* <td> The size of the socket receive buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SO_LINGER
* <td> {@link SctpStandardSocketOption
s
#SO_LINGER
* SO_LINGER} </td>
* SO_LINGER} </td>
* <td> Linger on close if data is present (when configured in blocking mode
* <td> Linger on close if data is present (when configured in blocking mode
* only) </td>
* only) </td>
...
@@ -450,7 +450,7 @@ public abstract class SctpMultiChannel
...
@@ -450,7 +450,7 @@ public abstract class SctpMultiChannel
* @throws IOException
* @throws IOException
* If an I/O error occurs
* If an I/O error occurs
*
*
* @see SctpStandardSocketOption
* @see SctpStandardSocketOption
s
*/
*/
public
abstract
<
T
>
T
getOption
(
SctpSocketOption
<
T
>
name
,
public
abstract
<
T
>
T
getOption
(
SctpSocketOption
<
T
>
name
,
Association
association
)
Association
association
)
...
@@ -489,7 +489,7 @@ public abstract class SctpMultiChannel
...
@@ -489,7 +489,7 @@ public abstract class SctpMultiChannel
* @throws IOException
* @throws IOException
* If an I/O error occurs
* If an I/O error occurs
*
*
* @see SctpStandardSocketOption
* @see SctpStandardSocketOption
s
*/
*/
public
abstract
<
T
>
SctpMultiChannel
setOption
(
SctpSocketOption
<
T
>
name
,
public
abstract
<
T
>
SctpMultiChannel
setOption
(
SctpSocketOption
<
T
>
name
,
T
value
,
T
value
,
...
@@ -542,7 +542,7 @@ public abstract class SctpMultiChannel
...
@@ -542,7 +542,7 @@ public abstract class SctpMultiChannel
* MessageInfo} will return {@code false}, and more invocations of this
* MessageInfo} will return {@code false}, and more invocations of this
* method will be necessary to completely consume the messgae. Only
* method will be necessary to completely consume the messgae. Only
* one message at a time will be partially delivered in any stream. The
* one message at a time will be partially delivered in any stream. The
* socket option {@link SctpStandardSocketOption#SCTP_FRAGMENT_INTERLEAVE
* socket option {@link SctpStandardSocketOption
s
#SCTP_FRAGMENT_INTERLEAVE
* SCTP_FRAGMENT_INTERLEAVE} controls various aspects of what interlacing of
* SCTP_FRAGMENT_INTERLEAVE} controls various aspects of what interlacing of
* messages occurs.
* messages occurs.
*
*
...
@@ -635,14 +635,14 @@ public abstract class SctpMultiChannel
...
@@ -635,14 +635,14 @@ public abstract class SctpMultiChannel
* underlying output buffer, then the remaining bytes in the given byte
* underlying output buffer, then the remaining bytes in the given byte
* buffer are transmitted as a single message. Sending a message
* buffer are transmitted as a single message. Sending a message
* is atomic unless explicit message completion {@link
* is atomic unless explicit message completion {@link
* SctpStandardSocketOption#SCTP_EXPLICIT_COMPLETE SCTP_EXPLICIT_COMPLETE}
* SctpStandardSocketOption
s
#SCTP_EXPLICIT_COMPLETE SCTP_EXPLICIT_COMPLETE}
* socket option is enabled on this channel's socket.
* socket option is enabled on this channel's socket.
*
*
* <P> If this channel is in non-blocking mode, there is sufficient room
* <P> If this channel is in non-blocking mode, there is sufficient room
* in the underlying output buffer, and an implicit association setup is
* in the underlying output buffer, and an implicit association setup is
* required, then the remaining bytes in the given byte buffer are
* required, then the remaining bytes in the given byte buffer are
* transmitted as a single message, subject to {@link
* transmitted as a single message, subject to {@link
* SctpStandardSocketOption#SCTP_EXPLICIT_COMPLETE SCTP_EXPLICIT_COMPLETE}.
* SctpStandardSocketOption
s
#SCTP_EXPLICIT_COMPLETE SCTP_EXPLICIT_COMPLETE}.
* If for any reason the message cannot
* If for any reason the message cannot
* be delivered an {@link AssociationChangeNotification association
* be delivered an {@link AssociationChangeNotification association
* changed} notification is put on the SCTP stack with its {@code event} parameter set
* changed} notification is put on the SCTP stack with its {@code event} parameter set
...
...
src/share/classes/com/sun/nio/sctp/SctpServerChannel.java
浏览文件 @
503c18aa
...
@@ -53,7 +53,7 @@ import java.nio.channels.spi.AbstractSelectableChannel;
...
@@ -53,7 +53,7 @@ import java.nio.channels.spi.AbstractSelectableChannel;
* <th>Description</th>
* <th>Description</th>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link SctpStandardSocketOption#SCTP_INIT_MAXSTREAMS
* <td> {@link SctpStandardSocketOption
s
#SCTP_INIT_MAXSTREAMS
* SCTP_INIT_MAXSTREAMS} </td>
* SCTP_INIT_MAXSTREAMS} </td>
* <td> The maximum number of streams requested by the local endpoint during
* <td> The maximum number of streams requested by the local endpoint during
* association initialization </td>
* association initialization </td>
...
@@ -360,7 +360,7 @@ public abstract class SctpServerChannel
...
@@ -360,7 +360,7 @@ public abstract class SctpServerChannel
* @throws IOException
* @throws IOException
* If an I/O error occurs
* If an I/O error occurs
*
*
* @see SctpStandardSocketOption
* @see SctpStandardSocketOption
s
*/
*/
public
abstract
<
T
>
T
getOption
(
SctpSocketOption
<
T
>
name
)
throws
IOException
;
public
abstract
<
T
>
T
getOption
(
SctpSocketOption
<
T
>
name
)
throws
IOException
;
...
@@ -388,7 +388,7 @@ public abstract class SctpServerChannel
...
@@ -388,7 +388,7 @@ public abstract class SctpServerChannel
* @throws IOException
* @throws IOException
* If an I/O error occurs
* If an I/O error occurs
*
*
* @see SctpStandardSocketOption
* @see SctpStandardSocketOption
s
*/
*/
public
abstract
<
T
>
SctpServerChannel
setOption
(
SctpSocketOption
<
T
>
name
,
public
abstract
<
T
>
SctpServerChannel
setOption
(
SctpSocketOption
<
T
>
name
,
T
value
)
T
value
)
...
...
src/share/classes/com/sun/nio/sctp/SctpSocketOption.java
浏览文件 @
503c18aa
...
@@ -33,6 +33,6 @@ import java.net.SocketOption;
...
@@ -33,6 +33,6 @@ import java.net.SocketOption;
*
*
* @since 1.7
* @since 1.7
*
*
* @see SctpStandardSocketOption
* @see SctpStandardSocketOption
s
*/
*/
public
interface
SctpSocketOption
<
T
>
extends
SocketOption
<
T
>
{
}
public
interface
SctpSocketOption
<
T
>
extends
SocketOption
<
T
>
{
}
src/share/classes/com/sun/nio/sctp/SctpStandardSocketOption.java
→
src/share/classes/com/sun/nio/sctp/SctpStandardSocketOption
s
.java
浏览文件 @
503c18aa
...
@@ -34,8 +34,8 @@ import sun.nio.ch.SctpStdSocketOption;
...
@@ -34,8 +34,8 @@ import sun.nio.ch.SctpStdSocketOption;
*
*
* @since 1.7
* @since 1.7
*/
*/
public
class
SctpStandardSocketOption
{
public
class
SctpStandardSocketOption
s
{
private
SctpStandardSocketOption
()
{}
private
SctpStandardSocketOption
s
()
{}
/**
/**
* Enables or disables message fragmentation.
* Enables or disables message fragmentation.
*
*
...
@@ -127,7 +127,7 @@ public class SctpStandardSocketOption {
...
@@ -127,7 +127,7 @@ public class SctpStandardSocketOption {
* association initialization.
* association initialization.
*
*
* <P> The value of this socket option is an {@link
* <P> The value of this socket option is an {@link
* SctpStandardSocketOption.InitMaxStreams InitMaxStreams}, that represents
* SctpStandardSocketOption
s
.InitMaxStreams InitMaxStreams}, that represents
* the maximum number of inbound and outbound streams that an association
* the maximum number of inbound and outbound streams that an association
* on the channel is prepared to support.
* on the channel is prepared to support.
*
*
...
@@ -157,9 +157,9 @@ public class SctpStandardSocketOption {
...
@@ -157,9 +157,9 @@ public class SctpStandardSocketOption {
* the endpoints default value.
* the endpoints default value.
*/
*/
public
static
final
SctpSocketOption
public
static
final
SctpSocketOption
<
SctpStandardSocketOption
.
InitMaxStreams
>
SCTP_INIT_MAXSTREAMS
=
<
SctpStandardSocketOption
s
.
InitMaxStreams
>
SCTP_INIT_MAXSTREAMS
=
new
SctpStdSocketOption
<
SctpStandardSocketOption
.
InitMaxStreams
>(
new
SctpStdSocketOption
<
SctpStandardSocketOption
s
.
InitMaxStreams
>(
"SCTP_INIT_MAXSTREAMS"
,
SctpStandardSocketOption
.
InitMaxStreams
.
class
);
"SCTP_INIT_MAXSTREAMS"
,
SctpStandardSocketOption
s
.
InitMaxStreams
.
class
);
/**
/**
* Enables or disables a Nagle-like algorithm.
* Enables or disables a Nagle-like algorithm.
...
@@ -310,7 +310,7 @@ public class SctpStandardSocketOption {
...
@@ -310,7 +310,7 @@ public class SctpStandardSocketOption {
* This class is used to set the maximum number of inbound/outbound streams
* This class is used to set the maximum number of inbound/outbound streams
* used by the local endpoint during association initialization. An
* used by the local endpoint during association initialization. An
* instance of this class is used to set the {@link
* instance of this class is used to set the {@link
* SctpStandardSocketOption#SCTP_INIT_MAXSTREAMS SCTP_INIT_MAXSTREAMS}
* SctpStandardSocketOption
s
#SCTP_INIT_MAXSTREAMS SCTP_INIT_MAXSTREAMS}
* socket option.
* socket option.
*
*
* @since 1.7
* @since 1.7
...
...
src/share/classes/java/lang/SafeVarargs.java
浏览文件 @
503c18aa
/*
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010,
2011,
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
...
@@ -32,7 +32,7 @@ import java.lang.annotation.*;
...
@@ -32,7 +32,7 @@ import java.lang.annotation.*;
* constructor does not perform potentially unsafe operations on its
* constructor does not perform potentially unsafe operations on its
* varargs parameter. Applying this annotation to a method or
* varargs parameter. Applying this annotation to a method or
* constructor suppresses unchecked warnings about a
* constructor suppresses unchecked warnings about a
* <i>non-reifiable</i> variable
-
arity (vararg) type and suppresses
* <i>non-reifiable</i> variable
arity (vararg) type and suppresses
* unchecked warnings about parameterized array creation at call
* unchecked warnings about parameterized array creation at call
* sites.
* sites.
*
*
...
@@ -41,11 +41,10 @@ import java.lang.annotation.*;
...
@@ -41,11 +41,10 @@ import java.lang.annotation.*;
* additional usage restrictions on this annotation type; it is a
* additional usage restrictions on this annotation type; it is a
* compile-time error if a method or constructor declaration is
* compile-time error if a method or constructor declaration is
* annotated with a {@code @SafeVarargs} annotation, and either:
* annotated with a {@code @SafeVarargs} annotation, and either:
* <ul>
* <ul>
* <li> the declaration is a fixed
-
arity method or constructor
* <li> the declaration is a fixed
arity method or constructor
*
*
* <li> the declaration is a variable
-
arity method that is neither
* <li> the declaration is a variable
arity method that is neither
* {@code static} nor {@code final}.
* {@code static} nor {@code final}.
*
*
* </ul>
* </ul>
...
@@ -55,15 +54,28 @@ import java.lang.annotation.*;
...
@@ -55,15 +54,28 @@ import java.lang.annotation.*;
*
*
* <ul>
* <ul>
*
*
* <li> The variable
-
arity parameter has a reifiable element type,
* <li> The variable
arity parameter has a reifiable element type,
* which includes primitive types, {@code Object}, and {@code String}.
* which includes primitive types, {@code Object}, and {@code String}.
* (The unchecked warnings this annotation type suppresses already do
* (The unchecked warnings this annotation type suppresses already do
* not occur for a reifiable element type.)
* not occur for a reifiable element type.)
*
*
* <li> The body of the method or constructor declaration performs
* <li> The body of the method or constructor declaration performs
* potentially unsafe operations, such as an assignment to an element
* potentially unsafe operations, such as an assignment to an element
* of the variable-arity parameter's array that generates an unchecked
* of the variable arity parameter's array that generates an unchecked
* warning.
* warning. Some unsafe operations do not trigger an unchecked
* warning. For example, the aliasing in
*
* <blockquote><pre>
* @SafeVarargs // Not actually safe!
* static void m(List<String>... stringLists) {
* Object[] array = stringLists;
* List<Integer> tmpList = Arrays.asList(42);
* array[0] = tmpList; // Semantically invalid, but compiles without warnings
* String s = stringLists[0].get(0); // Oh no, ClassCastException at runtime!
* }
* </pre></blockquote>
*
* leads to a {@code ClassCastException} at runtime.
*
*
* <p>Future versions of the platform may mandate compiler errors for
* <p>Future versions of the platform may mandate compiler errors for
* such unsafe operations.
* such unsafe operations.
...
...
src/share/classes/java/lang/Throwable.java
浏览文件 @
503c18aa
...
@@ -336,7 +336,10 @@ public class Throwable implements Serializable {
...
@@ -336,7 +336,10 @@ public class Throwable implements Serializable {
* Disabling of suppression should only occur in exceptional
* Disabling of suppression should only occur in exceptional
* circumstances where special requirements exist, such as a
* circumstances where special requirements exist, such as a
* virtual machine reusing exception objects under low-memory
* virtual machine reusing exception objects under low-memory
* situations.
* situations. Circumstances where a given exception object is
* repeatedly caught and rethrown, such as to implement control
* flow between two sub-systems, is another situation where
* immutable throwable objects would be appropriate.
*
*
* @param message the detail message.
* @param message the detail message.
* @param cause the cause. (A {@code null} value is permitted,
* @param cause the cause. (A {@code null} value is permitted,
...
@@ -423,6 +426,18 @@ public class Throwable implements Serializable {
...
@@ -423,6 +426,18 @@ public class Throwable implements Serializable {
* {@link #Throwable(String,Throwable)}, this method cannot be called
* {@link #Throwable(String,Throwable)}, this method cannot be called
* even once.
* even once.
*
*
* <p>An example of using this method on a legacy throwable type
* without other support for setting the cause is:
*
* <pre>
* try {
* lowLevelOp();
* } catch (LowLevelException le) {
* throw (HighLevelException)
* new HighLevelException().initCause(le); // Legacy constructor
* }
* </pre>
*
* @param cause the cause (which is saved for later retrieval by the
* @param cause the cause (which is saved for later retrieval by the
* {@link #getCause()} method). (A {@code null} value is
* {@link #getCause()} method). (A {@code null} value is
* permitted, and indicates that the cause is nonexistent or
* permitted, and indicates that the cause is nonexistent or
...
@@ -788,7 +803,8 @@ public class Throwable implements Serializable {
...
@@ -788,7 +803,8 @@ public class Throwable implements Serializable {
* this throwable is permitted to return a zero-length array from this
* this throwable is permitted to return a zero-length array from this
* method. Generally speaking, the array returned by this method will
* method. Generally speaking, the array returned by this method will
* contain one element for every frame that would be printed by
* contain one element for every frame that would be printed by
* {@code printStackTrace}.
* {@code printStackTrace}. Writes to the returned array do not
* affect future calls to this method.
*
*
* @return an array of stack trace elements representing the stack trace
* @return an array of stack trace elements representing the stack trace
* pertaining to this throwable.
* pertaining to this throwable.
...
@@ -971,8 +987,8 @@ public class Throwable implements Serializable {
...
@@ -971,8 +987,8 @@ public class Throwable implements Serializable {
/**
/**
* Appends the specified exception to the exceptions that were
* Appends the specified exception to the exceptions that were
* suppressed in order to deliver this exception. This method is
* suppressed in order to deliver this exception. This method is
* t
ypically called (automatically and implicitly) by the {@code
* t
hread-safe and typically called (automatically and implicitly)
* try}-with-resources statement.
*
by the {@code
try}-with-resources statement.
*
*
* <p>The suppression behavior is enabled <em>unless</em> disabled
* <p>The suppression behavior is enabled <em>unless</em> disabled
* {@linkplain #Throwable(String, Throwable, boolean, boolean) via
* {@linkplain #Throwable(String, Throwable, boolean, boolean) via
...
@@ -1043,7 +1059,9 @@ public class Throwable implements Serializable {
...
@@ -1043,7 +1059,9 @@ public class Throwable implements Serializable {
*
*
* If no exceptions were suppressed or {@linkplain
* If no exceptions were suppressed or {@linkplain
* #Throwable(String, Throwable, boolean, boolean) suppression is
* #Throwable(String, Throwable, boolean, boolean) suppression is
* disabled}, an empty array is returned.
* disabled}, an empty array is returned. This method is
* thread-safe. Writes to the returned array do not affect future
* calls to this method.
*
*
* @return an array containing all of the exceptions that were
* @return an array containing all of the exceptions that were
* suppressed to deliver this exception.
* suppressed to deliver this exception.
...
...
src/share/classes/java/net/SocketOption.java
浏览文件 @
503c18aa
...
@@ -38,7 +38,7 @@ package java.net;
...
@@ -38,7 +38,7 @@ package java.net;
*
*
* @since 1.7
* @since 1.7
*
*
* @see StandardSocketOption
* @see StandardSocketOption
s
*/
*/
public
interface
SocketOption
<
T
>
{
public
interface
SocketOption
<
T
>
{
...
...
src/share/classes/java/net/StandardSocketOption.java
→
src/share/classes/java/net/StandardSocketOption
s
.java
浏览文件 @
503c18aa
...
@@ -38,8 +38,8 @@ package java.net;
...
@@ -38,8 +38,8 @@ package java.net;
* @since 1.7
* @since 1.7
*/
*/
public
final
class
StandardSocketOption
{
public
final
class
StandardSocketOption
s
{
private
StandardSocketOption
()
{
}
private
StandardSocketOption
s
()
{
}
// -- SOL_SOCKET --
// -- SOL_SOCKET --
...
...
src/share/classes/java/nio/channels/AsynchronousServerSocketChannel.java
浏览文件 @
503c18aa
...
@@ -58,11 +58,11 @@ import java.io.IOException;
...
@@ -58,11 +58,11 @@ import java.io.IOException;
* <th>Description</th>
* <th>Description</th>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_RCVBUF SO_RCVBUF} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_RCVBUF SO_RCVBUF} </td>
* <td> The size of the socket receive buffer </td>
* <td> The size of the socket receive buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_REUSEADDR SO_REUSEADDR} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_REUSEADDR SO_REUSEADDR} </td>
* <td> Re-use address </td>
* <td> Re-use address </td>
* </tr>
* </tr>
* </table>
* </table>
...
...
src/share/classes/java/nio/channels/AsynchronousSocketChannel.java
浏览文件 @
503c18aa
...
@@ -68,23 +68,23 @@ import java.nio.ByteBuffer;
...
@@ -68,23 +68,23 @@ import java.nio.ByteBuffer;
* <th>Description</th>
* <th>Description</th>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_SNDBUF SO_SNDBUF} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_SNDBUF SO_SNDBUF} </td>
* <td> The size of the socket send buffer </td>
* <td> The size of the socket send buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_RCVBUF SO_RCVBUF} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_RCVBUF SO_RCVBUF} </td>
* <td> The size of the socket receive buffer </td>
* <td> The size of the socket receive buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_KEEPALIVE SO_KEEPALIVE} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_KEEPALIVE SO_KEEPALIVE} </td>
* <td> Keep connection alive </td>
* <td> Keep connection alive </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_REUSEADDR SO_REUSEADDR} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_REUSEADDR SO_REUSEADDR} </td>
* <td> Re-use address </td>
* <td> Re-use address </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#TCP_NODELAY TCP_NODELAY} </td>
* <td> {@link java.net.StandardSocketOption
s
#TCP_NODELAY TCP_NODELAY} </td>
* <td> Disable the Nagle algorithm </td>
* <td> Disable the Nagle algorithm </td>
* </tr>
* </tr>
* </table>
* </table>
...
...
src/share/classes/java/nio/channels/DatagramChannel.java
浏览文件 @
503c18aa
...
@@ -63,37 +63,37 @@ import java.nio.channels.spi.SelectorProvider;
...
@@ -63,37 +63,37 @@ import java.nio.channels.spi.SelectorProvider;
* <th>Description</th>
* <th>Description</th>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_SNDBUF SO_SNDBUF} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_SNDBUF SO_SNDBUF} </td>
* <td> The size of the socket send buffer </td>
* <td> The size of the socket send buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_RCVBUF SO_RCVBUF} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_RCVBUF SO_RCVBUF} </td>
* <td> The size of the socket receive buffer </td>
* <td> The size of the socket receive buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_REUSEADDR SO_REUSEADDR} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_REUSEADDR SO_REUSEADDR} </td>
* <td> Re-use address </td>
* <td> Re-use address </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_BROADCAST SO_BROADCAST} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_BROADCAST SO_BROADCAST} </td>
* <td> Allow transmission of broadcast datagrams </td>
* <td> Allow transmission of broadcast datagrams </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#IP_TOS IP_TOS} </td>
* <td> {@link java.net.StandardSocketOption
s
#IP_TOS IP_TOS} </td>
* <td> The Type of Service (ToS) octet in the Internet Protocol (IP) header </td>
* <td> The Type of Service (ToS) octet in the Internet Protocol (IP) header </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#IP_MULTICAST_IF IP_MULTICAST_IF} </td>
* <td> {@link java.net.StandardSocketOption
s
#IP_MULTICAST_IF IP_MULTICAST_IF} </td>
* <td> The network interface for Internet Protocol (IP) multicast datagrams </td>
* <td> The network interface for Internet Protocol (IP) multicast datagrams </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#IP_MULTICAST_TTL
* <td> {@link java.net.StandardSocketOption
s
#IP_MULTICAST_TTL
* IP_MULTICAST_TTL} </td>
* IP_MULTICAST_TTL} </td>
* <td> The <em>time-to-live</em> for Internet Protocol (IP) multicast
* <td> The <em>time-to-live</em> for Internet Protocol (IP) multicast
* datagrams </td>
* datagrams </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#IP_MULTICAST_LOOP
* <td> {@link java.net.StandardSocketOption
s
#IP_MULTICAST_LOOP
* IP_MULTICAST_LOOP} </td>
* IP_MULTICAST_LOOP} </td>
* <td> Loopback for Internet Protocol (IP) multicast datagrams </td>
* <td> Loopback for Internet Protocol (IP) multicast datagrams </td>
* </tr>
* </tr>
...
...
src/share/classes/java/nio/channels/MulticastChannel.java
浏览文件 @
503c18aa
...
@@ -30,7 +30,7 @@ import java.net.NetworkInterface;
...
@@ -30,7 +30,7 @@ import java.net.NetworkInterface;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.net.ProtocolFamily
;
// javadoc
import
java.net.ProtocolFamily
;
// javadoc
import
java.net.StandardProtocolFamily
;
// javadoc
import
java.net.StandardProtocolFamily
;
// javadoc
import
java.net.StandardSocketOption
;
// javadoc
import
java.net.StandardSocketOption
s
;
// javadoc
/**
/**
* A network channel that supports Internet Protocol (IP) multicasting.
* A network channel that supports Internet Protocol (IP) multicasting.
...
@@ -93,7 +93,7 @@ import java.net.StandardSocketOption; // javadoc
...
@@ -93,7 +93,7 @@ import java.net.StandardSocketOption; // javadoc
* a specific address, rather than the wildcard address then it is implementation
* a specific address, rather than the wildcard address then it is implementation
* specific if multicast datagrams are received by the socket. </p></li>
* specific if multicast datagrams are received by the socket. </p></li>
*
*
* <li><p> The {@link StandardSocketOption#SO_REUSEADDR SO_REUSEADDR} option should be
* <li><p> The {@link StandardSocketOption
s
#SO_REUSEADDR SO_REUSEADDR} option should be
* enabled prior to {@link NetworkChannel#bind binding} the socket. This is
* enabled prior to {@link NetworkChannel#bind binding} the socket. This is
* required to allow multiple members of the group to bind to the same
* required to allow multiple members of the group to bind to the same
* address. </p></li>
* address. </p></li>
...
@@ -107,9 +107,9 @@ import java.net.StandardSocketOption; // javadoc
...
@@ -107,9 +107,9 @@ import java.net.StandardSocketOption; // javadoc
* NetworkInterface ni = NetworkInterface.getByName("hme0");
* NetworkInterface ni = NetworkInterface.getByName("hme0");
*
*
* DatagramChannel dc = DatagramChannel.open(StandardProtocolFamily.INET)
* DatagramChannel dc = DatagramChannel.open(StandardProtocolFamily.INET)
* .setOption(StandardSocketOption.SO_REUSEADDR, true)
* .setOption(StandardSocketOption
s
.SO_REUSEADDR, true)
* .bind(new InetSocketAddress(5000))
* .bind(new InetSocketAddress(5000))
* .setOption(StandardSocketOption.IP_MULTICAST_IF, ni);
* .setOption(StandardSocketOption
s
.IP_MULTICAST_IF, ni);
*
*
* InetAddress group = InetAddress.getByName("225.4.5.6");
* InetAddress group = InetAddress.getByName("225.4.5.6");
*
*
...
...
src/share/classes/java/nio/channels/NetworkChannel.java
浏览文件 @
503c18aa
...
@@ -124,7 +124,7 @@ public interface NetworkChannel
...
@@ -124,7 +124,7 @@ public interface NetworkChannel
* @throws IOException
* @throws IOException
* If an I/O error occurs
* If an I/O error occurs
*
*
* @see java.net.StandardSocketOption
* @see java.net.StandardSocketOption
s
*/
*/
<
T
>
NetworkChannel
setOption
(
SocketOption
<
T
>
name
,
T
value
)
throws
IOException
;
<
T
>
NetworkChannel
setOption
(
SocketOption
<
T
>
name
,
T
value
)
throws
IOException
;
...
@@ -144,7 +144,7 @@ public interface NetworkChannel
...
@@ -144,7 +144,7 @@ public interface NetworkChannel
* @throws IOException
* @throws IOException
* If an I/O error occurs
* If an I/O error occurs
*
*
* @see java.net.StandardSocketOption
* @see java.net.StandardSocketOption
s
*/
*/
<
T
>
T
getOption
(
SocketOption
<
T
>
name
)
throws
IOException
;
<
T
>
T
getOption
(
SocketOption
<
T
>
name
)
throws
IOException
;
...
...
src/share/classes/java/nio/channels/ServerSocketChannel.java
浏览文件 @
503c18aa
...
@@ -52,11 +52,11 @@ import java.nio.channels.spi.SelectorProvider;
...
@@ -52,11 +52,11 @@ import java.nio.channels.spi.SelectorProvider;
* <th>Description</th>
* <th>Description</th>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_RCVBUF SO_RCVBUF} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_RCVBUF SO_RCVBUF} </td>
* <td> The size of the socket receive buffer </td>
* <td> The size of the socket receive buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_REUSEADDR SO_REUSEADDR} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_REUSEADDR SO_REUSEADDR} </td>
* <td> Re-use address </td>
* <td> Re-use address </td>
* </tr>
* </tr>
* </table>
* </table>
...
...
src/share/classes/java/nio/channels/SocketChannel.java
浏览文件 @
503c18aa
...
@@ -72,28 +72,28 @@ import java.nio.channels.spi.SelectorProvider;
...
@@ -72,28 +72,28 @@ import java.nio.channels.spi.SelectorProvider;
* <th>Description</th>
* <th>Description</th>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_SNDBUF SO_SNDBUF} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_SNDBUF SO_SNDBUF} </td>
* <td> The size of the socket send buffer </td>
* <td> The size of the socket send buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_RCVBUF SO_RCVBUF} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_RCVBUF SO_RCVBUF} </td>
* <td> The size of the socket receive buffer </td>
* <td> The size of the socket receive buffer </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_KEEPALIVE SO_KEEPALIVE} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_KEEPALIVE SO_KEEPALIVE} </td>
* <td> Keep connection alive </td>
* <td> Keep connection alive </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_REUSEADDR SO_REUSEADDR} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_REUSEADDR SO_REUSEADDR} </td>
* <td> Re-use address </td>
* <td> Re-use address </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#SO_LINGER SO_LINGER} </td>
* <td> {@link java.net.StandardSocketOption
s
#SO_LINGER SO_LINGER} </td>
* <td> Linger on close if data is present (when configured in blocking mode
* <td> Linger on close if data is present (when configured in blocking mode
* only) </td>
* only) </td>
* </tr>
* </tr>
* <tr>
* <tr>
* <td> {@link java.net.StandardSocketOption#TCP_NODELAY TCP_NODELAY} </td>
* <td> {@link java.net.StandardSocketOption
s
#TCP_NODELAY TCP_NODELAY} </td>
* <td> Disable the Nagle algorithm </td>
* <td> Disable the Nagle algorithm </td>
* </tr>
* </tr>
* </table>
* </table>
...
...
src/share/classes/java/nio/charset/Charset.java
浏览文件 @
503c18aa
...
@@ -215,7 +215,7 @@ import sun.security.action.GetPropertyAction;
...
@@ -215,7 +215,7 @@ import sun.security.action.GetPropertyAction;
* determined during virtual-machine startup and typically depends upon the
* determined during virtual-machine startup and typically depends upon the
* locale and charset being used by the underlying operating system. </p>
* locale and charset being used by the underlying operating system. </p>
*
*
* <p>The {@link StandardCharset} class defines constants for each of the
* <p>The {@link StandardCharset
s
} class defines constants for each of the
* standard charsets.
* standard charsets.
*
*
* <h4>Terminology</h4>
* <h4>Terminology</h4>
...
...
src/share/classes/java/nio/charset/StandardCharset.java
→
src/share/classes/java/nio/charset/StandardCharset
s
.java
浏览文件 @
503c18aa
...
@@ -32,10 +32,10 @@ package java.nio.charset;
...
@@ -32,10 +32,10 @@ package java.nio.charset;
* @see <a href="Charset#standard">Standard Charsets</a>
* @see <a href="Charset#standard">Standard Charsets</a>
* @since 1.7
* @since 1.7
*/
*/
public
final
class
StandardCharset
{
public
final
class
StandardCharset
s
{
private
StandardCharset
()
{
private
StandardCharset
s
()
{
throw
new
AssertionError
(
"No java.nio.charset.StandardCharset instances for you!"
);
throw
new
AssertionError
(
"No java.nio.charset.StandardCharset
s
instances for you!"
);
}
}
/**
/**
* Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the
* Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the
...
...
src/share/classes/java/nio/file/Path.java
浏览文件 @
503c18aa
...
@@ -72,7 +72,7 @@ import java.util.Iterator;
...
@@ -72,7 +72,7 @@ import java.util.Iterator;
* directory and is UTF-8 encoded.
* directory and is UTF-8 encoded.
* <pre>
* <pre>
* Path path = FileSystems.getDefault().getPath("logs", "access.log");
* Path path = FileSystems.getDefault().getPath("logs", "access.log");
* BufferReader reader = Files.newBufferedReader(path, StandardCharset.UTF_8);
* BufferReader reader = Files.newBufferedReader(path, StandardCharset
s
.UTF_8);
* </pre>
* </pre>
*
*
* <a name="interop"><h4>Interoperability</h4></a>
* <a name="interop"><h4>Interoperability</h4></a>
...
@@ -609,11 +609,11 @@ public interface Path
...
@@ -609,11 +609,11 @@ public interface Path
* directory can be watched. The {@code events} parameter is the events to
* directory can be watched. The {@code events} parameter is the events to
* register and may contain the following events:
* register and may contain the following events:
* <ul>
* <ul>
* <li>{@link StandardWatchEventKind#ENTRY_CREATE ENTRY_CREATE} -
* <li>{@link StandardWatchEventKind
s
#ENTRY_CREATE ENTRY_CREATE} -
* entry created or moved into the directory</li>
* entry created or moved into the directory</li>
* <li>{@link StandardWatchEventKind#ENTRY_DELETE ENTRY_DELETE} -
* <li>{@link StandardWatchEventKind
s
#ENTRY_DELETE ENTRY_DELETE} -
* entry deleted or moved out of the directory</li>
* entry deleted or moved out of the directory</li>
* <li>{@link StandardWatchEventKind#ENTRY_MODIFY ENTRY_MODIFY} -
* <li>{@link StandardWatchEventKind
s
#ENTRY_MODIFY ENTRY_MODIFY} -
* entry in directory was modified</li>
* entry in directory was modified</li>
* </ul>
* </ul>
*
*
...
@@ -622,7 +622,7 @@ public interface Path
...
@@ -622,7 +622,7 @@ public interface Path
* that locates the directory entry that is created, deleted, or modified.
* that locates the directory entry that is created, deleted, or modified.
*
*
* <p> The set of events may include additional implementation specific
* <p> The set of events may include additional implementation specific
* event that are not defined by the enum {@link StandardWatchEventKind}
* event that are not defined by the enum {@link StandardWatchEventKind
s
}
*
*
* <p> The {@code modifiers} parameter specifies <em>modifiers</em> that
* <p> The {@code modifiers} parameter specifies <em>modifiers</em> that
* qualify how the directory is registered. This release does not define any
* qualify how the directory is registered. This release does not define any
...
...
src/share/classes/java/nio/file/StandardWatchEventKind.java
→
src/share/classes/java/nio/file/StandardWatchEventKind
s
.java
浏览文件 @
503c18aa
...
@@ -31,8 +31,8 @@ package java.nio.file;
...
@@ -31,8 +31,8 @@ package java.nio.file;
* @since 1.7
* @since 1.7
*/
*/
public
final
class
StandardWatchEventKind
{
public
final
class
StandardWatchEventKind
s
{
private
StandardWatchEventKind
()
{
}
private
StandardWatchEventKind
s
()
{
}
/**
/**
* A special event to indicate that events may have been lost or
* A special event to indicate that events may have been lost or
...
@@ -44,8 +44,8 @@ public final class StandardWatchEventKind {
...
@@ -44,8 +44,8 @@ public final class StandardWatchEventKind {
*
*
* @see WatchService
* @see WatchService
*/
*/
public
static
final
WatchEvent
.
Kind
<
Void
>
OVERFLOW
=
public
static
final
WatchEvent
.
Kind
<
Object
>
OVERFLOW
=
new
StdWatchEventKind
<
Void
>(
"OVERFLOW"
,
Void
.
class
);
new
StdWatchEventKind
<
Object
>(
"OVERFLOW"
,
Object
.
class
);
/**
/**
* Directory entry created.
* Directory entry created.
...
...
src/share/classes/java/nio/file/WatchEvent.java
浏览文件 @
503c18aa
...
@@ -50,7 +50,7 @@ public interface WatchEvent<T> {
...
@@ -50,7 +50,7 @@ public interface WatchEvent<T> {
* An event kind, for the purposes of identification.
* An event kind, for the purposes of identification.
*
*
* @since 1.7
* @since 1.7
* @see StandardWatchEventKind
* @see StandardWatchEventKind
s
*/
*/
public
static
interface
Kind
<
T
>
{
public
static
interface
Kind
<
T
>
{
/**
/**
...
@@ -98,9 +98,9 @@ public interface WatchEvent<T> {
...
@@ -98,9 +98,9 @@ public interface WatchEvent<T> {
/**
/**
* Returns the context for the event.
* Returns the context for the event.
*
*
* <p> In the case of {@link StandardWatchEventKind#ENTRY_CREATE ENTRY_CREATE},
* <p> In the case of {@link StandardWatchEventKind
s
#ENTRY_CREATE ENTRY_CREATE},
* {@link StandardWatchEventKind#ENTRY_DELETE ENTRY_DELETE}, and {@link
* {@link StandardWatchEventKind
s
#ENTRY_DELETE ENTRY_DELETE}, and {@link
* StandardWatchEventKind#ENTRY_MODIFY ENTRY_MODIFY} events the context is
* StandardWatchEventKind
s
#ENTRY_MODIFY ENTRY_MODIFY} events the context is
* a {@code Path} that is the {@link Path#relativize relative} path between
* a {@code Path} that is the {@link Path#relativize relative} path between
* the directory registered with the watch service, and the entry that is
* the directory registered with the watch service, and the entry that is
* created, deleted, or modified.
* created, deleted, or modified.
...
...
src/share/classes/java/nio/file/WatchService.java
浏览文件 @
503c18aa
...
@@ -68,7 +68,7 @@ import java.util.concurrent.TimeUnit;
...
@@ -68,7 +68,7 @@ import java.util.concurrent.TimeUnit;
* of events that it may accumulate. Where an implementation <em>knowingly</em>
* of events that it may accumulate. Where an implementation <em>knowingly</em>
* discards events then it arranges for the key's {@link WatchKey#pollEvents
* discards events then it arranges for the key's {@link WatchKey#pollEvents
* pollEvents} method to return an element with an event type of {@link
* pollEvents} method to return an element with an event type of {@link
* StandardWatchEventKind#OVERFLOW OVERFLOW}. This event can be used by the
* StandardWatchEventKind
s
#OVERFLOW OVERFLOW}. This event can be used by the
* consumer as a trigger to re-examine the state of the object.
* consumer as a trigger to re-examine the state of the object.
*
*
* <p> When an event is reported to indicate that a file in a watched directory
* <p> When an event is reported to indicate that a file in a watched directory
...
@@ -87,7 +87,7 @@ import java.util.concurrent.TimeUnit;
...
@@ -87,7 +87,7 @@ import java.util.concurrent.TimeUnit;
* are detected, their timeliness, and whether their ordering is preserved are
* are detected, their timeliness, and whether their ordering is preserved are
* highly implementation specific. For example, when a file in a watched
* highly implementation specific. For example, when a file in a watched
* directory is modified then it may result in a single {@link
* directory is modified then it may result in a single {@link
* StandardWatchEventKind#ENTRY_MODIFY ENTRY_MODIFY} event in some
* StandardWatchEventKind
s
#ENTRY_MODIFY ENTRY_MODIFY} event in some
* implementations but several events in other implementations. Short-lived
* implementations but several events in other implementations. Short-lived
* files (meaning files that are deleted very quickly after they are created)
* files (meaning files that are deleted very quickly after they are created)
* may not be detected by primitive implementations that periodically poll the
* may not be detected by primitive implementations that periodically poll the
...
...
src/share/classes/java/nio/file/Watchable.java
浏览文件 @
503c18aa
...
@@ -53,7 +53,7 @@ public interface Watchable {
...
@@ -53,7 +53,7 @@ public interface Watchable {
* those specified by the {@code events} and {@code modifiers} parameters.
* those specified by the {@code events} and {@code modifiers} parameters.
* Changing the event set does not cause pending events for the object to be
* Changing the event set does not cause pending events for the object to be
* discarded. Objects are automatically registered for the {@link
* discarded. Objects are automatically registered for the {@link
* StandardWatchEventKind#OVERFLOW OVERFLOW} event. This event is not
* StandardWatchEventKind
s
#OVERFLOW OVERFLOW} event. This event is not
* required to be present in the array of events.
* required to be present in the array of events.
*
*
* <p> Otherwise the file system object has not yet been registered with the
* <p> Otherwise the file system object has not yet been registered with the
...
...
src/share/classes/java/sql/BatchUpdateException.java
浏览文件 @
503c18aa
...
@@ -89,7 +89,7 @@ public class BatchUpdateException extends SQLException {
...
@@ -89,7 +89,7 @@ public class BatchUpdateException extends SQLException {
* The <code>cause</code> is not initialized, and may subsequently be
* The <code>cause</code> is not initialized, and may subsequently be
* initialized by a call to the
* initialized by a call to the
* {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code
* {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code
* is intialized to 0.
* is in
i
tialized to 0.
* <p>
* <p>
*
*
* @param reason a description of the exception
* @param reason a description of the exception
...
@@ -188,7 +188,7 @@ public class BatchUpdateException extends SQLException {
...
@@ -188,7 +188,7 @@ public class BatchUpdateException extends SQLException {
* @since 1.6
* @since 1.6
*/
*/
public
BatchUpdateException
(
Throwable
cause
)
{
public
BatchUpdateException
(
Throwable
cause
)
{
this
(
null
,
null
,
0
,
null
,
cause
);
this
(
(
cause
==
null
?
null
:
cause
.
toString
())
,
null
,
0
,
null
,
cause
);
}
}
/**
/**
...
@@ -214,7 +214,7 @@ public class BatchUpdateException extends SQLException {
...
@@ -214,7 +214,7 @@ public class BatchUpdateException extends SQLException {
* @since 1.6
* @since 1.6
*/
*/
public
BatchUpdateException
(
int
[]
updateCounts
,
Throwable
cause
)
{
public
BatchUpdateException
(
int
[]
updateCounts
,
Throwable
cause
)
{
this
(
null
,
null
,
0
,
updateCounts
,
cause
);
this
(
(
cause
==
null
?
null
:
cause
.
toString
())
,
null
,
0
,
updateCounts
,
cause
);
}
}
/**
/**
...
...
src/share/classes/java/util/Formatter.java
浏览文件 @
503c18aa
...
@@ -826,7 +826,7 @@ import sun.misc.FormattedFloatingDecimal;
...
@@ -826,7 +826,7 @@ import sun.misc.FormattedFloatingDecimal;
*
*
* <li> <a href="#dndec"><b>Float and Double</b></a>
* <li> <a href="#dndec"><b>Float and Double</b></a>
*
*
* <li> <a href="#dndec"><b>BigDecimal</b></a>
* <li> <a href="#dn
b
dec"><b>BigDecimal</b></a>
*
*
* </ol>
* </ol>
*
*
...
@@ -1362,7 +1362,7 @@ import sun.misc.FormattedFloatingDecimal;
...
@@ -1362,7 +1362,7 @@ import sun.misc.FormattedFloatingDecimal;
* precision is not provided, then all of the digits as returned by {@link
* precision is not provided, then all of the digits as returned by {@link
* Double#toHexString(double)} will be output.
* Double#toHexString(double)} will be output.
*
*
* <p><a name="dndec"><b> BigDecimal </b></a>
* <p><a name="dn
b
dec"><b> BigDecimal </b></a>
*
*
* <p> The following conversions may be applied {@link java.math.BigDecimal
* <p> The following conversions may be applied {@link java.math.BigDecimal
* BigDecimal}.
* BigDecimal}.
...
@@ -1372,7 +1372,7 @@ import sun.misc.FormattedFloatingDecimal;
...
@@ -1372,7 +1372,7 @@ import sun.misc.FormattedFloatingDecimal;
* <tr><td valign="top"> {@code 'e'}
* <tr><td valign="top"> {@code 'e'}
* <td valign="top"> <tt>'\u0065'</tt>
* <td valign="top"> <tt>'\u0065'</tt>
* <td> Requires the output to be formatted using <a
* <td> Requires the output to be formatted using <a
* name="scientific">computerized scientific notation</a>. The <a
* name="
b
scientific">computerized scientific notation</a>. The <a
* href="#l10n algorithm">localization algorithm</a> is applied.
* href="#l10n algorithm">localization algorithm</a> is applied.
*
*
* <p> The formatting of the magnitude <i>m</i> depends upon its value.
* <p> The formatting of the magnitude <i>m</i> depends upon its value.
...
@@ -1427,11 +1427,11 @@ import sun.misc.FormattedFloatingDecimal;
...
@@ -1427,11 +1427,11 @@ import sun.misc.FormattedFloatingDecimal;
*
*
* <p> If <i>m</i> is greater than or equal to 10<sup>-4</sup> but less
* <p> If <i>m</i> is greater than or equal to 10<sup>-4</sup> but less
* than 10<sup>precision</sup> then it is represented in <i><a
* than 10<sup>precision</sup> then it is represented in <i><a
* href="#decimal">decimal format</a></i>.
* href="#
b
decimal">decimal format</a></i>.
*
*
* <p> If <i>m</i> is less than 10<sup>-4</sup> or greater than or equal to
* <p> If <i>m</i> is less than 10<sup>-4</sup> or greater than or equal to
* 10<sup>precision</sup>, then it is represented in <i><a
* 10<sup>precision</sup>, then it is represented in <i><a
* href="#scientific">computerized scientific notation</a></i>.
* href="#
b
scientific">computerized scientific notation</a></i>.
*
*
* <p> The total number of significant digits in <i>m</i> is equal to the
* <p> The total number of significant digits in <i>m</i> is equal to the
* precision. If the precision is not specified, then the default value is
* precision. If the precision is not specified, then the default value is
...
@@ -1447,7 +1447,7 @@ import sun.misc.FormattedFloatingDecimal;
...
@@ -1447,7 +1447,7 @@ import sun.misc.FormattedFloatingDecimal;
*
*
* <tr><td valign="top"> {@code 'f'}
* <tr><td valign="top"> {@code 'f'}
* <td valign="top"> <tt>'\u0066'</tt>
* <td valign="top"> <tt>'\u0066'</tt>
* <td> Requires the output to be formatted using <a name="decimal">decimal
* <td> Requires the output to be formatted using <a name="
b
decimal">decimal
* format</a>. The <a href="#l10n algorithm">localization algorithm</a> is
* format</a>. The <a href="#l10n algorithm">localization algorithm</a> is
* applied.
* applied.
*
*
...
...
src/share/classes/java/util/concurrent/Phaser.java
浏览文件 @
503c18aa
...
@@ -159,7 +159,7 @@ import java.util.concurrent.locks.LockSupport;
...
@@ -159,7 +159,7 @@ import java.util.concurrent.locks.LockSupport;
* void runTasks(List<Runnable> tasks) {
* void runTasks(List<Runnable> tasks) {
* final Phaser phaser = new Phaser(1); // "1" to register self
* final Phaser phaser = new Phaser(1); // "1" to register self
* // create and start threads
* // create and start threads
* for (Runnable task : tasks) {
* for (
final
Runnable task : tasks) {
* phaser.register();
* phaser.register();
* new Thread() {
* new Thread() {
* public void run() {
* public void run() {
...
...
src/share/classes/java/util/concurrent/locks/LockSupport.java
浏览文件 @
503c18aa
...
@@ -275,10 +275,14 @@ public class LockSupport {
...
@@ -275,10 +275,14 @@ public class LockSupport {
* snapshot -- the thread may have since unblocked or blocked on a
* snapshot -- the thread may have since unblocked or blocked on a
* different blocker object.
* different blocker object.
*
*
* @param t the thread
* @return the blocker
* @return the blocker
* @throws NullPointerException if argument is null
* @since 1.6
* @since 1.6
*/
*/
public
static
Object
getBlocker
(
Thread
t
)
{
public
static
Object
getBlocker
(
Thread
t
)
{
if
(
t
==
null
)
throw
new
NullPointerException
();
return
unsafe
.
getObjectVolatile
(
t
,
parkBlockerOffset
);
return
unsafe
.
getObjectVolatile
(
t
,
parkBlockerOffset
);
}
}
...
...
src/share/classes/java/util/logging/LogManager.java
浏览文件 @
503c18aa
/*
/*
* Copyright (c) 2000, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
1
, 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
...
@@ -342,12 +342,35 @@ public class LogManager {
...
@@ -342,12 +342,35 @@ public class LogManager {
// already been created with the given name it is returned.
// already been created with the given name it is returned.
// Otherwise a new logger instance is created and registered
// Otherwise a new logger instance is created and registered
// in the LogManager global namespace.
// in the LogManager global namespace.
// This method will always return a non-null Logger object.
// Synchronization is not required here. All synchronization for
// adding a new Logger object is handled by addLogger().
Logger
demandLogger
(
String
name
)
{
Logger
demandLogger
(
String
name
)
{
Logger
result
=
getLogger
(
name
);
Logger
result
=
getLogger
(
name
);
if
(
result
==
null
)
{
if
(
result
==
null
)
{
result
=
new
Logger
(
name
,
null
);
// only allocate the new logger once
addLogger
(
result
);
Logger
newLogger
=
new
Logger
(
name
,
null
);
do
{
if
(
addLogger
(
newLogger
))
{
// We successfully added the new Logger that we
// created above so return it without refetching.
return
newLogger
;
}
// We didn't add the new Logger that we created above
// because another thread added a Logger with the same
// name after our null check above and before our call
// to addLogger(). We have to refetch the Logger because
// addLogger() returns a boolean instead of the Logger
// reference itself. However, if the thread that created
// the other Logger is not holding a strong reference to
// the other Logger, then it is possible for the other
// Logger to be GC'ed after we saw it in addLogger() and
// before we can refetch it. If it has been GC'ed then
// we'll just loop around and try again.
result
=
getLogger
(
name
);
result
=
getLogger
(
name
);
}
while
(
result
==
null
);
}
}
return
result
;
return
result
;
}
}
...
...
src/share/classes/java/util/logging/Logger.java
浏览文件 @
503c18aa
...
@@ -310,7 +310,20 @@ public class Logger {
...
@@ -310,7 +310,20 @@ public class Logger {
* @return a suitable Logger
* @return a suitable Logger
* @throws NullPointerException if the name is null.
* @throws NullPointerException if the name is null.
*/
*/
public
static
synchronized
Logger
getLogger
(
String
name
)
{
// Synchronization is not required here. All synchronization for
// adding a new Logger object is handled by LogManager.addLogger().
public
static
Logger
getLogger
(
String
name
)
{
// This method is intentionally not a wrapper around a call
// to getLogger(name, resourceBundleName). If it were then
// this sequence:
//
// getLogger("Foo", "resourceBundleForFoo");
// getLogger("Foo");
//
// would throw an IllegalArgumentException in the second call
// because the wrapper would result in an attempt to replace
// the existing "resourceBundleForFoo" with null.
LogManager
manager
=
LogManager
.
getLogManager
();
LogManager
manager
=
LogManager
.
getLogManager
();
return
manager
.
demandLogger
(
name
);
return
manager
.
demandLogger
(
name
);
}
}
...
@@ -355,7 +368,10 @@ public class Logger {
...
@@ -355,7 +368,10 @@ public class Logger {
* a different resource bundle name.
* a different resource bundle name.
* @throws NullPointerException if the name is null.
* @throws NullPointerException if the name is null.
*/
*/
public
static
synchronized
Logger
getLogger
(
String
name
,
String
resourceBundleName
)
{
// Synchronization is not required here. All synchronization for
// adding a new Logger object is handled by LogManager.addLogger().
public
static
Logger
getLogger
(
String
name
,
String
resourceBundleName
)
{
LogManager
manager
=
LogManager
.
getLogManager
();
LogManager
manager
=
LogManager
.
getLogManager
();
Logger
result
=
manager
.
demandLogger
(
name
);
Logger
result
=
manager
.
demandLogger
(
name
);
if
(
result
.
resourceBundleName
==
null
)
{
if
(
result
.
resourceBundleName
==
null
)
{
...
@@ -417,7 +433,10 @@ public class Logger {
...
@@ -417,7 +433,10 @@ public class Logger {
* @throws MissingResourceException if the resourceBundleName is non-null and
* @throws MissingResourceException if the resourceBundleName is non-null and
* no corresponding resource can be found.
* no corresponding resource can be found.
*/
*/
public
static
synchronized
Logger
getAnonymousLogger
(
String
resourceBundleName
)
{
// Synchronization is not required here. All synchronization for
// adding a new anonymous Logger object is handled by doSetParent().
public
static
Logger
getAnonymousLogger
(
String
resourceBundleName
)
{
LogManager
manager
=
LogManager
.
getLogManager
();
LogManager
manager
=
LogManager
.
getLogManager
();
// cleanup some Loggers that have been GC'ed
// cleanup some Loggers that have been GC'ed
manager
.
drainLoggerRefQueueBounded
();
manager
.
drainLoggerRefQueueBounded
();
...
...
src/share/classes/java/util/regex/Pattern.java
浏览文件 @
503c18aa
...
@@ -213,7 +213,7 @@ import java.util.Arrays;
...
@@ -213,7 +213,7 @@ import java.util.Arrays;
* <td headers="matches">A character in the Greek block (<a href="#ubc">block</a>)</td></tr>
* <td headers="matches">A character in the Greek block (<a href="#ubc">block</a>)</td></tr>
* <tr><td valign="top" headers="construct unicode"><tt>\p{Lu}</tt></td>
* <tr><td valign="top" headers="construct unicode"><tt>\p{Lu}</tt></td>
* <td headers="matches">An uppercase letter (<a href="#ucc">category</a>)</td></tr>
* <td headers="matches">An uppercase letter (<a href="#ucc">category</a>)</td></tr>
* <tr><td valign="top" headers="construct unicode"><tt>\p{
i
sAlphabetic}</tt></td>
* <tr><td valign="top" headers="construct unicode"><tt>\p{
I
sAlphabetic}</tt></td>
* <td headers="matches">An alphabetic character (<a href="#ubpc">binary property</a>)</td></tr>
* <td headers="matches">An alphabetic character (<a href="#ubpc">binary property</a>)</td></tr>
* <tr><td valign="top" headers="construct unicode"><tt>\p{Sc}</tt></td>
* <tr><td valign="top" headers="construct unicode"><tt>\p{Sc}</tt></td>
* <td headers="matches">A currency symbol</td></tr>
* <td headers="matches">A currency symbol</td></tr>
...
...
src/share/classes/java/util/zip/ZipCoder.java
浏览文件 @
503c18aa
...
@@ -28,7 +28,7 @@ package java.util.zip;
...
@@ -28,7 +28,7 @@ package java.util.zip;
import
java.nio.ByteBuffer
;
import
java.nio.ByteBuffer
;
import
java.nio.CharBuffer
;
import
java.nio.CharBuffer
;
import
java.nio.charset.Charset
;
import
java.nio.charset.Charset
;
import
java.nio.charset.StandardCharset
;
import
java.nio.charset.StandardCharset
s
;
import
java.nio.charset.CharsetDecoder
;
import
java.nio.charset.CharsetDecoder
;
import
java.nio.charset.CharsetEncoder
;
import
java.nio.charset.CharsetEncoder
;
import
java.nio.charset.CoderResult
;
import
java.nio.charset.CoderResult
;
...
@@ -107,7 +107,7 @@ final class ZipCoder {
...
@@ -107,7 +107,7 @@ final class ZipCoder {
if
(
isUTF8
)
if
(
isUTF8
)
return
getBytes
(
s
);
return
getBytes
(
s
);
if
(
utf8
==
null
)
if
(
utf8
==
null
)
utf8
=
new
ZipCoder
(
StandardCharset
.
UTF_8
);
utf8
=
new
ZipCoder
(
StandardCharset
s
.
UTF_8
);
return
utf8
.
getBytes
(
s
);
return
utf8
.
getBytes
(
s
);
}
}
...
@@ -116,7 +116,7 @@ final class ZipCoder {
...
@@ -116,7 +116,7 @@ final class ZipCoder {
if
(
isUTF8
)
if
(
isUTF8
)
return
toString
(
ba
,
len
);
return
toString
(
ba
,
len
);
if
(
utf8
==
null
)
if
(
utf8
==
null
)
utf8
=
new
ZipCoder
(
StandardCharset
.
UTF_8
);
utf8
=
new
ZipCoder
(
StandardCharset
s
.
UTF_8
);
return
utf8
.
toString
(
ba
,
len
);
return
utf8
.
toString
(
ba
,
len
);
}
}
...
@@ -132,7 +132,7 @@ final class ZipCoder {
...
@@ -132,7 +132,7 @@ final class ZipCoder {
private
ZipCoder
(
Charset
cs
)
{
private
ZipCoder
(
Charset
cs
)
{
this
.
cs
=
cs
;
this
.
cs
=
cs
;
this
.
isUTF8
=
cs
.
name
().
equals
(
StandardCharset
.
UTF_8
.
name
());
this
.
isUTF8
=
cs
.
name
().
equals
(
StandardCharset
s
.
UTF_8
.
name
());
}
}
static
ZipCoder
get
(
Charset
charset
)
{
static
ZipCoder
get
(
Charset
charset
)
{
...
...
src/share/classes/java/util/zip/ZipFile.java
浏览文件 @
503c18aa
...
@@ -31,7 +31,7 @@ import java.io.IOException;
...
@@ -31,7 +31,7 @@ import java.io.IOException;
import
java.io.EOFException
;
import
java.io.EOFException
;
import
java.io.File
;
import
java.io.File
;
import
java.nio.charset.Charset
;
import
java.nio.charset.Charset
;
import
java.nio.charset.StandardCharset
;
import
java.nio.charset.StandardCharset
s
;
import
java.util.ArrayDeque
;
import
java.util.ArrayDeque
;
import
java.util.Deque
;
import
java.util.Deque
;
import
java.util.Enumeration
;
import
java.util.Enumeration
;
...
@@ -141,7 +141,7 @@ class ZipFile implements ZipConstants, Closeable {
...
@@ -141,7 +141,7 @@ class ZipFile implements ZipConstants, Closeable {
* @since 1.3
* @since 1.3
*/
*/
public
ZipFile
(
File
file
,
int
mode
)
throws
IOException
{
public
ZipFile
(
File
file
,
int
mode
)
throws
IOException
{
this
(
file
,
mode
,
StandardCharset
.
UTF_8
);
this
(
file
,
mode
,
StandardCharset
s
.
UTF_8
);
}
}
/**
/**
...
...
src/share/classes/java/util/zip/ZipInputStream.java
浏览文件 @
503c18aa
...
@@ -30,7 +30,7 @@ import java.io.IOException;
...
@@ -30,7 +30,7 @@ import java.io.IOException;
import
java.io.EOFException
;
import
java.io.EOFException
;
import
java.io.PushbackInputStream
;
import
java.io.PushbackInputStream
;
import
java.nio.charset.Charset
;
import
java.nio.charset.Charset
;
import
java.nio.charset.StandardCharset
;
import
java.nio.charset.StandardCharset
s
;
import
static
java
.
util
.
zip
.
ZipConstants64
.*;
import
static
java
.
util
.
zip
.
ZipConstants64
.*;
/**
/**
...
@@ -76,7 +76,7 @@ class ZipInputStream extends InflaterInputStream implements ZipConstants {
...
@@ -76,7 +76,7 @@ class ZipInputStream extends InflaterInputStream implements ZipConstants {
* @param in the actual input stream
* @param in the actual input stream
*/
*/
public
ZipInputStream
(
InputStream
in
)
{
public
ZipInputStream
(
InputStream
in
)
{
this
(
in
,
StandardCharset
.
UTF_8
);
this
(
in
,
StandardCharset
s
.
UTF_8
);
}
}
/**
/**
...
...
src/share/classes/java/util/zip/ZipOutputStream.java
浏览文件 @
503c18aa
...
@@ -28,7 +28,7 @@ package java.util.zip;
...
@@ -28,7 +28,7 @@ package java.util.zip;
import
java.io.OutputStream
;
import
java.io.OutputStream
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.nio.charset.Charset
;
import
java.nio.charset.Charset
;
import
java.nio.charset.StandardCharset
;
import
java.nio.charset.StandardCharset
s
;
import
java.util.Vector
;
import
java.util.Vector
;
import
java.util.HashSet
;
import
java.util.HashSet
;
import
static
java
.
util
.
zip
.
ZipConstants64
.*;
import
static
java
.
util
.
zip
.
ZipConstants64
.*;
...
@@ -101,7 +101,7 @@ class ZipOutputStream extends DeflaterOutputStream implements ZipConstants {
...
@@ -101,7 +101,7 @@ class ZipOutputStream extends DeflaterOutputStream implements ZipConstants {
* @param out the actual output stream
* @param out the actual output stream
*/
*/
public
ZipOutputStream
(
OutputStream
out
)
{
public
ZipOutputStream
(
OutputStream
out
)
{
this
(
out
,
StandardCharset
.
UTF_8
);
this
(
out
,
StandardCharset
s
.
UTF_8
);
}
}
/**
/**
...
...
src/share/classes/javax/management/loading/package.html
浏览文件 @
503c18aa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<head>
<head>
<title>
javax.management.loading package
</title>
<title>
javax.management.loading package
</title>
<!--
<!--
Copyright (c) 1999, 20
06
, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 1999, 20
11
, 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
...
@@ -68,7 +68,7 @@ questions.
...
@@ -68,7 +68,7 @@ questions.
<p
id=
"spec"
>
<p
id=
"spec"
>
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
Java
SE 6
Platform documentation on JMX technology
</a>
,
Java Platform documentation on JMX technology
</a>
,
in particular the
in particular the
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
JMX Specification, version 1.4(pdf).
</a>
JMX Specification, version 1.4(pdf).
</a>
...
...
src/share/classes/javax/management/modelmbean/package.html
浏览文件 @
503c18aa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<head>
<head>
<title>
javax.management.modelmbean package
</title>
<title>
javax.management.modelmbean package
</title>
<!--
<!--
Copyright (c) 2000, 20
06
, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2000, 20
11
, 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
...
@@ -116,7 +116,7 @@ mbs.invoke(mapName, "get", new Object[] {"key"}, new String[] {Object.class.getN
...
@@ -116,7 +116,7 @@ mbs.invoke(mapName, "get", new Object[] {"key"}, new String[] {Object.class.getN
<li>
See the
<i>
JMX 1.4 Specification
</i>
<li>
See the
<i>
JMX 1.4 Specification
</i>
PDF document available from the
PDF document available from the
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
Java
SE 6 Platform documentation on JMX
</a>
Java
Platform documentation on JMX technology
</a>
</ul>
</ul>
@since 1.5
@since 1.5
...
...
src/share/classes/javax/management/monitor/package.html
浏览文件 @
503c18aa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<head>
<head>
<title>
javax.management.monitor package
</title>
<title>
javax.management.monitor package
</title>
<!--
<!--
Copyright (c) 1999, 20
06
, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 1999, 20
11
, 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
...
@@ -184,7 +184,7 @@ questions.
...
@@ -184,7 +184,7 @@ questions.
</ul>
</ul>
<p
id=
"spec"
>
<p
id=
"spec"
>
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
Java
SE 6
Platform documentation on JMX technology
</a>
,
Java Platform documentation on JMX technology
</a>
,
in particular the
in particular the
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
JMX Specification, version 1.4(pdf).
</a>
JMX Specification, version 1.4(pdf).
</a>
...
...
src/share/classes/javax/management/openmbean/package.html
浏览文件 @
503c18aa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<head>
<head>
<title>
javax.management.openmbean package
</title>
<title>
javax.management.openmbean package
</title>
<!--
<!--
Copyright (c) 2001, 20
07
, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2001, 20
11
, 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
...
@@ -143,7 +143,7 @@ questions.
...
@@ -143,7 +143,7 @@ questions.
</ul>
</ul>
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
Java
SE 6
Platform documentation on JMX technology
</a>
,
Java Platform documentation on JMX technology
</a>
,
in particular the
in particular the
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
JMX Specification, version 1.4
</a>
JMX Specification, version 1.4
</a>
...
...
src/share/classes/javax/management/package.html
浏览文件 @
503c18aa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<head>
<head>
<title>
javax.management package
</title>
<title>
javax.management package
</title>
<!--
<!--
Copyright (c) 1999, 20
06
, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 1999, 20
11
, 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
...
@@ -391,7 +391,7 @@ questions.
...
@@ -391,7 +391,7 @@ questions.
<p
id=
"spec"
>
<p
id=
"spec"
>
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/index.html"
>
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/index.html"
>
Java
SE 6
Platform documentation on JMX technology
</a>
Java Platform documentation on JMX technology
</a>
in particular the
in particular the
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
JMX Specification, version 1.4(pdf).
</a>
JMX Specification, version 1.4(pdf).
</a>
...
...
src/share/classes/javax/management/relation/package.html
浏览文件 @
503c18aa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<head>
<head>
<title>
javax.management.relation package
</title>
<title>
javax.management.relation package
</title>
<!--
<!--
Copyright (c) 2000, 20
06
, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2000, 20
11
, 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
...
@@ -137,7 +137,7 @@ Set<ObjectName> dependentASet = dependentAMap.keySet();
...
@@ -137,7 +137,7 @@ Set<ObjectName> dependentASet = dependentAMap.keySet();
</pre>
</pre>
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
Java
SE 6
Platform documentation on JMX technology
</a>
,
Java Platform documentation on JMX technology
</a>
,
in particular the
in particular the
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
JMX Specification, version 1.4
</a>
JMX Specification, version 1.4
</a>
...
...
src/share/classes/javax/management/remote/package.html
浏览文件 @
503c18aa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<head>
<head>
<title>
JMX
<sup><font
size=
"-2"
>
TM
</font></sup>
Remote API.
</title>
<title>
JMX
<sup><font
size=
"-2"
>
TM
</font></sup>
Remote API.
</title>
<!--
<!--
Copyright (c) 2002, 20
06
, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2002, 20
11
, 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
...
@@ -195,7 +195,7 @@ rmi://192.18.1.9 username 1
...
@@ -195,7 +195,7 @@ rmi://192.18.1.9 username 1
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
@see
<a
href=
"{@docRoot}/../technotes/guides/jmx/"
>
Java
SE 6
Platform documentation on JMX technology
</a>
,
Java Platform documentation on JMX technology
</a>
,
in particular the
in particular the
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
<a
href=
"{@docRoot}/../technotes/guides/jmx/JMX_1_4_specification.pdf"
>
JMX Specification, version 1.4
</a>
JMX Specification, version 1.4
</a>
...
...
src/share/classes/javax/management/timer/Timer.java
浏览文件 @
503c18aa
...
@@ -26,6 +26,7 @@
...
@@ -26,6 +26,7 @@
package
javax.management.timer
;
package
javax.management.timer
;
import
static
com
.
sun
.
jmx
.
defaults
.
JmxProperties
.
TIMER_LOGGER
;
import
static
com
.
sun
.
jmx
.
defaults
.
JmxProperties
.
TIMER_LOGGER
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.Hashtable
;
import
java.util.Hashtable
;
import
java.util.Iterator
;
import
java.util.Iterator
;
...
@@ -1003,7 +1004,10 @@ public class Timer extends NotificationBroadcasterSupport
...
@@ -1003,7 +1004,10 @@ public class Timer extends NotificationBroadcasterSupport
Integer
notifID
;
Integer
notifID
;
Date
date
;
Date
date
;
for
(
Object
[]
obj
:
timerTable
.
values
())
{
ArrayList
<
Object
[]>
values
=
new
ArrayList
<
Object
[]>(
timerTable
.
values
());
for
(
Object
[]
obj
:
values
)
{
// Retrieve the timer notification and the date notification.
// Retrieve the timer notification and the date notification.
//
//
...
...
src/share/classes/sun/awt/FontDescriptor.java
浏览文件 @
503c18aa
...
@@ -26,7 +26,7 @@ package sun.awt;
...
@@ -26,7 +26,7 @@ package sun.awt;
import
java.nio.charset.Charset
;
import
java.nio.charset.Charset
;
import
java.nio.charset.CharsetEncoder
;
import
java.nio.charset.CharsetEncoder
;
import
java.nio.charset.StandardCharset
;
import
java.nio.charset.StandardCharset
s
;
import
sun.nio.cs.HistoricallyNamedCharset
;
import
sun.nio.cs.HistoricallyNamedCharset
;
public
class
FontDescriptor
implements
Cloneable
{
public
class
FontDescriptor
implements
Cloneable
{
...
@@ -105,8 +105,8 @@ public class FontDescriptor implements Cloneable {
...
@@ -105,8 +105,8 @@ public class FontDescriptor implements Cloneable {
if
(
useUnicode
&&
unicodeEncoder
==
null
)
{
if
(
useUnicode
&&
unicodeEncoder
==
null
)
{
try
{
try
{
this
.
unicodeEncoder
=
isLE
?
this
.
unicodeEncoder
=
isLE
?
StandardCharset
.
UTF_16LE
.
newEncoder
():
StandardCharset
s
.
UTF_16LE
.
newEncoder
():
StandardCharset
.
UTF_16BE
.
newEncoder
();
StandardCharset
s
.
UTF_16BE
.
newEncoder
();
}
catch
(
IllegalArgumentException
x
)
{}
}
catch
(
IllegalArgumentException
x
)
{}
}
}
return
useUnicode
;
return
useUnicode
;
...
...
src/share/classes/sun/management/GarbageCollectionNotifInfoCompositeData.java
0 → 100644
浏览文件 @
503c18aa
/*
* Copyright (c) 2011, 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.management
;
import
com.sun.management.GarbageCollectionNotificationInfo
;
import
com.sun.management.GcInfo
;
import
java.lang.reflect.Method
;
import
javax.management.openmbean.CompositeData
;
import
javax.management.openmbean.CompositeType
;
import
javax.management.openmbean.CompositeDataSupport
;
import
javax.management.openmbean.OpenDataException
;
import
javax.management.openmbean.OpenType
;
import
javax.management.openmbean.SimpleType
;
import
java.security.AccessController
;
import
java.security.PrivilegedAction
;
import
java.lang.reflect.Field
;
import
java.util.HashMap
;
/**
* A CompositeData for GarbageCollectionNotificationInfo for the local management support.
* This class avoids the performance penalty paid to the
* construction of a CompositeData use in the local case.
*/
public
class
GarbageCollectionNotifInfoCompositeData
extends
LazyCompositeData
{
private
final
GarbageCollectionNotificationInfo
gcNotifInfo
;
public
GarbageCollectionNotifInfoCompositeData
(
GarbageCollectionNotificationInfo
info
)
{
this
.
gcNotifInfo
=
info
;
}
public
GarbageCollectionNotificationInfo
getGarbageCollectionNotifInfo
()
{
return
gcNotifInfo
;
}
public
static
CompositeData
toCompositeData
(
GarbageCollectionNotificationInfo
info
)
{
GarbageCollectionNotifInfoCompositeData
gcnicd
=
new
GarbageCollectionNotifInfoCompositeData
(
info
);
return
gcnicd
.
getCompositeData
();
}
private
CompositeType
getCompositeTypeByBuilder
()
{
final
GcInfoBuilder
builder
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
GcInfoBuilder
>()
{
public
GcInfoBuilder
run
()
{
try
{
Class
cl
=
Class
.
forName
(
"com.sun.management.GcInfo"
);
Field
f
=
cl
.
getDeclaredField
(
"builder"
);
f
.
setAccessible
(
true
);
return
(
GcInfoBuilder
)
f
.
get
(
gcNotifInfo
.
getGcInfo
());
}
catch
(
ClassNotFoundException
e
)
{
return
null
;
}
catch
(
NoSuchFieldException
e
)
{
return
null
;
}
catch
(
IllegalAccessException
e
)
{
return
null
;
}
}
});
CompositeType
gict
=
null
;
synchronized
(
compositeTypeByBuilder
)
{
gict
=
compositeTypeByBuilder
.
get
(
builder
);
if
(
gict
==
null
)
{
OpenType
[]
gcNotifInfoItemTypes
=
new
OpenType
[]
{
SimpleType
.
STRING
,
SimpleType
.
STRING
,
SimpleType
.
STRING
,
builder
.
getGcInfoCompositeType
(),
};
try
{
final
String
typeName
=
"sun.management.GarbageCollectionNotifInfoCompositeType"
;
gict
=
new
CompositeType
(
typeName
,
"CompositeType for GC notification info"
,
gcNotifInfoItemNames
,
gcNotifInfoItemNames
,
gcNotifInfoItemTypes
);
compositeTypeByBuilder
.
put
(
builder
,
gict
);
}
catch
(
OpenDataException
e
)
{
// shouldn't reach here
throw
Util
.
newException
(
e
);
}
}
}
return
gict
;
}
protected
CompositeData
getCompositeData
()
{
// CONTENTS OF THIS ARRAY MUST BE SYNCHRONIZED WITH
// gcNotifInfoItemNames!
final
Object
[]
gcNotifInfoItemValues
;
gcNotifInfoItemValues
=
new
Object
[]
{
gcNotifInfo
.
getGcName
(),
gcNotifInfo
.
getGcAction
(),
gcNotifInfo
.
getGcCause
(),
GcInfoCompositeData
.
toCompositeData
(
gcNotifInfo
.
getGcInfo
())
};
CompositeType
gict
=
getCompositeTypeByBuilder
();
try
{
return
new
CompositeDataSupport
(
gict
,
gcNotifInfoItemNames
,
gcNotifInfoItemValues
);
}
catch
(
OpenDataException
e
)
{
// Should never reach here
throw
new
AssertionError
(
e
);
}
}
// private static MappedMXBeanType gcInfoMapType;
private
static
final
String
GC_NAME
=
"gcName"
;
private
static
final
String
GC_ACTION
=
"gcAction"
;
private
static
final
String
GC_CAUSE
=
"gcCause"
;
private
static
final
String
GC_INFO
=
"gcInfo"
;
private
static
final
String
[]
gcNotifInfoItemNames
=
{
GC_NAME
,
GC_ACTION
,
GC_CAUSE
,
GC_INFO
};
private
static
HashMap
<
GcInfoBuilder
,
CompositeType
>
compositeTypeByBuilder
=
new
HashMap
<
GcInfoBuilder
,
CompositeType
>();
public
static
String
getGcName
(
CompositeData
cd
)
{
String
gcname
=
getString
(
cd
,
GC_NAME
);
if
(
gcname
==
null
)
{
throw
new
IllegalArgumentException
(
"Invalid composite data: "
+
"Attribute "
+
GC_NAME
+
" has null value"
);
}
return
gcname
;
}
public
static
String
getGcAction
(
CompositeData
cd
)
{
String
gcaction
=
getString
(
cd
,
GC_ACTION
);
if
(
gcaction
==
null
)
{
throw
new
IllegalArgumentException
(
"Invalid composite data: "
+
"Attribute "
+
GC_ACTION
+
" has null value"
);
}
return
gcaction
;
}
public
static
String
getGcCause
(
CompositeData
cd
)
{
String
gccause
=
getString
(
cd
,
GC_CAUSE
);
if
(
gccause
==
null
)
{
throw
new
IllegalArgumentException
(
"Invalid composite data: "
+
"Attribute "
+
GC_CAUSE
+
" has null value"
);
}
return
gccause
;
}
public
static
GcInfo
getGcInfo
(
CompositeData
cd
)
{
CompositeData
gcInfoData
=
(
CompositeData
)
cd
.
get
(
GC_INFO
);
return
GcInfo
.
from
(
gcInfoData
);
}
/** Validate if the input CompositeData has the expected
* CompositeType (i.e. contain all attributes with expected
* names and types).
*/
public
static
void
validateCompositeData
(
CompositeData
cd
)
{
if
(
cd
==
null
)
{
throw
new
NullPointerException
(
"Null CompositeData"
);
}
if
(!
isTypeMatched
(
getBaseGcNotifInfoCompositeType
(),
cd
.
getCompositeType
()))
{
throw
new
IllegalArgumentException
(
"Unexpected composite type for GarbageCollectionNotificationInfo"
);
}
}
// This is only used for validation.
private
static
CompositeType
baseGcNotifInfoCompositeType
=
null
;
private
static
synchronized
CompositeType
getBaseGcNotifInfoCompositeType
()
{
if
(
baseGcNotifInfoCompositeType
==
null
)
{
try
{
OpenType
[]
baseGcNotifInfoItemTypes
=
new
OpenType
[]
{
SimpleType
.
STRING
,
SimpleType
.
STRING
,
SimpleType
.
STRING
,
GcInfoCompositeData
.
getBaseGcInfoCompositeType
()
};
baseGcNotifInfoCompositeType
=
new
CompositeType
(
"sun.management.BaseGarbageCollectionNotifInfoCompositeType"
,
"CompositeType for Base GarbageCollectionNotificationInfo"
,
gcNotifInfoItemNames
,
gcNotifInfoItemNames
,
baseGcNotifInfoItemTypes
);
}
catch
(
OpenDataException
e
)
{
// shouldn't reach here
throw
Util
.
newException
(
e
);
}
}
return
baseGcNotifInfoCompositeType
;
}
private
static
final
long
serialVersionUID
=
-
1805123446483771292L
;
}
src/share/classes/sun/management/GarbageCollectorImpl.java
浏览文件 @
503c18aa
/*
/*
* Copyright (c) 2003, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
11
, 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,6 +26,7 @@
...
@@ -26,6 +26,7 @@
package
sun.management
;
package
sun.management
;
import
com.sun.management.GarbageCollectorMXBean
;
import
com.sun.management.GarbageCollectorMXBean
;
import
com.sun.management.GarbageCollectionNotificationInfo
;
import
java.lang.management.ManagementFactory
;
import
java.lang.management.ManagementFactory
;
import
java.lang.management.MemoryPoolMXBean
;
import
java.lang.management.MemoryPoolMXBean
;
import
java.lang.management.MemoryUsage
;
import
java.lang.management.MemoryUsage
;
...
@@ -35,9 +36,15 @@ import javax.management.openmbean.CompositeData;
...
@@ -35,9 +36,15 @@ import javax.management.openmbean.CompositeData;
import
javax.management.MBeanInfo
;
import
javax.management.MBeanInfo
;
import
javax.management.MBeanAttributeInfo
;
import
javax.management.MBeanAttributeInfo
;
import
javax.management.ObjectName
;
import
javax.management.ObjectName
;
import
javax.management.MBeanNotificationInfo
;
import
javax.management.Notification
;
import
javax.management.NotificationFilter
;
import
javax.management.NotificationListener
;
import
javax.management.ListenerNotFoundException
;
import
java.util.List
;
import
java.util.List
;
import
java.util.ListIterator
;
import
java.util.ListIterator
;
import
java.util.Map
;
/**
/**
* Implementation class for the garbage collector.
* Implementation class for the garbage collector.
...
@@ -78,19 +85,111 @@ class GarbageCollectorImpl extends MemoryManagerImpl
...
@@ -78,19 +85,111 @@ class GarbageCollectorImpl extends MemoryManagerImpl
// Sun JDK extension
// Sun JDK extension
private
GcInfoBuilder
gcInfoBuilder
;
private
GcInfoBuilder
gcInfoBuilder
;
public
GcInfo
getLastGcInfo
()
{
synchronized
(
this
)
{
private
synchronized
GcInfoBuilder
getGcInfoBuilder
(
)
{
if
(
gcInfoBuilder
==
null
)
{
if
(
gcInfoBuilder
==
null
)
{
gcInfoBuilder
=
new
GcInfoBuilder
(
this
,
getAllPoolNames
());
gcInfoBuilder
=
new
GcInfoBuilder
(
this
,
getAllPoolNames
());
}
}
return
gcInfoBuilder
;
}
}
GcInfo
info
=
gcInfoBuilder
.
getLastGcInfo
();
public
GcInfo
getLastGcInfo
()
{
GcInfo
info
=
getGcInfoBuilder
().
getLastGcInfo
();
return
info
;
return
info
;
}
}
private
final
static
String
notifName
=
"javax.management.Notification"
;
private
final
static
String
[]
gcNotifTypes
=
{
GarbageCollectionNotificationInfo
.
GARBAGE_COLLECTION_NOTIFICATION
};
private
MBeanNotificationInfo
[]
notifInfo
=
null
;
public
MBeanNotificationInfo
[]
getNotificationInfo
()
{
synchronized
(
this
)
{
if
(
notifInfo
==
null
)
{
notifInfo
=
new
MBeanNotificationInfo
[
1
];
notifInfo
[
0
]
=
new
MBeanNotificationInfo
(
gcNotifTypes
,
notifName
,
"GC Notification"
);
}
}
return
notifInfo
;
}
private
static
long
seqNumber
=
0
;
private
static
long
getNextSeqNumber
()
{
return
++
seqNumber
;
}
void
createGCNotification
(
long
timestamp
,
String
gcName
,
String
gcAction
,
String
gcCause
,
GcInfo
gcInfo
)
{
if
(!
hasListeners
())
{
return
;
}
Notification
notif
=
new
Notification
(
GarbageCollectionNotificationInfo
.
GARBAGE_COLLECTION_NOTIFICATION
,
getObjectName
(),
getNextSeqNumber
(),
timestamp
,
gcName
);
GarbageCollectionNotificationInfo
info
=
new
GarbageCollectionNotificationInfo
(
gcName
,
gcAction
,
gcCause
,
gcInfo
);
CompositeData
cd
=
GarbageCollectionNotifInfoCompositeData
.
toCompositeData
(
info
);
notif
.
setUserData
(
cd
);
sendNotification
(
notif
);
}
public
synchronized
void
addNotificationListener
(
NotificationListener
listener
,
NotificationFilter
filter
,
Object
handback
)
{
boolean
before
=
hasListeners
();
super
.
addNotificationListener
(
listener
,
filter
,
handback
);
boolean
after
=
hasListeners
();
if
(!
before
&&
after
)
{
setNotificationEnabled
(
this
,
true
);
}
}
public
synchronized
void
removeNotificationListener
(
NotificationListener
listener
)
throws
ListenerNotFoundException
{
boolean
before
=
hasListeners
();
super
.
removeNotificationListener
(
listener
);
boolean
after
=
hasListeners
();
if
(
before
&&
!
after
)
{
setNotificationEnabled
(
this
,
false
);
}
}
public
synchronized
void
removeNotificationListener
(
NotificationListener
listener
,
NotificationFilter
filter
,
Object
handback
)
throws
ListenerNotFoundException
{
boolean
before
=
hasListeners
();
super
.
removeNotificationListener
(
listener
,
filter
,
handback
);
boolean
after
=
hasListeners
();
if
(
before
&&
!
after
)
{
setNotificationEnabled
(
this
,
false
);
}
}
public
ObjectName
getObjectName
()
{
public
ObjectName
getObjectName
()
{
return
Util
.
newObjectName
(
ManagementFactory
.
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
,
getName
());
return
Util
.
newObjectName
(
ManagementFactory
.
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
,
getName
());
}
}
native
void
setNotificationEnabled
(
GarbageCollectorMXBean
gc
,
boolean
enabled
);
}
}
src/share/classes/sun/management/GcInfoCompositeData.java
浏览文件 @
503c18aa
/*
/*
* Copyright (c) 2004, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 20
11
, 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
...
@@ -27,6 +27,7 @@ package sun.management;
...
@@ -27,6 +27,7 @@ package sun.management;
import
java.lang.management.MemoryUsage
;
import
java.lang.management.MemoryUsage
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Field
;
import
java.util.Iterator
;
import
java.util.Iterator
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.HashMap
;
import
java.util.HashMap
;
...
@@ -41,6 +42,9 @@ import javax.management.openmbean.SimpleType;
...
@@ -41,6 +42,9 @@ import javax.management.openmbean.SimpleType;
import
javax.management.openmbean.OpenType
;
import
javax.management.openmbean.OpenType
;
import
javax.management.openmbean.OpenDataException
;
import
javax.management.openmbean.OpenDataException
;
import
com.sun.management.GcInfo
;
import
com.sun.management.GcInfo
;
import
com.sun.management.GarbageCollectionNotificationInfo
;
import
java.security.AccessController
;
import
java.security.PrivilegedAction
;
/**
/**
* A CompositeData for GcInfo for the local management support.
* A CompositeData for GcInfo for the local management support.
...
@@ -64,6 +68,44 @@ public class GcInfoCompositeData extends LazyCompositeData {
...
@@ -64,6 +68,44 @@ public class GcInfoCompositeData extends LazyCompositeData {
return
info
;
return
info
;
}
}
public
static
CompositeData
toCompositeData
(
final
GcInfo
info
)
{
final
GcInfoBuilder
builder
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
GcInfoBuilder
>()
{
public
GcInfoBuilder
run
()
{
try
{
Class
cl
=
Class
.
forName
(
"com.sun.management.GcInfo"
);
Field
f
=
cl
.
getDeclaredField
(
"builder"
);
f
.
setAccessible
(
true
);
return
(
GcInfoBuilder
)
f
.
get
(
info
);
}
catch
(
ClassNotFoundException
e
)
{
return
null
;
}
catch
(
NoSuchFieldException
e
)
{
return
null
;
}
catch
(
IllegalAccessException
e
)
{
return
null
;
}
}
});
final
Object
[]
extAttr
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Object
[]>()
{
public
Object
[]
run
()
{
try
{
Class
cl
=
Class
.
forName
(
"com.sun.management.GcInfo"
);
Field
f
=
cl
.
getDeclaredField
(
"extAttributes"
);
f
.
setAccessible
(
true
);
return
(
Object
[])
f
.
get
(
info
);
}
catch
(
ClassNotFoundException
e
)
{
return
null
;
}
catch
(
NoSuchFieldException
e
)
{
return
null
;
}
catch
(
IllegalAccessException
e
)
{
return
null
;
}
}
});
GcInfoCompositeData
gcicd
=
new
GcInfoCompositeData
(
info
,
builder
,
extAttr
);
return
gcicd
.
getCompositeData
();
}
protected
CompositeData
getCompositeData
()
{
protected
CompositeData
getCompositeData
()
{
// CONTENTS OF THIS ARRAY MUST BE SYNCHRONIZED WITH
// CONTENTS OF THIS ARRAY MUST BE SYNCHRONIZED WITH
// baseGcInfoItemNames!
// baseGcInfoItemNames!
...
@@ -115,7 +157,6 @@ public class GcInfoCompositeData extends LazyCompositeData {
...
@@ -115,7 +157,6 @@ public class GcInfoCompositeData extends LazyCompositeData {
}
}
}
}
private
static
final
String
ID
=
"id"
;
private
static
final
String
ID
=
"id"
;
private
static
final
String
START_TIME
=
"startTime"
;
private
static
final
String
START_TIME
=
"startTime"
;
private
static
final
String
END_TIME
=
"endTime"
;
private
static
final
String
END_TIME
=
"endTime"
;
...
@@ -231,7 +272,7 @@ public class GcInfoCompositeData extends LazyCompositeData {
...
@@ -231,7 +272,7 @@ public class GcInfoCompositeData extends LazyCompositeData {
// This is only used for validation.
// This is only used for validation.
private
static
CompositeType
baseGcInfoCompositeType
=
null
;
private
static
CompositeType
baseGcInfoCompositeType
=
null
;
private
static
synchronized
CompositeType
getBaseGcInfoCompositeType
()
{
static
synchronized
CompositeType
getBaseGcInfoCompositeType
()
{
if
(
baseGcInfoCompositeType
==
null
)
{
if
(
baseGcInfoCompositeType
==
null
)
{
try
{
try
{
baseGcInfoCompositeType
=
baseGcInfoCompositeType
=
...
...
src/share/classes/sun/management/MemoryManagerImpl.java
浏览文件 @
503c18aa
/*
/*
* Copyright (c) 2003, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
11
, 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
...
@@ -29,6 +29,7 @@ import java.lang.management.ManagementFactory;
...
@@ -29,6 +29,7 @@ import java.lang.management.ManagementFactory;
import
java.lang.management.MemoryManagerMXBean
;
import
java.lang.management.MemoryManagerMXBean
;
import
java.lang.management.MemoryPoolMXBean
;
import
java.lang.management.MemoryPoolMXBean
;
import
javax.management.MBeanNotificationInfo
;
import
javax.management.ObjectName
;
import
javax.management.ObjectName
;
/**
/**
...
@@ -38,7 +39,8 @@ import javax.management.ObjectName;
...
@@ -38,7 +39,8 @@ import javax.management.ObjectName;
* ManagementFactory.getMemoryManagerMXBeans() returns a list
* ManagementFactory.getMemoryManagerMXBeans() returns a list
* of instances of this class.
* of instances of this class.
*/
*/
class
MemoryManagerImpl
implements
MemoryManagerMXBean
{
class
MemoryManagerImpl
extends
NotificationEmitterSupport
implements
MemoryManagerMXBean
{
private
final
String
name
;
private
final
String
name
;
private
final
boolean
isValid
;
private
final
boolean
isValid
;
...
@@ -76,6 +78,16 @@ class MemoryManagerImpl implements MemoryManagerMXBean {
...
@@ -76,6 +78,16 @@ class MemoryManagerImpl implements MemoryManagerMXBean {
}
}
private
native
MemoryPoolMXBean
[]
getMemoryPools0
();
private
native
MemoryPoolMXBean
[]
getMemoryPools0
();
private
MBeanNotificationInfo
[]
notifInfo
=
null
;
public
MBeanNotificationInfo
[]
getNotificationInfo
()
{
synchronized
(
this
)
{
if
(
notifInfo
==
null
)
{
notifInfo
=
new
MBeanNotificationInfo
[
0
];
}
}
return
notifInfo
;
}
public
ObjectName
getObjectName
()
{
public
ObjectName
getObjectName
()
{
return
Util
.
newObjectName
(
ManagementFactory
.
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
,
getName
());
return
Util
.
newObjectName
(
ManagementFactory
.
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
,
getName
());
}
}
...
...
src/share/classes/sun/management/VMManagement.java
浏览文件 @
503c18aa
...
@@ -45,6 +45,7 @@ public interface VMManagement {
...
@@ -45,6 +45,7 @@ public interface VMManagement {
public
boolean
isSynchronizerUsageSupported
();
public
boolean
isSynchronizerUsageSupported
();
public
boolean
isThreadAllocatedMemorySupported
();
public
boolean
isThreadAllocatedMemorySupported
();
public
boolean
isThreadAllocatedMemoryEnabled
();
public
boolean
isThreadAllocatedMemoryEnabled
();
public
boolean
isGcNotificationSupported
();
// Class Loading Subsystem
// Class Loading Subsystem
public
long
getTotalClassCount
();
public
long
getTotalClassCount
();
...
...
src/share/classes/sun/management/VMManagementImpl.java
浏览文件 @
503c18aa
...
@@ -56,6 +56,8 @@ class VMManagementImpl implements VMManagement {
...
@@ -56,6 +56,8 @@ class VMManagementImpl implements VMManagement {
private
static
boolean
objectMonitorUsageSupport
;
private
static
boolean
objectMonitorUsageSupport
;
private
static
boolean
synchronizerUsageSupport
;
private
static
boolean
synchronizerUsageSupport
;
private
static
boolean
threadAllocatedMemorySupport
;
private
static
boolean
threadAllocatedMemorySupport
;
private
static
boolean
gcNotificationSupport
;
static
{
static
{
version
=
getVersion0
();
version
=
getVersion0
();
...
@@ -100,6 +102,10 @@ class VMManagementImpl implements VMManagement {
...
@@ -100,6 +102,10 @@ class VMManagementImpl implements VMManagement {
return
threadAllocatedMemorySupport
;
return
threadAllocatedMemorySupport
;
}
}
public
boolean
isGcNotificationSupported
()
{
return
gcNotificationSupport
;
}
public
native
boolean
isThreadContentionMonitoringEnabled
();
public
native
boolean
isThreadContentionMonitoringEnabled
();
public
native
boolean
isThreadCpuTimeEnabled
();
public
native
boolean
isThreadCpuTimeEnabled
();
public
native
boolean
isThreadAllocatedMemoryEnabled
();
public
native
boolean
isThreadAllocatedMemoryEnabled
();
...
...
src/share/classes/sun/nio/ch/AsynchronousServerSocketChannelImpl.java
浏览文件 @
503c18aa
...
@@ -28,7 +28,7 @@ package sun.nio.ch;
...
@@ -28,7 +28,7 @@ package sun.nio.ch;
import
java.nio.channels.*
;
import
java.nio.channels.*
;
import
java.net.SocketAddress
;
import
java.net.SocketAddress
;
import
java.net.SocketOption
;
import
java.net.SocketOption
;
import
java.net.StandardSocketOption
;
import
java.net.StandardSocketOption
s
;
import
java.net.InetSocketAddress
;
import
java.net.InetSocketAddress
;
import
java.io.FileDescriptor
;
import
java.io.FileDescriptor
;
import
java.io.IOException
;
import
java.io.IOException
;
...
@@ -214,8 +214,8 @@ abstract class AsynchronousServerSocketChannelImpl
...
@@ -214,8 +214,8 @@ abstract class AsynchronousServerSocketChannelImpl
private
static
Set
<
SocketOption
<?>>
defaultOptions
()
{
private
static
Set
<
SocketOption
<?>>
defaultOptions
()
{
HashSet
<
SocketOption
<?>>
set
=
new
HashSet
<
SocketOption
<?>>(
2
);
HashSet
<
SocketOption
<?>>
set
=
new
HashSet
<
SocketOption
<?>>(
2
);
set
.
add
(
StandardSocketOption
.
SO_RCVBUF
);
set
.
add
(
StandardSocketOption
s
.
SO_RCVBUF
);
set
.
add
(
StandardSocketOption
.
SO_REUSEADDR
);
set
.
add
(
StandardSocketOption
s
.
SO_REUSEADDR
);
return
Collections
.
unmodifiableSet
(
set
);
return
Collections
.
unmodifiableSet
(
set
);
}
}
}
}
...
...
src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java
浏览文件 @
503c18aa
...
@@ -28,7 +28,7 @@ package sun.nio.ch;
...
@@ -28,7 +28,7 @@ package sun.nio.ch;
import
java.nio.ByteBuffer
;
import
java.nio.ByteBuffer
;
import
java.nio.channels.*
;
import
java.nio.channels.*
;
import
java.net.SocketOption
;
import
java.net.SocketOption
;
import
java.net.StandardSocketOption
;
import
java.net.StandardSocketOption
s
;
import
java.net.SocketAddress
;
import
java.net.SocketAddress
;
import
java.net.InetSocketAddress
;
import
java.net.InetSocketAddress
;
import
java.io.IOException
;
import
java.io.IOException
;
...
@@ -483,11 +483,11 @@ abstract class AsynchronousSocketChannelImpl
...
@@ -483,11 +483,11 @@ abstract class AsynchronousSocketChannelImpl
private
static
Set
<
SocketOption
<?>>
defaultOptions
()
{
private
static
Set
<
SocketOption
<?>>
defaultOptions
()
{
HashSet
<
SocketOption
<?>>
set
=
new
HashSet
<
SocketOption
<?>>(
5
);
HashSet
<
SocketOption
<?>>
set
=
new
HashSet
<
SocketOption
<?>>(
5
);
set
.
add
(
StandardSocketOption
.
SO_SNDBUF
);
set
.
add
(
StandardSocketOption
s
.
SO_SNDBUF
);
set
.
add
(
StandardSocketOption
.
SO_RCVBUF
);
set
.
add
(
StandardSocketOption
s
.
SO_RCVBUF
);
set
.
add
(
StandardSocketOption
.
SO_KEEPALIVE
);
set
.
add
(
StandardSocketOption
s
.
SO_KEEPALIVE
);
set
.
add
(
StandardSocketOption
.
SO_REUSEADDR
);
set
.
add
(
StandardSocketOption
s
.
SO_REUSEADDR
);
set
.
add
(
StandardSocketOption
.
TCP_NODELAY
);
set
.
add
(
StandardSocketOption
s
.
TCP_NODELAY
);
return
Collections
.
unmodifiableSet
(
set
);
return
Collections
.
unmodifiableSet
(
set
);
}
}
}
}
...
...
src/share/classes/sun/nio/ch/DatagramChannelImpl.java
浏览文件 @
503c18aa
...
@@ -188,7 +188,7 @@ class DatagramChannelImpl
...
@@ -188,7 +188,7 @@ class DatagramChannelImpl
synchronized
(
stateLock
)
{
synchronized
(
stateLock
)
{
ensureOpen
();
ensureOpen
();
if
(
name
==
StandardSocketOption
.
IP_TOS
)
{
if
(
name
==
StandardSocketOption
s
.
IP_TOS
)
{
// IPv4 only; no-op for IPv6
// IPv4 only; no-op for IPv6
if
(
family
==
StandardProtocolFamily
.
INET
)
{
if
(
family
==
StandardProtocolFamily
.
INET
)
{
Net
.
setSocketOption
(
fd
,
family
,
name
,
value
);
Net
.
setSocketOption
(
fd
,
family
,
name
,
value
);
...
@@ -196,15 +196,15 @@ class DatagramChannelImpl
...
@@ -196,15 +196,15 @@ class DatagramChannelImpl
return
this
;
return
this
;
}
}
if
(
name
==
StandardSocketOption
.
IP_MULTICAST_TTL
||
if
(
name
==
StandardSocketOption
s
.
IP_MULTICAST_TTL
||
name
==
StandardSocketOption
.
IP_MULTICAST_LOOP
)
name
==
StandardSocketOption
s
.
IP_MULTICAST_LOOP
)
{
{
// options are protocol dependent
// options are protocol dependent
Net
.
setSocketOption
(
fd
,
family
,
name
,
value
);
Net
.
setSocketOption
(
fd
,
family
,
name
,
value
);
return
this
;
return
this
;
}
}
if
(
name
==
StandardSocketOption
.
IP_MULTICAST_IF
)
{
if
(
name
==
StandardSocketOption
s
.
IP_MULTICAST_IF
)
{
if
(
value
==
null
)
if
(
value
==
null
)
throw
new
IllegalArgumentException
(
"Cannot set IP_MULTICAST_IF to 'null'"
);
throw
new
IllegalArgumentException
(
"Cannot set IP_MULTICAST_IF to 'null'"
);
NetworkInterface
interf
=
(
NetworkInterface
)
value
;
NetworkInterface
interf
=
(
NetworkInterface
)
value
;
...
@@ -243,7 +243,7 @@ class DatagramChannelImpl
...
@@ -243,7 +243,7 @@ class DatagramChannelImpl
synchronized
(
stateLock
)
{
synchronized
(
stateLock
)
{
ensureOpen
();
ensureOpen
();
if
(
name
==
StandardSocketOption
.
IP_TOS
)
{
if
(
name
==
StandardSocketOption
s
.
IP_TOS
)
{
// IPv4 only; always return 0 on IPv6
// IPv4 only; always return 0 on IPv6
if
(
family
==
StandardProtocolFamily
.
INET
)
{
if
(
family
==
StandardProtocolFamily
.
INET
)
{
return
(
T
)
Net
.
getSocketOption
(
fd
,
family
,
name
);
return
(
T
)
Net
.
getSocketOption
(
fd
,
family
,
name
);
...
@@ -252,13 +252,13 @@ class DatagramChannelImpl
...
@@ -252,13 +252,13 @@ class DatagramChannelImpl
}
}
}
}
if
(
name
==
StandardSocketOption
.
IP_MULTICAST_TTL
||
if
(
name
==
StandardSocketOption
s
.
IP_MULTICAST_TTL
||
name
==
StandardSocketOption
.
IP_MULTICAST_LOOP
)
name
==
StandardSocketOption
s
.
IP_MULTICAST_LOOP
)
{
{
return
(
T
)
Net
.
getSocketOption
(
fd
,
family
,
name
);
return
(
T
)
Net
.
getSocketOption
(
fd
,
family
,
name
);
}
}
if
(
name
==
StandardSocketOption
.
IP_MULTICAST_IF
)
{
if
(
name
==
StandardSocketOption
s
.
IP_MULTICAST_IF
)
{
if
(
family
==
StandardProtocolFamily
.
INET
)
{
if
(
family
==
StandardProtocolFamily
.
INET
)
{
int
address
=
Net
.
getInterface4
(
fd
);
int
address
=
Net
.
getInterface4
(
fd
);
if
(
address
==
0
)
if
(
address
==
0
)
...
@@ -291,14 +291,14 @@ class DatagramChannelImpl
...
@@ -291,14 +291,14 @@ class DatagramChannelImpl
private
static
Set
<
SocketOption
<?>>
defaultOptions
()
{
private
static
Set
<
SocketOption
<?>>
defaultOptions
()
{
HashSet
<
SocketOption
<?>>
set
=
new
HashSet
<
SocketOption
<?>>(
8
);
HashSet
<
SocketOption
<?>>
set
=
new
HashSet
<
SocketOption
<?>>(
8
);
set
.
add
(
StandardSocketOption
.
SO_SNDBUF
);
set
.
add
(
StandardSocketOption
s
.
SO_SNDBUF
);
set
.
add
(
StandardSocketOption
.
SO_RCVBUF
);
set
.
add
(
StandardSocketOption
s
.
SO_RCVBUF
);
set
.
add
(
StandardSocketOption
.
SO_REUSEADDR
);
set
.
add
(
StandardSocketOption
s
.
SO_REUSEADDR
);
set
.
add
(
StandardSocketOption
.
SO_BROADCAST
);
set
.
add
(
StandardSocketOption
s
.
SO_BROADCAST
);
set
.
add
(
StandardSocketOption
.
IP_TOS
);
set
.
add
(
StandardSocketOption
s
.
IP_TOS
);
set
.
add
(
StandardSocketOption
.
IP_MULTICAST_IF
);
set
.
add
(
StandardSocketOption
s
.
IP_MULTICAST_IF
);
set
.
add
(
StandardSocketOption
.
IP_MULTICAST_TTL
);
set
.
add
(
StandardSocketOption
s
.
IP_MULTICAST_TTL
);
set
.
add
(
StandardSocketOption
.
IP_MULTICAST_LOOP
);
set
.
add
(
StandardSocketOption
s
.
IP_MULTICAST_LOOP
);
return
Collections
.
unmodifiableSet
(
set
);
return
Collections
.
unmodifiableSet
(
set
);
}
}
}
}
...
...
src/share/classes/sun/nio/ch/DatagramSocketAdaptor.java
浏览文件 @
503c18aa
...
@@ -312,46 +312,46 @@ public class DatagramSocketAdaptor
...
@@ -312,46 +312,46 @@ public class DatagramSocketAdaptor
public
void
setSendBufferSize
(
int
size
)
throws
SocketException
{
public
void
setSendBufferSize
(
int
size
)
throws
SocketException
{
if
(
size
<=
0
)
if
(
size
<=
0
)
throw
new
IllegalArgumentException
(
"Invalid send size"
);
throw
new
IllegalArgumentException
(
"Invalid send size"
);
setIntOption
(
StandardSocketOption
.
SO_SNDBUF
,
size
);
setIntOption
(
StandardSocketOption
s
.
SO_SNDBUF
,
size
);
}
}
public
int
getSendBufferSize
()
throws
SocketException
{
public
int
getSendBufferSize
()
throws
SocketException
{
return
getIntOption
(
StandardSocketOption
.
SO_SNDBUF
);
return
getIntOption
(
StandardSocketOption
s
.
SO_SNDBUF
);
}
}
public
void
setReceiveBufferSize
(
int
size
)
throws
SocketException
{
public
void
setReceiveBufferSize
(
int
size
)
throws
SocketException
{
if
(
size
<=
0
)
if
(
size
<=
0
)
throw
new
IllegalArgumentException
(
"Invalid receive size"
);
throw
new
IllegalArgumentException
(
"Invalid receive size"
);
setIntOption
(
StandardSocketOption
.
SO_RCVBUF
,
size
);
setIntOption
(
StandardSocketOption
s
.
SO_RCVBUF
,
size
);
}
}
public
int
getReceiveBufferSize
()
throws
SocketException
{
public
int
getReceiveBufferSize
()
throws
SocketException
{
return
getIntOption
(
StandardSocketOption
.
SO_RCVBUF
);
return
getIntOption
(
StandardSocketOption
s
.
SO_RCVBUF
);
}
}
public
void
setReuseAddress
(
boolean
on
)
throws
SocketException
{
public
void
setReuseAddress
(
boolean
on
)
throws
SocketException
{
setBooleanOption
(
StandardSocketOption
.
SO_REUSEADDR
,
on
);
setBooleanOption
(
StandardSocketOption
s
.
SO_REUSEADDR
,
on
);
}
}
public
boolean
getReuseAddress
()
throws
SocketException
{
public
boolean
getReuseAddress
()
throws
SocketException
{
return
getBooleanOption
(
StandardSocketOption
.
SO_REUSEADDR
);
return
getBooleanOption
(
StandardSocketOption
s
.
SO_REUSEADDR
);
}
}
public
void
setBroadcast
(
boolean
on
)
throws
SocketException
{
public
void
setBroadcast
(
boolean
on
)
throws
SocketException
{
setBooleanOption
(
StandardSocketOption
.
SO_BROADCAST
,
on
);
setBooleanOption
(
StandardSocketOption
s
.
SO_BROADCAST
,
on
);
}
}
public
boolean
getBroadcast
()
throws
SocketException
{
public
boolean
getBroadcast
()
throws
SocketException
{
return
getBooleanOption
(
StandardSocketOption
.
SO_BROADCAST
);
return
getBooleanOption
(
StandardSocketOption
s
.
SO_BROADCAST
);
}
}
public
void
setTrafficClass
(
int
tc
)
throws
SocketException
{
public
void
setTrafficClass
(
int
tc
)
throws
SocketException
{
setIntOption
(
StandardSocketOption
.
IP_TOS
,
tc
);
setIntOption
(
StandardSocketOption
s
.
IP_TOS
,
tc
);
}
}
public
int
getTrafficClass
()
throws
SocketException
{
public
int
getTrafficClass
()
throws
SocketException
{
return
getIntOption
(
StandardSocketOption
.
IP_TOS
);
return
getIntOption
(
StandardSocketOption
s
.
IP_TOS
);
}
}
public
void
close
()
{
public
void
close
()
{
...
...
src/share/classes/sun/nio/ch/ExtendedSocketOption.java
浏览文件 @
503c18aa
...
@@ -29,7 +29,7 @@ import java.net.SocketOption;
...
@@ -29,7 +29,7 @@ import java.net.SocketOption;
/**
/**
* Defines socket options that are supported by the implementation
* Defines socket options that are supported by the implementation
* but not defined in StandardSocketOption.
* but not defined in StandardSocketOption
s
.
*/
*/
class
ExtendedSocketOption
{
class
ExtendedSocketOption
{
...
...
src/share/classes/sun/nio/ch/NativeThreadSet.java
浏览文件 @
503c18aa
...
@@ -96,11 +96,16 @@ class NativeThreadSet {
...
@@ -96,11 +96,16 @@ class NativeThreadSet {
break
;
break
;
}
}
waitingToEmpty
=
true
;
waitingToEmpty
=
true
;
boolean
interrupted
=
false
;
while
(
used
>
0
)
{
while
(
used
>
0
)
{
try
{
try
{
wait
();
wait
();
}
catch
(
InterruptedException
ignore
)
{
}
}
catch
(
InterruptedException
e
)
{
interrupted
=
true
;
}
}
}
}
if
(
interrupted
)
Thread
.
currentThread
().
interrupt
();
}
}
}
}
}
src/share/classes/sun/nio/ch/Net.java
浏览文件 @
503c18aa
...
@@ -237,26 +237,26 @@ class Net { // package-private
...
@@ -237,26 +237,26 @@ class Net { // package-private
throw
new
AssertionError
(
"Should not reach here"
);
throw
new
AssertionError
(
"Should not reach here"
);
// special handling
// special handling
if
(
name
==
StandardSocketOption
.
SO_RCVBUF
||
if
(
name
==
StandardSocketOption
s
.
SO_RCVBUF
||
name
==
StandardSocketOption
.
SO_SNDBUF
)
name
==
StandardSocketOption
s
.
SO_SNDBUF
)
{
{
int
i
=
((
Integer
)
value
).
intValue
();
int
i
=
((
Integer
)
value
).
intValue
();
if
(
i
<
0
)
if
(
i
<
0
)
throw
new
IllegalArgumentException
(
"Invalid send/receive buffer size"
);
throw
new
IllegalArgumentException
(
"Invalid send/receive buffer size"
);
}
}
if
(
name
==
StandardSocketOption
.
SO_LINGER
)
{
if
(
name
==
StandardSocketOption
s
.
SO_LINGER
)
{
int
i
=
((
Integer
)
value
).
intValue
();
int
i
=
((
Integer
)
value
).
intValue
();
if
(
i
<
0
)
if
(
i
<
0
)
value
=
Integer
.
valueOf
(-
1
);
value
=
Integer
.
valueOf
(-
1
);
if
(
i
>
65535
)
if
(
i
>
65535
)
value
=
Integer
.
valueOf
(
65535
);
value
=
Integer
.
valueOf
(
65535
);
}
}
if
(
name
==
StandardSocketOption
.
IP_TOS
)
{
if
(
name
==
StandardSocketOption
s
.
IP_TOS
)
{
int
i
=
((
Integer
)
value
).
intValue
();
int
i
=
((
Integer
)
value
).
intValue
();
if
(
i
<
0
||
i
>
255
)
if
(
i
<
0
||
i
>
255
)
throw
new
IllegalArgumentException
(
"Invalid IP_TOS value"
);
throw
new
IllegalArgumentException
(
"Invalid IP_TOS value"
);
}
}
if
(
name
==
StandardSocketOption
.
IP_MULTICAST_TTL
)
{
if
(
name
==
StandardSocketOption
s
.
IP_MULTICAST_TTL
)
{
int
i
=
((
Integer
)
value
).
intValue
();
int
i
=
((
Integer
)
value
).
intValue
();
if
(
i
<
0
||
i
>
255
)
if
(
i
<
0
||
i
>
255
)
throw
new
IllegalArgumentException
(
"Invalid TTL/hop value"
);
throw
new
IllegalArgumentException
(
"Invalid TTL/hop value"
);
...
...
src/share/classes/sun/nio/ch/ServerSocketAdaptor.java
浏览文件 @
503c18aa
...
@@ -169,7 +169,7 @@ public class ServerSocketAdaptor // package-private
...
@@ -169,7 +169,7 @@ public class ServerSocketAdaptor // package-private
public
void
setReuseAddress
(
boolean
on
)
throws
SocketException
{
public
void
setReuseAddress
(
boolean
on
)
throws
SocketException
{
try
{
try
{
ssc
.
setOption
(
StandardSocketOption
.
SO_REUSEADDR
,
on
);
ssc
.
setOption
(
StandardSocketOption
s
.
SO_REUSEADDR
,
on
);
}
catch
(
IOException
x
)
{
}
catch
(
IOException
x
)
{
Net
.
translateToSocketException
(
x
);
Net
.
translateToSocketException
(
x
);
}
}
...
@@ -177,7 +177,7 @@ public class ServerSocketAdaptor // package-private
...
@@ -177,7 +177,7 @@ public class ServerSocketAdaptor // package-private
public
boolean
getReuseAddress
()
throws
SocketException
{
public
boolean
getReuseAddress
()
throws
SocketException
{
try
{
try
{
return
ssc
.
getOption
(
StandardSocketOption
.
SO_REUSEADDR
).
booleanValue
();
return
ssc
.
getOption
(
StandardSocketOption
s
.
SO_REUSEADDR
).
booleanValue
();
}
catch
(
IOException
x
)
{
}
catch
(
IOException
x
)
{
Net
.
translateToSocketException
(
x
);
Net
.
translateToSocketException
(
x
);
return
false
;
// Never happens
return
false
;
// Never happens
...
@@ -197,7 +197,7 @@ public class ServerSocketAdaptor // package-private
...
@@ -197,7 +197,7 @@ public class ServerSocketAdaptor // package-private
if
(
size
<=
0
)
if
(
size
<=
0
)
throw
new
IllegalArgumentException
(
"size cannot be 0 or negative"
);
throw
new
IllegalArgumentException
(
"size cannot be 0 or negative"
);
try
{
try
{
ssc
.
setOption
(
StandardSocketOption
.
SO_RCVBUF
,
size
);
ssc
.
setOption
(
StandardSocketOption
s
.
SO_RCVBUF
,
size
);
}
catch
(
IOException
x
)
{
}
catch
(
IOException
x
)
{
Net
.
translateToSocketException
(
x
);
Net
.
translateToSocketException
(
x
);
}
}
...
@@ -205,7 +205,7 @@ public class ServerSocketAdaptor // package-private
...
@@ -205,7 +205,7 @@ public class ServerSocketAdaptor // package-private
public
int
getReceiveBufferSize
()
throws
SocketException
{
public
int
getReceiveBufferSize
()
throws
SocketException
{
try
{
try
{
return
ssc
.
getOption
(
StandardSocketOption
.
SO_RCVBUF
).
intValue
();
return
ssc
.
getOption
(
StandardSocketOption
s
.
SO_RCVBUF
).
intValue
();
}
catch
(
IOException
x
)
{
}
catch
(
IOException
x
)
{
Net
.
translateToSocketException
(
x
);
Net
.
translateToSocketException
(
x
);
return
-
1
;
// Never happens
return
-
1
;
// Never happens
...
...
src/share/classes/sun/nio/ch/ServerSocketChannelImpl.java
浏览文件 @
503c18aa
...
@@ -160,8 +160,8 @@ class ServerSocketChannelImpl
...
@@ -160,8 +160,8 @@ class ServerSocketChannelImpl
private
static
Set
<
SocketOption
<?>>
defaultOptions
()
{
private
static
Set
<
SocketOption
<?>>
defaultOptions
()
{
HashSet
<
SocketOption
<?>>
set
=
new
HashSet
<
SocketOption
<?>>(
2
);
HashSet
<
SocketOption
<?>>
set
=
new
HashSet
<
SocketOption
<?>>(
2
);
set
.
add
(
StandardSocketOption
.
SO_RCVBUF
);
set
.
add
(
StandardSocketOption
s
.
SO_RCVBUF
);
set
.
add
(
StandardSocketOption
.
SO_REUSEADDR
);
set
.
add
(
StandardSocketOption
s
.
SO_REUSEADDR
);
return
Collections
.
unmodifiableSet
(
set
);
return
Collections
.
unmodifiableSet
(
set
);
}
}
}
}
...
...
src/share/classes/sun/nio/ch/SocketAdaptor.java
浏览文件 @
503c18aa
...
@@ -318,21 +318,21 @@ public class SocketAdaptor
...
@@ -318,21 +318,21 @@ public class SocketAdaptor
}
}
public
void
setTcpNoDelay
(
boolean
on
)
throws
SocketException
{
public
void
setTcpNoDelay
(
boolean
on
)
throws
SocketException
{
setBooleanOption
(
StandardSocketOption
.
TCP_NODELAY
,
on
);
setBooleanOption
(
StandardSocketOption
s
.
TCP_NODELAY
,
on
);
}
}
public
boolean
getTcpNoDelay
()
throws
SocketException
{
public
boolean
getTcpNoDelay
()
throws
SocketException
{
return
getBooleanOption
(
StandardSocketOption
.
TCP_NODELAY
);
return
getBooleanOption
(
StandardSocketOption
s
.
TCP_NODELAY
);
}
}
public
void
setSoLinger
(
boolean
on
,
int
linger
)
throws
SocketException
{
public
void
setSoLinger
(
boolean
on
,
int
linger
)
throws
SocketException
{
if
(!
on
)
if
(!
on
)
linger
=
-
1
;
linger
=
-
1
;
setIntOption
(
StandardSocketOption
.
SO_LINGER
,
linger
);
setIntOption
(
StandardSocketOption
s
.
SO_LINGER
,
linger
);
}
}
public
int
getSoLinger
()
throws
SocketException
{
public
int
getSoLinger
()
throws
SocketException
{
return
getIntOption
(
StandardSocketOption
.
SO_LINGER
);
return
getIntOption
(
StandardSocketOption
s
.
SO_LINGER
);
}
}
public
void
sendUrgentData
(
int
data
)
throws
IOException
{
public
void
sendUrgentData
(
int
data
)
throws
IOException
{
...
@@ -366,46 +366,46 @@ public class SocketAdaptor
...
@@ -366,46 +366,46 @@ public class SocketAdaptor
// size 0 valid for SocketChannel, invalid for Socket
// size 0 valid for SocketChannel, invalid for Socket
if
(
size
<=
0
)
if
(
size
<=
0
)
throw
new
IllegalArgumentException
(
"Invalid send size"
);
throw
new
IllegalArgumentException
(
"Invalid send size"
);
setIntOption
(
StandardSocketOption
.
SO_SNDBUF
,
size
);
setIntOption
(
StandardSocketOption
s
.
SO_SNDBUF
,
size
);
}
}
public
int
getSendBufferSize
()
throws
SocketException
{
public
int
getSendBufferSize
()
throws
SocketException
{
return
getIntOption
(
StandardSocketOption
.
SO_SNDBUF
);
return
getIntOption
(
StandardSocketOption
s
.
SO_SNDBUF
);
}
}
public
void
setReceiveBufferSize
(
int
size
)
throws
SocketException
{
public
void
setReceiveBufferSize
(
int
size
)
throws
SocketException
{
// size 0 valid for SocketChannel, invalid for Socket
// size 0 valid for SocketChannel, invalid for Socket
if
(
size
<=
0
)
if
(
size
<=
0
)
throw
new
IllegalArgumentException
(
"Invalid receive size"
);
throw
new
IllegalArgumentException
(
"Invalid receive size"
);
setIntOption
(
StandardSocketOption
.
SO_RCVBUF
,
size
);
setIntOption
(
StandardSocketOption
s
.
SO_RCVBUF
,
size
);
}
}
public
int
getReceiveBufferSize
()
throws
SocketException
{
public
int
getReceiveBufferSize
()
throws
SocketException
{
return
getIntOption
(
StandardSocketOption
.
SO_RCVBUF
);
return
getIntOption
(
StandardSocketOption
s
.
SO_RCVBUF
);
}
}
public
void
setKeepAlive
(
boolean
on
)
throws
SocketException
{
public
void
setKeepAlive
(
boolean
on
)
throws
SocketException
{
setBooleanOption
(
StandardSocketOption
.
SO_KEEPALIVE
,
on
);
setBooleanOption
(
StandardSocketOption
s
.
SO_KEEPALIVE
,
on
);
}
}
public
boolean
getKeepAlive
()
throws
SocketException
{
public
boolean
getKeepAlive
()
throws
SocketException
{
return
getBooleanOption
(
StandardSocketOption
.
SO_KEEPALIVE
);
return
getBooleanOption
(
StandardSocketOption
s
.
SO_KEEPALIVE
);
}
}
public
void
setTrafficClass
(
int
tc
)
throws
SocketException
{
public
void
setTrafficClass
(
int
tc
)
throws
SocketException
{
setIntOption
(
StandardSocketOption
.
IP_TOS
,
tc
);
setIntOption
(
StandardSocketOption
s
.
IP_TOS
,
tc
);
}
}
public
int
getTrafficClass
()
throws
SocketException
{
public
int
getTrafficClass
()
throws
SocketException
{
return
getIntOption
(
StandardSocketOption
.
IP_TOS
);
return
getIntOption
(
StandardSocketOption
s
.
IP_TOS
);
}
}
public
void
setReuseAddress
(
boolean
on
)
throws
SocketException
{
public
void
setReuseAddress
(
boolean
on
)
throws
SocketException
{
setBooleanOption
(
StandardSocketOption
.
SO_REUSEADDR
,
on
);
setBooleanOption
(
StandardSocketOption
s
.
SO_REUSEADDR
,
on
);
}
}
public
boolean
getReuseAddress
()
throws
SocketException
{
public
boolean
getReuseAddress
()
throws
SocketException
{
return
getBooleanOption
(
StandardSocketOption
.
SO_REUSEADDR
);
return
getBooleanOption
(
StandardSocketOption
s
.
SO_REUSEADDR
);
}
}
public
void
close
()
throws
IOException
{
public
void
close
()
throws
IOException
{
...
...
src/share/classes/sun/nio/ch/SocketChannelImpl.java
浏览文件 @
503c18aa
...
@@ -170,7 +170,7 @@ class SocketChannelImpl
...
@@ -170,7 +170,7 @@ class SocketChannelImpl
throw
new
ClosedChannelException
();
throw
new
ClosedChannelException
();
// special handling for IP_TOS: no-op when IPv6
// special handling for IP_TOS: no-op when IPv6
if
(
name
==
StandardSocketOption
.
IP_TOS
)
{
if
(
name
==
StandardSocketOption
s
.
IP_TOS
)
{
if
(!
Net
.
isIPv6Available
())
if
(!
Net
.
isIPv6Available
())
Net
.
setSocketOption
(
fd
,
StandardProtocolFamily
.
INET
,
name
,
value
);
Net
.
setSocketOption
(
fd
,
StandardProtocolFamily
.
INET
,
name
,
value
);
return
this
;
return
this
;
...
@@ -197,7 +197,7 @@ class SocketChannelImpl
...
@@ -197,7 +197,7 @@ class SocketChannelImpl
throw
new
ClosedChannelException
();
throw
new
ClosedChannelException
();
// special handling for IP_TOS: always return 0 when IPv6
// special handling for IP_TOS: always return 0 when IPv6
if
(
name
==
StandardSocketOption
.
IP_TOS
)
{
if
(
name
==
StandardSocketOption
s
.
IP_TOS
)
{
return
(
Net
.
isIPv6Available
())
?
(
T
)
Integer
.
valueOf
(
0
)
:
return
(
Net
.
isIPv6Available
())
?
(
T
)
Integer
.
valueOf
(
0
)
:
(
T
)
Net
.
getSocketOption
(
fd
,
StandardProtocolFamily
.
INET
,
name
);
(
T
)
Net
.
getSocketOption
(
fd
,
StandardProtocolFamily
.
INET
,
name
);
}
}
...
@@ -212,14 +212,14 @@ class SocketChannelImpl
...
@@ -212,14 +212,14 @@ class SocketChannelImpl
private
static
Set
<
SocketOption
<?>>
defaultOptions
()
{
private
static
Set
<
SocketOption
<?>>
defaultOptions
()
{
HashSet
<
SocketOption
<?>>
set
=
new
HashSet
<
SocketOption
<?>>(
8
);
HashSet
<
SocketOption
<?>>
set
=
new
HashSet
<
SocketOption
<?>>(
8
);
set
.
add
(
StandardSocketOption
.
SO_SNDBUF
);
set
.
add
(
StandardSocketOption
s
.
SO_SNDBUF
);
set
.
add
(
StandardSocketOption
.
SO_RCVBUF
);
set
.
add
(
StandardSocketOption
s
.
SO_RCVBUF
);
set
.
add
(
StandardSocketOption
.
SO_KEEPALIVE
);
set
.
add
(
StandardSocketOption
s
.
SO_KEEPALIVE
);
set
.
add
(
StandardSocketOption
.
SO_REUSEADDR
);
set
.
add
(
StandardSocketOption
s
.
SO_REUSEADDR
);
set
.
add
(
StandardSocketOption
.
SO_LINGER
);
set
.
add
(
StandardSocketOption
s
.
SO_LINGER
);
set
.
add
(
StandardSocketOption
.
TCP_NODELAY
);
set
.
add
(
StandardSocketOption
s
.
TCP_NODELAY
);
// additional options required by socket adaptor
// additional options required by socket adaptor
set
.
add
(
StandardSocketOption
.
IP_TOS
);
set
.
add
(
StandardSocketOption
s
.
IP_TOS
);
set
.
add
(
ExtendedSocketOption
.
SO_OOBINLINE
);
set
.
add
(
ExtendedSocketOption
.
SO_OOBINLINE
);
return
Collections
.
unmodifiableSet
(
set
);
return
Collections
.
unmodifiableSet
(
set
);
}
}
...
...
src/share/classes/sun/nio/fs/AbstractPoller.java
浏览文件 @
503c18aa
...
@@ -105,16 +105,16 @@ abstract class AbstractPoller implements Runnable {
...
@@ -105,16 +105,16 @@ abstract class AbstractPoller implements Runnable {
Set
<
WatchEvent
.
Kind
<?>>
eventSet
=
new
HashSet
<>(
events
.
length
);
Set
<
WatchEvent
.
Kind
<?>>
eventSet
=
new
HashSet
<>(
events
.
length
);
for
(
WatchEvent
.
Kind
<?>
event:
events
)
{
for
(
WatchEvent
.
Kind
<?>
event:
events
)
{
// standard events
// standard events
if
(
event
==
StandardWatchEventKind
.
ENTRY_CREATE
||
if
(
event
==
StandardWatchEventKind
s
.
ENTRY_CREATE
||
event
==
StandardWatchEventKind
.
ENTRY_MODIFY
||
event
==
StandardWatchEventKind
s
.
ENTRY_MODIFY
||
event
==
StandardWatchEventKind
.
ENTRY_DELETE
)
event
==
StandardWatchEventKind
s
.
ENTRY_DELETE
)
{
{
eventSet
.
add
(
event
);
eventSet
.
add
(
event
);
continue
;
continue
;
}
}
// OVERFLOW is ignored
// OVERFLOW is ignored
if
(
event
==
StandardWatchEventKind
.
OVERFLOW
)
{
if
(
event
==
StandardWatchEventKind
s
.
OVERFLOW
)
{
if
(
events
.
length
==
1
)
if
(
events
.
length
==
1
)
throw
new
IllegalArgumentException
(
"No events to register"
);
throw
new
IllegalArgumentException
(
"No events to register"
);
continue
;
continue
;
...
...
src/share/classes/sun/nio/fs/AbstractWatchKey.java
浏览文件 @
503c18aa
...
@@ -42,8 +42,8 @@ abstract class AbstractWatchKey implements WatchKey {
...
@@ -42,8 +42,8 @@ abstract class AbstractWatchKey implements WatchKey {
/**
/**
* Special event to signal overflow
* Special event to signal overflow
*/
*/
static
final
Event
<
Void
>
OVERFLOW_EVENT
=
static
final
Event
<
Object
>
OVERFLOW_EVENT
=
new
Event
<
Void
>(
StandardWatchEventKind
.
OVERFLOW
,
null
);
new
Event
<
Object
>(
StandardWatchEventKinds
.
OVERFLOW
,
null
);
/**
/**
* Possible key states
* Possible key states
...
@@ -103,14 +103,14 @@ abstract class AbstractWatchKey implements WatchKey {
...
@@ -103,14 +103,14 @@ abstract class AbstractWatchKey implements WatchKey {
*/
*/
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
final
void
signalEvent
(
WatchEvent
.
Kind
<?>
kind
,
Object
context
)
{
final
void
signalEvent
(
WatchEvent
.
Kind
<?>
kind
,
Object
context
)
{
boolean
isModify
=
(
kind
==
StandardWatchEventKind
.
ENTRY_MODIFY
);
boolean
isModify
=
(
kind
==
StandardWatchEventKind
s
.
ENTRY_MODIFY
);
synchronized
(
this
)
{
synchronized
(
this
)
{
int
size
=
events
.
size
();
int
size
=
events
.
size
();
if
(
size
>
0
)
{
if
(
size
>
0
)
{
// if the previous event is an OVERFLOW event or this is a
// if the previous event is an OVERFLOW event or this is a
// repeated event then we simply increment the counter
// repeated event then we simply increment the counter
WatchEvent
<?>
prev
=
events
.
get
(
size
-
1
);
WatchEvent
<?>
prev
=
events
.
get
(
size
-
1
);
if
((
prev
.
kind
()
==
StandardWatchEventKind
.
OVERFLOW
)
||
if
((
prev
.
kind
()
==
StandardWatchEventKind
s
.
OVERFLOW
)
||
((
kind
==
prev
.
kind
()
&&
((
kind
==
prev
.
kind
()
&&
Objects
.
equals
(
context
,
prev
.
context
()))))
Objects
.
equals
(
context
,
prev
.
context
()))))
{
{
...
@@ -124,7 +124,7 @@ abstract class AbstractWatchKey implements WatchKey {
...
@@ -124,7 +124,7 @@ abstract class AbstractWatchKey implements WatchKey {
if
(
isModify
)
{
if
(
isModify
)
{
WatchEvent
<?>
ev
=
lastModifyEvents
.
get
(
context
);
WatchEvent
<?>
ev
=
lastModifyEvents
.
get
(
context
);
if
(
ev
!=
null
)
{
if
(
ev
!=
null
)
{
assert
ev
.
kind
()
==
StandardWatchEventKind
.
ENTRY_MODIFY
;
assert
ev
.
kind
()
==
StandardWatchEventKind
s
.
ENTRY_MODIFY
;
((
Event
<?>)
ev
).
increment
();
((
Event
<?>)
ev
).
increment
();
return
;
return
;
}
}
...
@@ -138,7 +138,7 @@ abstract class AbstractWatchKey implements WatchKey {
...
@@ -138,7 +138,7 @@ abstract class AbstractWatchKey implements WatchKey {
// if the list has reached the limit then drop pending events
// if the list has reached the limit then drop pending events
// and queue an OVERFLOW event
// and queue an OVERFLOW event
if
(
size
>=
MAX_EVENT_LIST_SIZE
)
{
if
(
size
>=
MAX_EVENT_LIST_SIZE
)
{
kind
=
StandardWatchEventKind
.
OVERFLOW
;
kind
=
StandardWatchEventKind
s
.
OVERFLOW
;
isModify
=
false
;
isModify
=
false
;
context
=
null
;
context
=
null
;
}
}
...
@@ -149,7 +149,7 @@ abstract class AbstractWatchKey implements WatchKey {
...
@@ -149,7 +149,7 @@ abstract class AbstractWatchKey implements WatchKey {
new
Event
<
Object
>((
WatchEvent
.
Kind
<
Object
>)
kind
,
context
);
new
Event
<
Object
>((
WatchEvent
.
Kind
<
Object
>)
kind
,
context
);
if
(
isModify
)
{
if
(
isModify
)
{
lastModifyEvents
.
put
(
context
,
ev
);
lastModifyEvents
.
put
(
context
,
ev
);
}
else
if
(
kind
==
StandardWatchEventKind
.
OVERFLOW
)
{
}
else
if
(
kind
==
StandardWatchEventKind
s
.
OVERFLOW
)
{
// drop all pending events
// drop all pending events
events
.
clear
();
events
.
clear
();
lastModifyEvents
.
clear
();
lastModifyEvents
.
clear
();
...
...
src/share/classes/sun/nio/fs/PollingWatchService.java
浏览文件 @
503c18aa
...
@@ -80,16 +80,16 @@ class PollingWatchService
...
@@ -80,16 +80,16 @@ class PollingWatchService
new
HashSet
<
WatchEvent
.
Kind
<?>>(
events
.
length
);
new
HashSet
<
WatchEvent
.
Kind
<?>>(
events
.
length
);
for
(
WatchEvent
.
Kind
<?>
event:
events
)
{
for
(
WatchEvent
.
Kind
<?>
event:
events
)
{
// standard events
// standard events
if
(
event
==
StandardWatchEventKind
.
ENTRY_CREATE
||
if
(
event
==
StandardWatchEventKind
s
.
ENTRY_CREATE
||
event
==
StandardWatchEventKind
.
ENTRY_MODIFY
||
event
==
StandardWatchEventKind
s
.
ENTRY_MODIFY
||
event
==
StandardWatchEventKind
.
ENTRY_DELETE
)
event
==
StandardWatchEventKind
s
.
ENTRY_DELETE
)
{
{
eventSet
.
add
(
event
);
eventSet
.
add
(
event
);
continue
;
continue
;
}
}
// OVERFLOW is ignored
// OVERFLOW is ignored
if
(
event
==
StandardWatchEventKind
.
OVERFLOW
)
{
if
(
event
==
StandardWatchEventKind
s
.
OVERFLOW
)
{
if
(
events
.
length
==
1
)
if
(
events
.
length
==
1
)
throw
new
IllegalArgumentException
(
"No events to register"
);
throw
new
IllegalArgumentException
(
"No events to register"
);
continue
;
continue
;
...
@@ -355,16 +355,16 @@ class PollingWatchService
...
@@ -355,16 +355,16 @@ class PollingWatchService
new
CacheEntry
(
lastModified
,
tickCount
));
new
CacheEntry
(
lastModified
,
tickCount
));
// queue ENTRY_CREATE if event enabled
// queue ENTRY_CREATE if event enabled
if
(
events
.
contains
(
StandardWatchEventKind
.
ENTRY_CREATE
))
{
if
(
events
.
contains
(
StandardWatchEventKind
s
.
ENTRY_CREATE
))
{
signalEvent
(
StandardWatchEventKind
.
ENTRY_CREATE
,
entry
.
getFileName
());
signalEvent
(
StandardWatchEventKind
s
.
ENTRY_CREATE
,
entry
.
getFileName
());
continue
;
continue
;
}
else
{
}
else
{
// if ENTRY_CREATE is not enabled and ENTRY_MODIFY is
// if ENTRY_CREATE is not enabled and ENTRY_MODIFY is
// enabled then queue event to avoid missing out on
// enabled then queue event to avoid missing out on
// modifications to the file immediately after it is
// modifications to the file immediately after it is
// created.
// created.
if
(
events
.
contains
(
StandardWatchEventKind
.
ENTRY_MODIFY
))
{
if
(
events
.
contains
(
StandardWatchEventKind
s
.
ENTRY_MODIFY
))
{
signalEvent
(
StandardWatchEventKind
.
ENTRY_MODIFY
,
entry
.
getFileName
());
signalEvent
(
StandardWatchEventKind
s
.
ENTRY_MODIFY
,
entry
.
getFileName
());
}
}
}
}
continue
;
continue
;
...
@@ -372,8 +372,8 @@ class PollingWatchService
...
@@ -372,8 +372,8 @@ class PollingWatchService
// check if file has changed
// check if file has changed
if
(
e
.
lastModified
!=
lastModified
)
{
if
(
e
.
lastModified
!=
lastModified
)
{
if
(
events
.
contains
(
StandardWatchEventKind
.
ENTRY_MODIFY
))
{
if
(
events
.
contains
(
StandardWatchEventKind
s
.
ENTRY_MODIFY
))
{
signalEvent
(
StandardWatchEventKind
.
ENTRY_MODIFY
,
signalEvent
(
StandardWatchEventKind
s
.
ENTRY_MODIFY
,
entry
.
getFileName
());
entry
.
getFileName
());
}
}
}
}
...
@@ -403,8 +403,8 @@ class PollingWatchService
...
@@ -403,8 +403,8 @@ class PollingWatchService
Path
name
=
mapEntry
.
getKey
();
Path
name
=
mapEntry
.
getKey
();
// remove from map and queue delete event (if enabled)
// remove from map and queue delete event (if enabled)
i
.
remove
();
i
.
remove
();
if
(
events
.
contains
(
StandardWatchEventKind
.
ENTRY_DELETE
))
{
if
(
events
.
contains
(
StandardWatchEventKind
s
.
ENTRY_DELETE
))
{
signalEvent
(
StandardWatchEventKind
.
ENTRY_DELETE
,
name
);
signalEvent
(
StandardWatchEventKind
s
.
ENTRY_DELETE
,
name
);
}
}
}
}
}
}
...
...
src/share/classes/sun/security/jgss/spi/GSSContextSpi.java
浏览文件 @
503c18aa
...
@@ -24,22 +24,10 @@
...
@@ -24,22 +24,10 @@
*/
*/
/*
/*
* ===========================================================================
* IBM Confidential
* OCO Source Materials
* Licensed Materials - Property of IBM
*
*
* (C) Copyright IBM Corp. 1999 All Rights Reserved.
* (C) Copyright IBM Corp. 1999 All Rights Reserved.
*
* The source code for this program is not published or otherwise divested of
* its trade secrets, irrespective of what has been deposited with the U.S.
* Copyright Office.
*
* Copyright 1997 The Open Group Research Institute. All rights reserved.
* Copyright 1997 The Open Group Research Institute. All rights reserved.
* ===========================================================================
*
*/
*/
package
sun.security.jgss.spi
;
package
sun.security.jgss.spi
;
import
org.ietf.jgss.*
;
import
org.ietf.jgss.*
;
...
...
src/share/classes/sun/security/ssl/JsseJce.java
浏览文件 @
503c18aa
...
@@ -62,7 +62,7 @@ final class JsseJce {
...
@@ -62,7 +62,7 @@ final class JsseJce {
// Flag indicating whether EC crypto is available.
// Flag indicating whether EC crypto is available.
// If null, then we have not checked yet.
// If null, then we have not checked yet.
// If yes, then all the EC based crypto we need is available.
// If yes, then all the EC based crypto we need is available.
private
static
volatile
Boolean
ecAvailable
;
private
static
Boolean
ecAvailable
;
// Flag indicating whether Kerberos crypto is available.
// Flag indicating whether Kerberos crypto is available.
// If true, then all the Kerberos-based crypto we need is available.
// If true, then all the Kerberos-based crypto we need is available.
...
@@ -190,7 +190,7 @@ final class JsseJce {
...
@@ -190,7 +190,7 @@ final class JsseJce {
// no instantiation of this class
// no instantiation of this class
}
}
static
boolean
isEcAvailable
()
{
s
ynchronized
s
tatic
boolean
isEcAvailable
()
{
if
(
ecAvailable
==
null
)
{
if
(
ecAvailable
==
null
)
{
try
{
try
{
JsseJce
.
getSignature
(
SIGNATURE_ECDSA
);
JsseJce
.
getSignature
(
SIGNATURE_ECDSA
);
...
@@ -206,7 +206,7 @@ final class JsseJce {
...
@@ -206,7 +206,7 @@ final class JsseJce {
return
ecAvailable
;
return
ecAvailable
;
}
}
static
void
clearEcAvailable
()
{
s
ynchronized
s
tatic
void
clearEcAvailable
()
{
ecAvailable
=
null
;
ecAvailable
=
null
;
}
}
...
...
src/share/classes/sun/text/resources/BreakIteratorRules_th.java
浏览文件 @
503c18aa
...
@@ -27,17 +27,7 @@
...
@@ -27,17 +27,7 @@
*/
*/
/*
/*
* IBM Confidential
* (C) Copyright IBM Corp. 1999 All Rights Reserved.
* OCO Source Materials
*
* IBM Java(tm)2 SDK, Standard Edition, v 1.2
*
* (C) Copyright IBM Corp. 1999
*
* The source code for this program is not published or otherwise divested of
* its trade secrets, irrespective of what has been deposited with the U.S.
* Copyright office.
*
*/
*/
/*
/*
...
...
src/share/javavm/export/jmm.h
浏览文件 @
503c18aa
...
@@ -48,7 +48,7 @@ enum {
...
@@ -48,7 +48,7 @@ enum {
JMM_VERSION_1_0
=
0x20010000
,
JMM_VERSION_1_0
=
0x20010000
,
JMM_VERSION_1_1
=
0x20010100
,
// JDK 6
JMM_VERSION_1_1
=
0x20010100
,
// JDK 6
JMM_VERSION_1_2
=
0x20010200
,
// JDK 7
JMM_VERSION_1_2
=
0x20010200
,
// JDK 7
JMM_VERSION
=
0x2001020
0
JMM_VERSION
=
0x2001020
1
};
};
typedef
struct
{
typedef
struct
{
...
@@ -293,6 +293,9 @@ typedef struct jmmInterface_1_ {
...
@@ -293,6 +293,9 @@ typedef struct jmmInterface_1_ {
jlongArray
ids
,
jlongArray
ids
,
jboolean
lockedMonitors
,
jboolean
lockedMonitors
,
jboolean
lockedSynchronizers
);
jboolean
lockedSynchronizers
);
void
(
JNICALL
*
SetGCNotificationEnabled
)
(
JNIEnv
*
env
,
jobject
mgr
,
jboolean
enabled
);
}
JmmInterface
;
}
JmmInterface
;
#ifdef __cplusplus
#ifdef __cplusplus
...
...
src/share/native/sun/management/GarbageCollectorImpl.c
浏览文件 @
503c18aa
/*
/*
* Copyright (c) 2003, 20
04
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
11
, 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
...
@@ -36,3 +36,17 @@ JNIEXPORT jlong JNICALL Java_sun_management_GarbageCollectorImpl_getCollectionTi
...
@@ -36,3 +36,17 @@ JNIEXPORT jlong JNICALL Java_sun_management_GarbageCollectorImpl_getCollectionTi
(
JNIEnv
*
env
,
jobject
mgr
)
{
(
JNIEnv
*
env
,
jobject
mgr
)
{
return
jmm_interface
->
GetLongAttribute
(
env
,
mgr
,
JMM_GC_TIME_MS
);
return
jmm_interface
->
GetLongAttribute
(
env
,
mgr
,
JMM_GC_TIME_MS
);
}
}
JNIEXPORT
void
JNICALL
Java_sun_management_GarbageCollectorImpl_setNotificationEnabled
(
JNIEnv
*
env
,
jobject
dummy
,
jobject
gc
,
jboolean
enabled
)
{
if
(
gc
==
NULL
)
{
JNU_ThrowNullPointerException
(
env
,
"Invalid GarbageCollectorMBean"
);
return
;
}
if
((
jmm_version
>
JMM_VERSION_1_2
)
||
(
jmm_version
==
JMM_VERSION_1_2
&&
((
jmm_version
&
0xFF
)
>=
1
)))
{
jmm_interface
->
SetGCNotificationEnabled
(
env
,
gc
,
enabled
);
}
}
src/share/native/sun/management/VMManagementImpl.c
浏览文件 @
503c18aa
...
@@ -95,6 +95,13 @@ Java_sun_management_VMManagementImpl_initOptionalSupportFields
...
@@ -95,6 +95,13 @@ Java_sun_management_VMManagementImpl_initOptionalSupportFields
value
=
mos
.
isThreadAllocatedMemorySupported
;
value
=
mos
.
isThreadAllocatedMemorySupported
;
setStaticBooleanField
(
env
,
cls
,
"threadAllocatedMemorySupport"
,
value
);
setStaticBooleanField
(
env
,
cls
,
"threadAllocatedMemorySupport"
,
value
);
if
((
jmm_version
>
JMM_VERSION_1_2
)
||
(
jmm_version
==
JMM_VERSION_1_2
&&
((
jmm_version
&
0xFF
)
>=
1
)))
{
setStaticBooleanField
(
env
,
cls
,
"gcNotificationSupport"
,
JNI_TRUE
);
}
else
{
setStaticBooleanField
(
env
,
cls
,
"gcNotificationSupport"
,
JNI_FALSE
);
}
}
}
JNIEXPORT
jobjectArray
JNICALL
JNIEXPORT
jobjectArray
JNICALL
...
...
src/share/native/sun/nio/ch/genSocketOptionRegistry.c
浏览文件 @
503c18aa
...
@@ -63,7 +63,7 @@ int main(int argc, const char* argv[]) {
...
@@ -63,7 +63,7 @@ int main(int argc, const char* argv[]) {
out
(
"// AUTOMATICALLY GENERATED FILE - DO NOT EDIT "
);
out
(
"// AUTOMATICALLY GENERATED FILE - DO NOT EDIT "
);
out
(
"package sun.nio.ch; "
);
out
(
"package sun.nio.ch; "
);
out
(
"import java.net.SocketOption; "
);
out
(
"import java.net.SocketOption; "
);
out
(
"import java.net.StandardSocketOption
;
"
);
out
(
"import java.net.StandardSocketOption
s;
"
);
out
(
"import java.net.ProtocolFamily; "
);
out
(
"import java.net.ProtocolFamily; "
);
out
(
"import java.net.StandardProtocolFamily; "
);
out
(
"import java.net.StandardProtocolFamily; "
);
out
(
"import java.util.Map; "
);
out
(
"import java.util.Map; "
);
...
@@ -95,23 +95,23 @@ int main(int argc, const char* argv[]) {
...
@@ -95,23 +95,23 @@ int main(int argc, const char* argv[]) {
out
(
" Map<RegistryKey,OptionKey> map = "
);
out
(
" Map<RegistryKey,OptionKey> map = "
);
out
(
" new HashMap<RegistryKey,OptionKey>(); "
);
out
(
" new HashMap<RegistryKey,OptionKey>(); "
);
emit_unspec
(
"StandardSocketOption.SO_BROADCAST"
,
SOL_SOCKET
,
SO_BROADCAST
);
emit_unspec
(
"StandardSocketOption
s
.SO_BROADCAST"
,
SOL_SOCKET
,
SO_BROADCAST
);
emit_unspec
(
"StandardSocketOption.SO_KEEPALIVE"
,
SOL_SOCKET
,
SO_KEEPALIVE
);
emit_unspec
(
"StandardSocketOption
s
.SO_KEEPALIVE"
,
SOL_SOCKET
,
SO_KEEPALIVE
);
emit_unspec
(
"StandardSocketOption.SO_LINGER"
,
SOL_SOCKET
,
SO_LINGER
);
emit_unspec
(
"StandardSocketOption
s
.SO_LINGER"
,
SOL_SOCKET
,
SO_LINGER
);
emit_unspec
(
"StandardSocketOption.SO_SNDBUF"
,
SOL_SOCKET
,
SO_SNDBUF
);
emit_unspec
(
"StandardSocketOption
s
.SO_SNDBUF"
,
SOL_SOCKET
,
SO_SNDBUF
);
emit_unspec
(
"StandardSocketOption.SO_RCVBUF"
,
SOL_SOCKET
,
SO_RCVBUF
);
emit_unspec
(
"StandardSocketOption
s
.SO_RCVBUF"
,
SOL_SOCKET
,
SO_RCVBUF
);
emit_unspec
(
"StandardSocketOption.SO_REUSEADDR"
,
SOL_SOCKET
,
SO_REUSEADDR
);
emit_unspec
(
"StandardSocketOption
s
.SO_REUSEADDR"
,
SOL_SOCKET
,
SO_REUSEADDR
);
emit_unspec
(
"StandardSocketOption.TCP_NODELAY"
,
IPPROTO_TCP
,
TCP_NODELAY
);
emit_unspec
(
"StandardSocketOption
s
.TCP_NODELAY"
,
IPPROTO_TCP
,
TCP_NODELAY
);
emit_inet
(
"StandardSocketOption.IP_TOS"
,
IPPROTO_IP
,
IP_TOS
);
emit_inet
(
"StandardSocketOption
s
.IP_TOS"
,
IPPROTO_IP
,
IP_TOS
);
emit_inet
(
"StandardSocketOption.IP_MULTICAST_IF"
,
IPPROTO_IP
,
IP_MULTICAST_IF
);
emit_inet
(
"StandardSocketOption
s
.IP_MULTICAST_IF"
,
IPPROTO_IP
,
IP_MULTICAST_IF
);
emit_inet
(
"StandardSocketOption.IP_MULTICAST_TTL"
,
IPPROTO_IP
,
IP_MULTICAST_TTL
);
emit_inet
(
"StandardSocketOption
s
.IP_MULTICAST_TTL"
,
IPPROTO_IP
,
IP_MULTICAST_TTL
);
emit_inet
(
"StandardSocketOption.IP_MULTICAST_LOOP"
,
IPPROTO_IP
,
IP_MULTICAST_LOOP
);
emit_inet
(
"StandardSocketOption
s
.IP_MULTICAST_LOOP"
,
IPPROTO_IP
,
IP_MULTICAST_LOOP
);
#ifdef AF_INET6
#ifdef AF_INET6
emit_inet6
(
"StandardSocketOption.IP_MULTICAST_IF"
,
IPPROTO_IPV6
,
IPV6_MULTICAST_IF
);
emit_inet6
(
"StandardSocketOption
s
.IP_MULTICAST_IF"
,
IPPROTO_IPV6
,
IPV6_MULTICAST_IF
);
emit_inet6
(
"StandardSocketOption.IP_MULTICAST_TTL"
,
IPPROTO_IPV6
,
IPV6_MULTICAST_HOPS
);
emit_inet6
(
"StandardSocketOption
s
.IP_MULTICAST_TTL"
,
IPPROTO_IPV6
,
IPV6_MULTICAST_HOPS
);
emit_inet6
(
"StandardSocketOption.IP_MULTICAST_LOOP"
,
IPPROTO_IPV6
,
IPV6_MULTICAST_LOOP
);
emit_inet6
(
"StandardSocketOption
s
.IP_MULTICAST_LOOP"
,
IPPROTO_IPV6
,
IPV6_MULTICAST_LOOP
);
#endif
#endif
emit_unspec
(
"ExtendedSocketOption.SO_OOBINLINE"
,
SOL_SOCKET
,
SO_OOBINLINE
);
emit_unspec
(
"ExtendedSocketOption.SO_OOBINLINE"
,
SOL_SOCKET
,
SO_OOBINLINE
);
...
...
src/share/sample/nio/chatserver/ChatServer.java
浏览文件 @
503c18aa
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
import
java.io.IOException
;
import
java.io.IOException
;
import
java.net.InetSocketAddress
;
import
java.net.InetSocketAddress
;
import
java.net.SocketAddress
;
import
java.net.SocketAddress
;
import
java.net.StandardSocketOption
;
import
java.net.StandardSocketOption
s
;
import
java.nio.channels.*
;
import
java.nio.channels.*
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Executors
;
...
@@ -105,7 +105,7 @@ public class ChatServer implements Runnable {
...
@@ -105,7 +105,7 @@ public class ChatServer implements Runnable {
*/
*/
private
AsynchronousServerSocketChannel
createListener
(
AsynchronousChannelGroup
channelGroup
)
throws
IOException
{
private
AsynchronousServerSocketChannel
createListener
(
AsynchronousChannelGroup
channelGroup
)
throws
IOException
{
final
AsynchronousServerSocketChannel
listener
=
openChannel
(
channelGroup
);
final
AsynchronousServerSocketChannel
listener
=
openChannel
(
channelGroup
);
listener
.
setOption
(
StandardSocketOption
.
SO_REUSEADDR
,
true
);
listener
.
setOption
(
StandardSocketOption
s
.
SO_REUSEADDR
,
true
);
listener
.
bind
(
new
InetSocketAddress
(
port
));
listener
.
bind
(
new
InetSocketAddress
(
port
));
return
listener
;
return
listener
;
}
}
...
@@ -123,7 +123,7 @@ public class ChatServer implements Runnable {
...
@@ -123,7 +123,7 @@ public class ChatServer implements Runnable {
private
void
handleNewConnection
(
AsynchronousSocketChannel
channel
)
{
private
void
handleNewConnection
(
AsynchronousSocketChannel
channel
)
{
Client
client
=
new
Client
(
channel
,
new
ClientReader
(
this
,
new
NameReader
(
this
)));
Client
client
=
new
Client
(
channel
,
new
ClientReader
(
this
,
new
NameReader
(
this
)));
try
{
try
{
channel
.
setOption
(
StandardSocketOption
.
TCP_NODELAY
,
true
);
channel
.
setOption
(
StandardSocketOption
s
.
TCP_NODELAY
,
true
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
// ignore
// ignore
}
}
...
...
src/share/sample/nio/file/WatchDir.java
浏览文件 @
503c18aa
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
*/
*/
import
java.nio.file.*
;
import
java.nio.file.*
;
import
static
java
.
nio
.
file
.
StandardWatchEventKind
.*;
import
static
java
.
nio
.
file
.
StandardWatchEventKind
s
.*;
import
static
java
.
nio
.
file
.
LinkOption
.*;
import
static
java
.
nio
.
file
.
LinkOption
.*;
import
java.nio.file.attribute.*
;
import
java.nio.file.attribute.*
;
import
java.io.IOException
;
import
java.io.IOException
;
...
...
src/share/sample/nio/multicast/Reader.java
浏览文件 @
503c18aa
...
@@ -96,7 +96,7 @@ public class Reader {
...
@@ -96,7 +96,7 @@ public class Reader {
family
=
StandardProtocolFamily
.
INET6
;
family
=
StandardProtocolFamily
.
INET6
;
}
}
DatagramChannel
dc
=
DatagramChannel
.
open
(
family
)
DatagramChannel
dc
=
DatagramChannel
.
open
(
family
)
.
setOption
(
StandardSocketOption
.
SO_REUSEADDR
,
true
)
.
setOption
(
StandardSocketOption
s
.
SO_REUSEADDR
,
true
)
.
bind
(
new
InetSocketAddress
(
target
.
port
()));
.
bind
(
new
InetSocketAddress
(
target
.
port
()));
if
(
includeList
.
isEmpty
())
{
if
(
includeList
.
isEmpty
())
{
...
...
src/share/sample/nio/multicast/Sender.java
浏览文件 @
503c18aa
...
@@ -59,7 +59,7 @@ public class Sender {
...
@@ -59,7 +59,7 @@ public class Sender {
family
=
StandardProtocolFamily
.
INET6
;
family
=
StandardProtocolFamily
.
INET6
;
DatagramChannel
dc
=
DatagramChannel
.
open
(
family
).
bind
(
new
InetSocketAddress
(
0
));
DatagramChannel
dc
=
DatagramChannel
.
open
(
family
).
bind
(
new
InetSocketAddress
(
0
));
if
(
target
.
interf
()
!=
null
)
{
if
(
target
.
interf
()
!=
null
)
{
dc
.
setOption
(
StandardSocketOption
.
IP_MULTICAST_IF
,
target
.
interf
());
dc
.
setOption
(
StandardSocketOption
s
.
IP_MULTICAST_IF
,
target
.
interf
());
}
}
// send multicast packet
// send multicast packet
...
...
src/solaris/classes/sun/nio/ch/SctpChannelImpl.java
浏览文件 @
503c18aa
...
@@ -55,7 +55,7 @@ import com.sun.nio.sctp.SctpChannel;
...
@@ -55,7 +55,7 @@ import com.sun.nio.sctp.SctpChannel;
import
com.sun.nio.sctp.SctpSocketOption
;
import
com.sun.nio.sctp.SctpSocketOption
;
import
sun.nio.ch.PollArrayWrapper
;
import
sun.nio.ch.PollArrayWrapper
;
import
sun.nio.ch.SelChImpl
;
import
sun.nio.ch.SelChImpl
;
import
static
com
.
sun
.
nio
.
sctp
.
SctpStandardSocketOption
.*;
import
static
com
.
sun
.
nio
.
sctp
.
SctpStandardSocketOption
s
.*;
import
static
sun
.
nio
.
ch
.
SctpResultContainer
.
SEND_FAILED
;
import
static
sun
.
nio
.
ch
.
SctpResultContainer
.
SEND_FAILED
;
import
static
sun
.
nio
.
ch
.
SctpResultContainer
.
ASSOCIATION_CHANGED
;
import
static
sun
.
nio
.
ch
.
SctpResultContainer
.
ASSOCIATION_CHANGED
;
import
static
sun
.
nio
.
ch
.
SctpResultContainer
.
PEER_ADDRESS_CHANGED
;
import
static
sun
.
nio
.
ch
.
SctpResultContainer
.
PEER_ADDRESS_CHANGED
;
...
...
src/solaris/classes/sun/nio/ch/SctpMultiChannelImpl.java
浏览文件 @
503c18aa
...
@@ -53,7 +53,7 @@ import com.sun.nio.sctp.MessageInfo;
...
@@ -53,7 +53,7 @@ import com.sun.nio.sctp.MessageInfo;
import
com.sun.nio.sctp.SctpChannel
;
import
com.sun.nio.sctp.SctpChannel
;
import
com.sun.nio.sctp.SctpMultiChannel
;
import
com.sun.nio.sctp.SctpMultiChannel
;
import
com.sun.nio.sctp.SctpSocketOption
;
import
com.sun.nio.sctp.SctpSocketOption
;
import
static
com
.
sun
.
nio
.
sctp
.
SctpStandardSocketOption
.*;
import
static
com
.
sun
.
nio
.
sctp
.
SctpStandardSocketOption
s
.*;
import
static
sun
.
nio
.
ch
.
SctpResultContainer
.*;
import
static
sun
.
nio
.
ch
.
SctpResultContainer
.*;
/**
/**
...
...
src/solaris/classes/sun/nio/ch/SctpNet.java
浏览文件 @
503c18aa
...
@@ -35,7 +35,7 @@ import java.util.HashSet;
...
@@ -35,7 +35,7 @@ import java.util.HashSet;
import
java.security.AccessController
;
import
java.security.AccessController
;
import
sun.security.action.GetPropertyAction
;
import
sun.security.action.GetPropertyAction
;
import
com.sun.nio.sctp.SctpSocketOption
;
import
com.sun.nio.sctp.SctpSocketOption
;
import
static
com
.
sun
.
nio
.
sctp
.
SctpStandardSocketOption
.*;
import
static
com
.
sun
.
nio
.
sctp
.
SctpStandardSocketOption
s
.*;
public
class
SctpNet
{
public
class
SctpNet
{
static
final
String
osName
=
AccessController
.
doPrivileged
(
static
final
String
osName
=
AccessController
.
doPrivileged
(
...
...
src/solaris/classes/sun/nio/ch/SctpServerChannelImpl.java
浏览文件 @
503c18aa
...
@@ -40,7 +40,7 @@ import com.sun.nio.sctp.IllegalUnbindException;
...
@@ -40,7 +40,7 @@ import com.sun.nio.sctp.IllegalUnbindException;
import
com.sun.nio.sctp.SctpChannel
;
import
com.sun.nio.sctp.SctpChannel
;
import
com.sun.nio.sctp.SctpServerChannel
;
import
com.sun.nio.sctp.SctpServerChannel
;
import
com.sun.nio.sctp.SctpSocketOption
;
import
com.sun.nio.sctp.SctpSocketOption
;
import
com.sun.nio.sctp.SctpStandardSocketOption
;
import
com.sun.nio.sctp.SctpStandardSocketOption
s
;
/**
/**
* An implementation of SctpServerChannel
* An implementation of SctpServerChannel
...
@@ -386,7 +386,7 @@ public class SctpServerChannelImpl extends SctpServerChannel
...
@@ -386,7 +386,7 @@ public class SctpServerChannelImpl extends SctpServerChannel
private
static
Set
<
SctpSocketOption
<?>>
defaultOptions
()
{
private
static
Set
<
SctpSocketOption
<?>>
defaultOptions
()
{
HashSet
<
SctpSocketOption
<?>>
set
=
new
HashSet
<
SctpSocketOption
<?>>(
1
);
HashSet
<
SctpSocketOption
<?>>
set
=
new
HashSet
<
SctpSocketOption
<?>>(
1
);
set
.
add
(
SctpStandardSocketOption
.
SCTP_INIT_MAXSTREAMS
);
set
.
add
(
SctpStandardSocketOption
s
.
SCTP_INIT_MAXSTREAMS
);
return
Collections
.
unmodifiableSet
(
set
);
return
Collections
.
unmodifiableSet
(
set
);
}
}
}
}
...
...
src/solaris/classes/sun/nio/fs/LinuxWatchService.java
浏览文件 @
503c18aa
...
@@ -210,15 +210,15 @@ class LinuxWatchService
...
@@ -210,15 +210,15 @@ class LinuxWatchService
int
mask
=
0
;
int
mask
=
0
;
for
(
WatchEvent
.
Kind
<?>
event:
events
)
{
for
(
WatchEvent
.
Kind
<?>
event:
events
)
{
if
(
event
==
StandardWatchEventKind
.
ENTRY_CREATE
)
{
if
(
event
==
StandardWatchEventKind
s
.
ENTRY_CREATE
)
{
mask
|=
IN_CREATE
|
IN_MOVED_TO
;
mask
|=
IN_CREATE
|
IN_MOVED_TO
;
continue
;
continue
;
}
}
if
(
event
==
StandardWatchEventKind
.
ENTRY_DELETE
)
{
if
(
event
==
StandardWatchEventKind
s
.
ENTRY_DELETE
)
{
mask
|=
IN_DELETE
|
IN_MOVED_FROM
;
mask
|=
IN_DELETE
|
IN_MOVED_FROM
;
continue
;
continue
;
}
}
if
(
event
==
StandardWatchEventKind
.
ENTRY_MODIFY
)
{
if
(
event
==
StandardWatchEventKind
s
.
ENTRY_MODIFY
)
{
mask
|=
IN_MODIFY
|
IN_ATTRIB
;
mask
|=
IN_MODIFY
|
IN_ATTRIB
;
continue
;
continue
;
}
}
...
@@ -378,17 +378,17 @@ class LinuxWatchService
...
@@ -378,17 +378,17 @@ class LinuxWatchService
*/
*/
private
WatchEvent
.
Kind
<?>
maskToEventKind
(
int
mask
)
{
private
WatchEvent
.
Kind
<?>
maskToEventKind
(
int
mask
)
{
if
((
mask
&
IN_MODIFY
)
>
0
)
if
((
mask
&
IN_MODIFY
)
>
0
)
return
StandardWatchEventKind
.
ENTRY_MODIFY
;
return
StandardWatchEventKind
s
.
ENTRY_MODIFY
;
if
((
mask
&
IN_ATTRIB
)
>
0
)
if
((
mask
&
IN_ATTRIB
)
>
0
)
return
StandardWatchEventKind
.
ENTRY_MODIFY
;
return
StandardWatchEventKind
s
.
ENTRY_MODIFY
;
if
((
mask
&
IN_CREATE
)
>
0
)
if
((
mask
&
IN_CREATE
)
>
0
)
return
StandardWatchEventKind
.
ENTRY_CREATE
;
return
StandardWatchEventKind
s
.
ENTRY_CREATE
;
if
((
mask
&
IN_MOVED_TO
)
>
0
)
if
((
mask
&
IN_MOVED_TO
)
>
0
)
return
StandardWatchEventKind
.
ENTRY_CREATE
;
return
StandardWatchEventKind
s
.
ENTRY_CREATE
;
if
((
mask
&
IN_DELETE
)
>
0
)
if
((
mask
&
IN_DELETE
)
>
0
)
return
StandardWatchEventKind
.
ENTRY_DELETE
;
return
StandardWatchEventKind
s
.
ENTRY_DELETE
;
if
((
mask
&
IN_MOVED_FROM
)
>
0
)
if
((
mask
&
IN_MOVED_FROM
)
>
0
)
return
StandardWatchEventKind
.
ENTRY_DELETE
;
return
StandardWatchEventKind
s
.
ENTRY_DELETE
;
return
null
;
return
null
;
}
}
...
@@ -400,7 +400,7 @@ class LinuxWatchService
...
@@ -400,7 +400,7 @@ class LinuxWatchService
if
((
mask
&
IN_Q_OVERFLOW
)
>
0
)
{
if
((
mask
&
IN_Q_OVERFLOW
)
>
0
)
{
for
(
Map
.
Entry
<
Integer
,
LinuxWatchKey
>
entry:
wdToKey
.
entrySet
())
{
for
(
Map
.
Entry
<
Integer
,
LinuxWatchKey
>
entry:
wdToKey
.
entrySet
())
{
entry
.
getValue
()
entry
.
getValue
()
.
signalEvent
(
StandardWatchEventKind
.
OVERFLOW
,
null
);
.
signalEvent
(
StandardWatchEventKind
s
.
OVERFLOW
,
null
);
}
}
return
;
return
;
}
}
...
...
src/solaris/classes/sun/nio/fs/SolarisWatchService.java
浏览文件 @
503c18aa
...
@@ -486,7 +486,7 @@ class SolarisWatchService
...
@@ -486,7 +486,7 @@ class SolarisWatchService
void
processDirectoryEvents
(
SolarisWatchKey
key
,
int
mask
)
{
void
processDirectoryEvents
(
SolarisWatchKey
key
,
int
mask
)
{
if
((
mask
&
(
FILE_MODIFIED
|
FILE_ATTRIB
))
!=
0
)
{
if
((
mask
&
(
FILE_MODIFIED
|
FILE_ATTRIB
))
!=
0
)
{
registerChildren
(
key
.
getDirectory
(),
key
,
registerChildren
(
key
.
getDirectory
(),
key
,
key
.
events
().
contains
(
StandardWatchEventKind
.
ENTRY_CREATE
));
key
.
events
().
contains
(
StandardWatchEventKind
s
.
ENTRY_CREATE
));
}
}
}
}
...
@@ -504,14 +504,14 @@ class SolarisWatchService
...
@@ -504,14 +504,14 @@ class SolarisWatchService
// entry modified
// entry modified
if
(((
mask
&
(
FILE_MODIFIED
|
FILE_ATTRIB
))
!=
0
)
&&
if
(((
mask
&
(
FILE_MODIFIED
|
FILE_ATTRIB
))
!=
0
)
&&
events
.
contains
(
StandardWatchEventKind
.
ENTRY_MODIFY
))
events
.
contains
(
StandardWatchEventKind
s
.
ENTRY_MODIFY
))
{
{
key
.
signalEvent
(
StandardWatchEventKind
.
ENTRY_MODIFY
,
node
.
name
());
key
.
signalEvent
(
StandardWatchEventKind
s
.
ENTRY_MODIFY
,
node
.
name
());
}
}
// entry removed
// entry removed
if
(((
mask
&
(
FILE_REMOVED
))
!=
0
)
&&
if
(((
mask
&
(
FILE_REMOVED
))
!=
0
)
&&
events
.
contains
(
StandardWatchEventKind
.
ENTRY_DELETE
))
events
.
contains
(
StandardWatchEventKind
s
.
ENTRY_DELETE
))
{
{
// Due to 6636438/6636412 we may get a remove event for cases
// Due to 6636438/6636412 we may get a remove event for cases
// where a rmdir/unlink/rename is attempted but fails. Until
// where a rmdir/unlink/rename is attempted but fails. Until
...
@@ -527,7 +527,7 @@ class SolarisWatchService
...
@@ -527,7 +527,7 @@ class SolarisWatchService
}
catch
(
UnixException
x
)
{
}
}
catch
(
UnixException
x
)
{
}
if
(
removed
)
if
(
removed
)
key
.
signalEvent
(
StandardWatchEventKind
.
ENTRY_DELETE
,
node
.
name
());
key
.
signalEvent
(
StandardWatchEventKind
s
.
ENTRY_DELETE
,
node
.
name
());
}
}
return
false
;
return
false
;
}
}
...
@@ -547,7 +547,7 @@ class SolarisWatchService
...
@@ -547,7 +547,7 @@ class SolarisWatchService
// if the ENTRY_MODIFY event is not enabled then we don't need
// if the ENTRY_MODIFY event is not enabled then we don't need
// modification events for entries in the directory
// modification events for entries in the directory
int
events
=
FILE_NOFOLLOW
;
int
events
=
FILE_NOFOLLOW
;
if
(
parent
.
events
().
contains
(
StandardWatchEventKind
.
ENTRY_MODIFY
))
if
(
parent
.
events
().
contains
(
StandardWatchEventKind
s
.
ENTRY_MODIFY
))
events
|=
(
FILE_MODIFIED
|
FILE_ATTRIB
);
events
|=
(
FILE_MODIFIED
|
FILE_ATTRIB
);
DirectoryStream
<
Path
>
stream
=
null
;
DirectoryStream
<
Path
>
stream
=
null
;
...
@@ -567,7 +567,7 @@ class SolarisWatchService
...
@@ -567,7 +567,7 @@ class SolarisWatchService
// send ENTRY_CREATE if enabled
// send ENTRY_CREATE if enabled
if
(
sendEvents
)
{
if
(
sendEvents
)
{
parent
.
signalEvent
(
StandardWatchEventKind
.
ENTRY_CREATE
,
name
);
parent
.
signalEvent
(
StandardWatchEventKind
s
.
ENTRY_CREATE
,
name
);
}
}
// register it
// register it
...
@@ -602,12 +602,12 @@ class SolarisWatchService
...
@@ -602,12 +602,12 @@ class SolarisWatchService
// update events, rembering if ENTRY_MODIFY was previously
// update events, rembering if ENTRY_MODIFY was previously
// enabled or disabled.
// enabled or disabled.
boolean
wasModifyEnabled
=
key
.
events
()
boolean
wasModifyEnabled
=
key
.
events
()
.
contains
(
StandardWatchEventKind
.
ENTRY_MODIFY
);
.
contains
(
StandardWatchEventKind
s
.
ENTRY_MODIFY
);
key
.
setEvents
(
events
);
key
.
setEvents
(
events
);
// check if ENTRY_MODIFY has changed
// check if ENTRY_MODIFY has changed
boolean
isModifyEnabled
=
events
boolean
isModifyEnabled
=
events
.
contains
(
StandardWatchEventKind
.
ENTRY_MODIFY
);
.
contains
(
StandardWatchEventKind
s
.
ENTRY_MODIFY
);
if
(
wasModifyEnabled
==
isModifyEnabled
)
{
if
(
wasModifyEnabled
==
isModifyEnabled
)
{
return
;
return
;
}
}
...
...
src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c
浏览文件 @
503c18aa
...
@@ -892,7 +892,8 @@ Java_sun_nio_fs_UnixNativeDispatcher_getpwuid(JNIEnv* env, jclass this, jint uid
...
@@ -892,7 +892,8 @@ Java_sun_nio_fs_UnixNativeDispatcher_getpwuid(JNIEnv* env, jclass this, jint uid
if
(
res
!=
0
||
p
==
NULL
||
p
->
pw_name
==
NULL
||
*
(
p
->
pw_name
)
==
'\0'
)
{
if
(
res
!=
0
||
p
==
NULL
||
p
->
pw_name
==
NULL
||
*
(
p
->
pw_name
)
==
'\0'
)
{
/* not found or error */
/* not found or error */
if
(
errno
!=
0
&&
errno
!=
ENOENT
)
if
(
errno
==
0
)
errno
=
ENOENT
;
throwUnixException
(
env
,
errno
);
throwUnixException
(
env
,
errno
);
}
else
{
}
else
{
jsize
len
=
strlen
(
p
->
pw_name
);
jsize
len
=
strlen
(
p
->
pw_name
);
...
@@ -941,15 +942,15 @@ Java_sun_nio_fs_UnixNativeDispatcher_getgrgid(JNIEnv* env, jclass this, jint gid
...
@@ -941,15 +942,15 @@ Java_sun_nio_fs_UnixNativeDispatcher_getgrgid(JNIEnv* env, jclass this, jint gid
retry
=
0
;
retry
=
0
;
if
(
res
!=
0
||
g
==
NULL
||
g
->
gr_name
==
NULL
||
*
(
g
->
gr_name
)
==
'\0'
)
{
if
(
res
!=
0
||
g
==
NULL
||
g
->
gr_name
==
NULL
||
*
(
g
->
gr_name
)
==
'\0'
)
{
/* not found or error */
/* not found or error */
if
(
errno
!=
0
&&
errno
!=
ENOENT
)
{
if
(
errno
==
ERANGE
)
{
if
(
errno
==
ERANGE
)
{
/* insufficient buffer size so need larger buffer */
/* insufficient buffer size so need larger buffer */
buflen
+=
ENT_BUF_SIZE
;
buflen
+=
ENT_BUF_SIZE
;
retry
=
1
;
retry
=
1
;
}
else
{
}
else
{
if
(
errno
==
0
)
errno
=
ENOENT
;
throwUnixException
(
env
,
errno
);
throwUnixException
(
env
,
errno
);
}
}
}
}
else
{
}
else
{
jsize
len
=
strlen
(
g
->
gr_name
);
jsize
len
=
strlen
(
g
->
gr_name
);
result
=
(
*
env
)
->
NewByteArray
(
env
,
len
);
result
=
(
*
env
)
->
NewByteArray
(
env
,
len
);
...
...
src/windows/classes/sun/nio/fs/WindowsWatchService.java
浏览文件 @
503c18aa
...
@@ -464,15 +464,15 @@ class WindowsWatchService
...
@@ -464,15 +464,15 @@ class WindowsWatchService
{
{
switch
(
action
)
{
switch
(
action
)
{
case
FILE_ACTION_MODIFIED
:
case
FILE_ACTION_MODIFIED
:
return
StandardWatchEventKind
.
ENTRY_MODIFY
;
return
StandardWatchEventKind
s
.
ENTRY_MODIFY
;
case
FILE_ACTION_ADDED
:
case
FILE_ACTION_ADDED
:
case
FILE_ACTION_RENAMED_NEW_NAME
:
case
FILE_ACTION_RENAMED_NEW_NAME
:
return
StandardWatchEventKind
.
ENTRY_CREATE
;
return
StandardWatchEventKind
s
.
ENTRY_CREATE
;
case
FILE_ACTION_REMOVED
:
case
FILE_ACTION_REMOVED
:
case
FILE_ACTION_RENAMED_OLD_NAME
:
case
FILE_ACTION_RENAMED_OLD_NAME
:
return
StandardWatchEventKind
.
ENTRY_DELETE
;
return
StandardWatchEventKind
s
.
ENTRY_DELETE
;
default
:
default
:
return
null
;
// action not recognized
return
null
;
// action not recognized
...
@@ -548,7 +548,7 @@ class WindowsWatchService
...
@@ -548,7 +548,7 @@ class WindowsWatchService
if
(
info
.
error
()
!=
0
)
{
if
(
info
.
error
()
!=
0
)
{
// buffer overflow
// buffer overflow
if
(
info
.
error
()
==
ERROR_NOTIFY_ENUM_DIR
)
{
if
(
info
.
error
()
==
ERROR_NOTIFY_ENUM_DIR
)
{
key
.
signalEvent
(
StandardWatchEventKind
.
OVERFLOW
,
null
);
key
.
signalEvent
(
StandardWatchEventKind
s
.
OVERFLOW
,
null
);
}
else
{
}
else
{
// other error so cancel key
// other error so cancel key
implCancelKey
(
key
);
implCancelKey
(
key
);
...
@@ -562,7 +562,7 @@ class WindowsWatchService
...
@@ -562,7 +562,7 @@ class WindowsWatchService
processEvents
(
key
,
info
.
bytesTransferred
());
processEvents
(
key
,
info
.
bytesTransferred
());
}
else
{
}
else
{
// insufficient buffer size
// insufficient buffer size
key
.
signalEvent
(
StandardWatchEventKind
.
OVERFLOW
,
null
);
key
.
signalEvent
(
StandardWatchEventKind
s
.
OVERFLOW
,
null
);
}
}
// start read for next batch of changes
// start read for next batch of changes
...
...
src/windows/native/sun/security/mscapi/security.cpp
浏览文件 @
503c18aa
...
@@ -705,7 +705,7 @@ JNIEXPORT jobject JNICALL Java_sun_security_mscapi_RSAKeyPairGenerator_generateR
...
@@ -705,7 +705,7 @@ JNIEXPORT jobject JNICALL Java_sun_security_mscapi_RSAKeyPairGenerator_generateR
HCRYPTPROV
hCryptProv
=
NULL
;
HCRYPTPROV
hCryptProv
=
NULL
;
HCRYPTKEY
hKeyPair
;
HCRYPTKEY
hKeyPair
;
DWORD
dwFlags
=
(
keySize
<<
16
)
|
CRYPT_EXPORTABLE
;
DWORD
dwFlags
=
(
keySize
<<
16
)
|
CRYPT_EXPORTABLE
;
jobject
keypair
;
jobject
keypair
=
NULL
;
const
char
*
pszKeyContainerName
=
NULL
;
// UUID
const
char
*
pszKeyContainerName
=
NULL
;
// UUID
__try
__try
...
...
test/ProblemList.txt
浏览文件 @
503c18aa
...
@@ -195,6 +195,9 @@ java/beans/XMLEncoder/6329581/Test6329581.java generic-all
...
@@ -195,6 +195,9 @@ java/beans/XMLEncoder/6329581/Test6329581.java generic-all
# jdk_lang
# jdk_lang
# requires junit
java/lang/invoke/InvokeDynamicPrintArgs.java generic-all
# Times out on solaris 10 sparc
# Times out on solaris 10 sparc
java/lang/ClassLoader/Assert.java generic-all
java/lang/ClassLoader/Assert.java generic-all
...
...
test/com/sun/management/GarbageCollectorMXBean/GarbageCollectionNotificationContentTest.java
0 → 100644
浏览文件 @
503c18aa
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 7036199
* @summary Check that GarbageCollectionNotification contents are reasonable
* @author Frederic Parain
* @run main/othervm GarbageCollectionNotificationContentTest
*/
import
java.util.*
;
import
java.lang.management.*
;
import
java.lang.reflect.*
;
import
javax.management.*
;
import
javax.management.openmbean.*
;
import
com.sun.management.GarbageCollectionNotificationInfo
;
import
com.sun.management.GcInfo
;
import
java.security.AccessController
;
import
java.security.PrivilegedAction
;
import
java.lang.reflect.Field
;
public
class
GarbageCollectionNotificationContentTest
{
private
static
HashMap
<
String
,
GarbageCollectionNotificationInfo
>
listenerInvoked
=
new
HashMap
<
String
,
GarbageCollectionNotificationInfo
>();
static
volatile
long
count
=
0
;
static
volatile
long
number
=
0
;
static
Object
synchronizer
=
new
Object
();
static
class
GcListener
implements
NotificationListener
{
public
void
handleNotification
(
Notification
notif
,
Object
handback
)
{
String
type
=
notif
.
getType
();
if
(
type
.
equals
(
GarbageCollectionNotificationInfo
.
GARBAGE_COLLECTION_NOTIFICATION
))
{
GarbageCollectionNotificationInfo
gcNotif
=
GarbageCollectionNotificationInfo
.
from
((
CompositeData
)
notif
.
getUserData
());
String
source
=
((
ObjectName
)
notif
.
getSource
()).
getCanonicalName
();
synchronized
(
synchronizer
)
{
if
(
listenerInvoked
.
get
(
source
)
==
null
)
{
listenerInvoked
.
put
(((
ObjectName
)
notif
.
getSource
()).
getCanonicalName
(),
gcNotif
);
count
++;
if
(
count
>=
number
)
{
synchronizer
.
notify
();
}
}
}
}
}
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
MBeanServer
mbs
=
ManagementFactory
.
getPlatformMBeanServer
();
final
Boolean
isNotificationSupported
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Boolean
>()
{
public
Boolean
run
()
{
try
{
Class
cl
=
Class
.
forName
(
"sun.management.VMManagementImpl"
);
Field
f
=
cl
.
getDeclaredField
(
"gcNotificationSupport"
);
f
.
setAccessible
(
true
);
return
f
.
getBoolean
(
null
);
}
catch
(
ClassNotFoundException
e
)
{
return
false
;
}
catch
(
NoSuchFieldException
e
)
{
return
false
;
}
catch
(
IllegalAccessException
e
)
{
return
false
;
}
}
});
if
(!
isNotificationSupported
)
{
System
.
out
.
println
(
"GC Notification not supported by the JVM, test skipped"
);
return
;
}
final
ObjectName
gcMXBeanPattern
=
new
ObjectName
(
"java.lang:type=GarbageCollector,*"
);
Set
<
ObjectName
>
names
=
mbs
.
queryNames
(
gcMXBeanPattern
,
null
);
if
(
names
.
isEmpty
())
throw
new
Exception
(
"Test incorrect: no GC MXBeans"
);
number
=
names
.
size
();
for
(
ObjectName
n
:
names
)
{
if
(
mbs
.
isInstanceOf
(
n
,
"javax.management.NotificationEmitter"
))
{
listenerInvoked
.
put
(
n
.
getCanonicalName
(),
null
);
GcListener
listener
=
new
GcListener
();
mbs
.
addNotificationListener
(
n
,
listener
,
null
,
null
);
}
}
// Invocation of System.gc() to trigger major GC
System
.
gc
();
// Allocation of many short living and small objects to trigger minor GC
Object
data
[]
=
new
Object
[
32
];
for
(
int
i
=
0
;
i
<
100000000
;
i
++)
{
data
[
i
%
32
]
=
new
int
[
8
];
}
int
wakeup
=
0
;
synchronized
(
synchronizer
)
{
while
(
count
!=
number
)
{
synchronizer
.
wait
(
10000
);
wakeup
++;
if
(
wakeup
>
10
)
break
;
}
}
for
(
GarbageCollectionNotificationInfo
notif
:
listenerInvoked
.
values
()
)
{
checkGarbageCollectionNotificationInfoContent
(
notif
);
}
System
.
out
.
println
(
"Test passed"
);
}
private
static
void
checkGarbageCollectionNotificationInfoContent
(
GarbageCollectionNotificationInfo
notif
)
throws
Exception
{
System
.
out
.
println
(
"GC notification for "
+
notif
.
getGcName
());
System
.
out
.
print
(
"Action: "
+
notif
.
getGcAction
());
System
.
out
.
println
(
" Cause: "
+
notif
.
getGcCause
());
GcInfo
info
=
notif
.
getGcInfo
();
System
.
out
.
print
(
"GC Info #"
+
info
.
getId
());
System
.
out
.
print
(
" start:"
+
info
.
getStartTime
());
System
.
out
.
print
(
" end:"
+
info
.
getEndTime
());
System
.
out
.
println
(
" ("
+
info
.
getDuration
()
+
"ms)"
);
Map
<
String
,
MemoryUsage
>
usage
=
info
.
getMemoryUsageBeforeGc
();
List
<
String
>
pnames
=
new
ArrayList
<
String
>();
for
(
Map
.
Entry
entry
:
usage
.
entrySet
()
)
{
String
poolname
=
(
String
)
entry
.
getKey
();
pnames
.
add
(
poolname
);
MemoryUsage
busage
=
(
MemoryUsage
)
entry
.
getValue
();
MemoryUsage
ausage
=
(
MemoryUsage
)
info
.
getMemoryUsageAfterGc
().
get
(
poolname
);
if
(
ausage
==
null
)
{
throw
new
RuntimeException
(
"After Gc Memory does not exist"
+
" for "
+
poolname
);
}
System
.
out
.
println
(
"Usage for pool "
+
poolname
);
System
.
out
.
println
(
" Before GC: "
+
busage
);
System
.
out
.
println
(
" After GC: "
+
ausage
);
}
// check if memory usage for all memory pools are returned
List
<
MemoryPoolMXBean
>
pools
=
ManagementFactory
.
getMemoryPoolMXBeans
();
for
(
MemoryPoolMXBean
p
:
pools
)
{
if
(!
pnames
.
contains
(
p
.
getName
()))
{
throw
new
RuntimeException
(
"GcInfo does not contain "
+
"memory usage for pool "
+
p
.
getName
());
}
}
}
}
test/com/sun/management/GarbageCollectorMXBean/GarbageCollectionNotificationTest.java
0 → 100644
浏览文件 @
503c18aa
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 7036199
* @summary Check that GarbageCollection notification are thrown by every GarbageCollectorMXBean
* @author Frederic Parain
* @run main/othervm GarbageCollectionNotificationTest
*/
import
java.util.*
;
import
java.lang.management.*
;
import
java.lang.reflect.*
;
import
javax.management.*
;
import
javax.management.openmbean.*
;
import
com.sun.management.GarbageCollectionNotificationInfo
;
import
com.sun.management.GcInfo
;
import
java.security.AccessController
;
import
java.security.PrivilegedAction
;
import
java.lang.reflect.Field
;
public
class
GarbageCollectionNotificationTest
{
private
static
HashMap
<
String
,
Boolean
>
listenerInvoked
=
new
HashMap
<
String
,
Boolean
>();
static
volatile
long
count
=
0
;
static
volatile
long
number
=
0
;
static
Object
synchronizer
=
new
Object
();
static
class
GcListener
implements
NotificationListener
{
public
void
handleNotification
(
Notification
notif
,
Object
handback
)
{
String
type
=
notif
.
getType
();
if
(
type
.
equals
(
GarbageCollectionNotificationInfo
.
GARBAGE_COLLECTION_NOTIFICATION
))
{
GarbageCollectionNotificationInfo
gcNotif
=
GarbageCollectionNotificationInfo
.
from
((
CompositeData
)
notif
.
getUserData
());
String
source
=
((
ObjectName
)
notif
.
getSource
()).
getCanonicalName
();
synchronized
(
synchronizer
)
{
if
(!
listenerInvoked
.
get
(
source
))
{
listenerInvoked
.
put
(((
ObjectName
)
notif
.
getSource
()).
getCanonicalName
(),
true
);
count
++;
if
(
count
>=
number
)
{
synchronizer
.
notify
();
}
}
}
}
}
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
MBeanServer
mbs
=
ManagementFactory
.
getPlatformMBeanServer
();
final
Boolean
isNotificationSupported
=
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Boolean
>()
{
public
Boolean
run
()
{
try
{
Class
cl
=
Class
.
forName
(
"sun.management.VMManagementImpl"
);
Field
f
=
cl
.
getDeclaredField
(
"gcNotificationSupport"
);
f
.
setAccessible
(
true
);
return
f
.
getBoolean
(
null
);
}
catch
(
ClassNotFoundException
e
)
{
return
false
;
}
catch
(
NoSuchFieldException
e
)
{
return
false
;
}
catch
(
IllegalAccessException
e
)
{
return
false
;
}
}
});
if
(!
isNotificationSupported
)
{
System
.
out
.
println
(
"GC Notification not supported by the JVM, test skipped"
);
return
;
}
final
ObjectName
gcMXBeanPattern
=
new
ObjectName
(
"java.lang:type=GarbageCollector,*"
);
Set
<
ObjectName
>
names
=
mbs
.
queryNames
(
gcMXBeanPattern
,
null
);
if
(
names
.
isEmpty
())
throw
new
Exception
(
"Test incorrect: no GC MXBeans"
);
number
=
names
.
size
();
for
(
ObjectName
n
:
names
)
{
if
(
mbs
.
isInstanceOf
(
n
,
"javax.management.NotificationEmitter"
))
{
listenerInvoked
.
put
(
n
.
getCanonicalName
(),
false
);
GcListener
listener
=
new
GcListener
();
mbs
.
addNotificationListener
(
n
,
listener
,
null
,
null
);
}
}
// Invocation of System.gc() to trigger major GC
System
.
gc
();
// Allocation of many short living and small objects to trigger minor GC
Object
data
[]
=
new
Object
[
32
];
for
(
int
i
=
0
;
i
<
100000000
;
i
++)
{
data
[
i
%
32
]
=
new
int
[
8
];
}
int
wakeup
=
0
;
synchronized
(
synchronizer
)
{
while
(
count
!=
number
)
{
synchronizer
.
wait
(
10000
);
wakeup
++;
if
(
wakeup
>
10
)
break
;
}
}
for
(
String
source
:
listenerInvoked
.
keySet
())
{
if
(!
listenerInvoked
.
get
(
source
))
throw
new
Exception
(
"Test incorrect: notifications have not been sent for "
+
source
);
}
System
.
out
.
println
(
"Test passed"
);
}
}
test/com/sun/nio/sctp/SctpChannel/SocketOptionTests.java
浏览文件 @
503c18aa
...
@@ -40,7 +40,7 @@ import com.sun.nio.sctp.SctpServerChannel;
...
@@ -40,7 +40,7 @@ import com.sun.nio.sctp.SctpServerChannel;
import
com.sun.nio.sctp.SctpSocketOption
;
import
com.sun.nio.sctp.SctpSocketOption
;
import
java.security.AccessController
;
import
java.security.AccessController
;
import
sun.security.action.GetPropertyAction
;
import
sun.security.action.GetPropertyAction
;
import
static
com
.
sun
.
nio
.
sctp
.
SctpStandardSocketOption
.*;
import
static
com
.
sun
.
nio
.
sctp
.
SctpStandardSocketOption
s
.*;
import
static
java
.
lang
.
System
.
out
;
import
static
java
.
lang
.
System
.
out
;
public
class
SocketOptionTests
{
public
class
SocketOptionTests
{
...
...
test/com/sun/nio/sctp/SctpMultiChannel/SocketOptionTests.java
浏览文件 @
503c18aa
...
@@ -48,7 +48,7 @@ import com.sun.nio.sctp.SctpServerChannel;
...
@@ -48,7 +48,7 @@ import com.sun.nio.sctp.SctpServerChannel;
import
com.sun.nio.sctp.SctpSocketOption
;
import
com.sun.nio.sctp.SctpSocketOption
;
import
java.security.AccessController
;
import
java.security.AccessController
;
import
sun.security.action.GetPropertyAction
;
import
sun.security.action.GetPropertyAction
;
import
static
com
.
sun
.
nio
.
sctp
.
SctpStandardSocketOption
.*;
import
static
com
.
sun
.
nio
.
sctp
.
SctpStandardSocketOption
s
.*;
import
static
java
.
lang
.
System
.
out
;
import
static
java
.
lang
.
System
.
out
;
public
class
SocketOptionTests
{
public
class
SocketOptionTests
{
...
...
test/java/nio/channels/AsynchronousServerSocketChannel/Basic.java
浏览文件 @
503c18aa
...
@@ -29,7 +29,7 @@
...
@@ -29,7 +29,7 @@
import
java.nio.channels.*
;
import
java.nio.channels.*
;
import
java.net.*
;
import
java.net.*
;
import
static
java
.
net
.
StandardSocketOption
.*;
import
static
java
.
net
.
StandardSocketOption
s
.*;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.Set
;
import
java.util.Set
;
import
java.util.concurrent.ExecutionException
;
import
java.util.concurrent.ExecutionException
;
...
...
test/java/nio/channels/AsynchronousSocketChannel/Basic.java
浏览文件 @
503c18aa
...
@@ -29,7 +29,7 @@
...
@@ -29,7 +29,7 @@
import
java.nio.ByteBuffer
;
import
java.nio.ByteBuffer
;
import
java.nio.channels.*
;
import
java.nio.channels.*
;
import
static
java
.
net
.
StandardSocketOption
.*;
import
static
java
.
net
.
StandardSocketOption
s
.*;
import
java.net.*
;
import
java.net.*
;
import
java.util.Random
;
import
java.util.Random
;
import
java.util.concurrent.*
;
import
java.util.concurrent.*
;
...
@@ -383,7 +383,7 @@ public class Basic {
...
@@ -383,7 +383,7 @@ public class Basic {
// write bytes and close connection
// write bytes and close connection
SocketChannel
sc
=
server
.
accept
();
SocketChannel
sc
=
server
.
accept
();
ByteBuffer
src
=
genBuffer
();
ByteBuffer
src
=
genBuffer
();
sc
.
setOption
(
StandardSocketOption
.
SO_SNDBUF
,
src
.
remaining
());
sc
.
setOption
(
StandardSocketOption
s
.
SO_SNDBUF
,
src
.
remaining
());
while
(
src
.
hasRemaining
())
while
(
src
.
hasRemaining
())
sc
.
write
(
src
);
sc
.
write
(
src
);
sc
.
close
();
sc
.
close
();
...
...
test/java/nio/channels/DatagramChannel/BasicMulticastTests.java
浏览文件 @
503c18aa
...
@@ -52,7 +52,7 @@ public class BasicMulticastTests {
...
@@ -52,7 +52,7 @@ public class BasicMulticastTests {
StandardProtocolFamily
.
INET
:
StandardProtocolFamily
.
INET6
;
StandardProtocolFamily
.
INET
:
StandardProtocolFamily
.
INET6
;
DatagramChannel
dc
=
DatagramChannel
.
open
(
family
)
DatagramChannel
dc
=
DatagramChannel
.
open
(
family
)
.
setOption
(
StandardSocketOption
.
SO_REUSEADDR
,
true
)
.
setOption
(
StandardSocketOption
s
.
SO_REUSEADDR
,
true
)
.
bind
(
new
InetSocketAddress
(
source
,
0
));
.
bind
(
new
InetSocketAddress
(
source
,
0
));
// check existing key is returned
// check existing key is returned
...
@@ -115,7 +115,7 @@ public class BasicMulticastTests {
...
@@ -115,7 +115,7 @@ public class BasicMulticastTests {
System
.
out
.
println
(
"Exception Tests"
);
System
.
out
.
println
(
"Exception Tests"
);
DatagramChannel
dc
=
DatagramChannel
.
open
(
StandardProtocolFamily
.
INET
)
DatagramChannel
dc
=
DatagramChannel
.
open
(
StandardProtocolFamily
.
INET
)
.
setOption
(
StandardSocketOption
.
SO_REUSEADDR
,
true
)
.
setOption
(
StandardSocketOption
s
.
SO_REUSEADDR
,
true
)
.
bind
(
new
InetSocketAddress
(
0
));
.
bind
(
new
InetSocketAddress
(
0
));
InetAddress
group
=
InetAddress
.
getByName
(
"225.4.5.6"
);
InetAddress
group
=
InetAddress
.
getByName
(
"225.4.5.6"
);
...
...
test/java/nio/channels/DatagramChannel/MulticastSendReceiveTests.java
浏览文件 @
503c18aa
...
@@ -59,7 +59,7 @@ public class MulticastSendReceiveTests {
...
@@ -59,7 +59,7 @@ public class MulticastSendReceiveTests {
StandardProtocolFamily
.
INET6
:
StandardProtocolFamily
.
INET
;
StandardProtocolFamily
.
INET6
:
StandardProtocolFamily
.
INET
;
DatagramChannel
dc
=
DatagramChannel
.
open
(
family
)
DatagramChannel
dc
=
DatagramChannel
.
open
(
family
)
.
bind
(
new
InetSocketAddress
(
local
,
0
))
.
bind
(
new
InetSocketAddress
(
local
,
0
))
.
setOption
(
StandardSocketOption
.
IP_MULTICAST_IF
,
nif
);
.
setOption
(
StandardSocketOption
s
.
IP_MULTICAST_IF
,
nif
);
int
id
=
rand
.
nextInt
();
int
id
=
rand
.
nextInt
();
byte
[]
msg
=
Integer
.
toString
(
id
).
getBytes
(
"UTF-8"
);
byte
[]
msg
=
Integer
.
toString
(
id
).
getBytes
(
"UTF-8"
);
ByteBuffer
buf
=
ByteBuffer
.
wrap
(
msg
);
ByteBuffer
buf
=
ByteBuffer
.
wrap
(
msg
);
...
@@ -146,7 +146,7 @@ public class MulticastSendReceiveTests {
...
@@ -146,7 +146,7 @@ public class MulticastSendReceiveTests {
System
.
out
.
format
(
"\nTest DatagramChannel to %s socket\n"
,
family
.
name
());
System
.
out
.
format
(
"\nTest DatagramChannel to %s socket\n"
,
family
.
name
());
try
(
DatagramChannel
dc
=
(
family
==
UNSPEC
)
?
try
(
DatagramChannel
dc
=
(
family
==
UNSPEC
)
?
DatagramChannel
.
open
()
:
DatagramChannel
.
open
(
family
))
{
DatagramChannel
.
open
()
:
DatagramChannel
.
open
(
family
))
{
dc
.
setOption
(
StandardSocketOption
.
SO_REUSEADDR
,
true
)
dc
.
setOption
(
StandardSocketOption
s
.
SO_REUSEADDR
,
true
)
.
bind
(
new
InetSocketAddress
(
0
));
.
bind
(
new
InetSocketAddress
(
0
));
// join group
// join group
...
...
test/java/nio/channels/DatagramChannel/SocketOptionTests.java
浏览文件 @
503c18aa
...
@@ -31,7 +31,7 @@ import java.nio.channels.*;
...
@@ -31,7 +31,7 @@ import java.nio.channels.*;
import
java.net.*
;
import
java.net.*
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.*
;
import
static
java
.
net
.
StandardSocketOption
.*;
import
static
java
.
net
.
StandardSocketOption
s
.*;
public
class
SocketOptionTests
{
public
class
SocketOptionTests
{
...
...
test/java/nio/channels/FileChannel/ClosedByInterrupt.java
浏览文件 @
503c18aa
...
@@ -52,13 +52,16 @@ public class ClosedByInterrupt {
...
@@ -52,13 +52,16 @@ public class ClosedByInterrupt {
fc
.
write
(
bb
);
fc
.
write
(
bb
);
}
}
// test with 1-
8
concurrent threads
// test with 1-
16
concurrent threads
for
(
int
i
=
1
;
i
<=
8
;
i
++)
{
for
(
int
i
=
1
;
i
<=
16
;
i
++)
{
System
.
out
.
format
(
"%d thread(s)%n"
,
i
);
System
.
out
.
format
(
"%d thread(s)%n"
,
i
);
test
(
f
,
i
);
test
(
f
,
i
);
if
(
failed
)
if
(
failed
)
break
;
break
;
}
}
if
(
failed
)
throw
new
RuntimeException
(
"Test failed"
);
}
}
/**
/**
...
@@ -132,12 +135,14 @@ public class ClosedByInterrupt {
...
@@ -132,12 +135,14 @@ public class ClosedByInterrupt {
// give the interruptible thread a chance
// give the interruptible thread a chance
try
{
try
{
Thread
.
sleep
(
rand
.
nextInt
(
50
));
Thread
.
sleep
(
rand
.
nextInt
(
50
));
}
catch
(
InterruptedException
ignore
)
{
}
}
catch
(
InterruptedException
e
)
{
unexpected
(
e
);
}
}
}
}
}
}
catch
(
ClosedByInterruptException
e
)
{
}
catch
(
ClosedByInterruptException
e
)
{
if
(
interruptible
)
{
if
(
interruptible
)
{
if
(
Thread
.
currentThread
().
isI
nterrupted
())
{
if
(
Thread
.
i
nterrupted
())
{
expected
(
e
+
" thrown and interrupt status set"
);
expected
(
e
+
" thrown and interrupt status set"
);
}
else
{
}
else
{
unexpected
(
e
+
" thrown but interrupt status not set"
);
unexpected
(
e
+
" thrown but interrupt status not set"
);
...
@@ -158,7 +163,7 @@ public class ClosedByInterrupt {
...
@@ -158,7 +163,7 @@ public class ClosedByInterrupt {
}
}
static
void
expected
(
Exception
e
)
{
static
void
expected
(
Exception
e
)
{
System
.
out
.
format
(
"%s (
not
expected)%n"
,
e
);
System
.
out
.
format
(
"%s (expected)%n"
,
e
);
}
}
static
void
expected
(
String
msg
)
{
static
void
expected
(
String
msg
)
{
...
...
test/java/nio/channels/ServerSocketChannel/SocketOptionTests.java
浏览文件 @
503c18aa
...
@@ -32,7 +32,7 @@ import java.nio.channels.*;
...
@@ -32,7 +32,7 @@ import java.nio.channels.*;
import
java.net.*
;
import
java.net.*
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.*
;
import
static
java
.
net
.
StandardSocketOption
.*;
import
static
java
.
net
.
StandardSocketOption
s
.*;
public
class
SocketOptionTests
{
public
class
SocketOptionTests
{
...
...
test/java/nio/channels/SocketChannel/Shutdown.java
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/java/nio/channels/SocketChannel/SocketOptionTests.java
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/java/nio/charset/StandardCharset/Standard.java
→
test/java/nio/charset/StandardCharset
s
/Standard.java
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/java/nio/file/Files/CheckPermissions.java
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/java/nio/file/WatchService/Basic.java
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/java/nio/file/WatchService/FileTreeModifier.java
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/java/nio/file/WatchService/LotsOfEvents.java
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/java/nio/file/WatchService/SensitivityModifier.java
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/java/nio/file/WatchService/WithSecurityManager.java
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/java/util/logging/LoggingDeadlock3.java
0 → 100644
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/java/util/logging/LoggingDeadlock3.props
0 → 100644
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/java/util/logging/LoggingDeadlock4.java
0 → 100644
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
test/javax/management/timer/StartTest.java
0 → 100644
浏览文件 @
503c18aa
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录