# HG changeset patch # User lana # Date 1305595174 25200 # Node ID af3ed4dd299767af59009d7a293279488c3d73ed # Parent 51a9096f67992b43559fc6e4a9c5dde3574f5605# Parent 4608ed0204d20766e98678fada53d3d8efc3b5c8 Merge diff -r 51a9096f6799 -r af3ed4dd2997 jdk/make/com/sun/nio/sctp/FILES_java.gmk --- a/jdk/make/com/sun/nio/sctp/FILES_java.gmk Mon May 16 18:17:26 2011 -0700 +++ b/jdk/make/com/sun/nio/sctp/FILES_java.gmk Mon May 16 18:19:34 2011 -0700 @@ -38,7 +38,7 @@ com/sun/nio/sctp/SctpMultiChannel.java \ com/sun/nio/sctp/SctpServerChannel.java \ com/sun/nio/sctp/SctpSocketOption.java \ - com/sun/nio/sctp/SctpStandardSocketOption.java \ + com/sun/nio/sctp/SctpStandardSocketOptions.java \ com/sun/nio/sctp/SendFailedNotification.java \ com/sun/nio/sctp/ShutdownNotification.java \ \ diff -r 51a9096f6799 -r af3ed4dd2997 jdk/make/java/management/mapfile-vers --- a/jdk/make/java/management/mapfile-vers Mon May 16 18:17:26 2011 -0700 +++ b/jdk/make/java/management/mapfile-vers Mon May 16 18:19:34 2011 -0700 @@ -49,6 +49,7 @@ Java_sun_management_Flag_setStringValue; Java_sun_management_GarbageCollectorImpl_getCollectionCount; Java_sun_management_GarbageCollectorImpl_getCollectionTime; + Java_sun_management_GarbageCollectorImpl_setNotificationEnabled; Java_sun_management_GcInfoBuilder_fillGcAttributeInfo; Java_sun_management_GcInfoBuilder_getLastGcInfo0; Java_sun_management_GcInfoBuilder_getNumGcExtAttributes; diff -r 51a9096f6799 -r af3ed4dd2997 jdk/make/java/nio/FILES_java.gmk --- a/jdk/make/java/nio/FILES_java.gmk Mon May 16 18:17:26 2011 -0700 +++ b/jdk/make/java/nio/FILES_java.gmk Mon May 16 18:19:34 2011 -0700 @@ -71,7 +71,7 @@ java/nio/charset/CoderMalfunctionError.java \ java/nio/charset/CodingErrorAction.java \ java/nio/charset/MalformedInputException.java \ - java/nio/charset/StandardCharset.java \ + java/nio/charset/StandardCharsets.java \ java/nio/charset/UnmappableCharacterException.java \ \ java/nio/charset/spi/CharsetProvider.java \ @@ -116,7 +116,7 @@ java/nio/file/SimpleFileVisitor.java \ java/nio/file/StandardCopyOption.java \ java/nio/file/StandardOpenOption.java \ - java/nio/file/StandardWatchEventKind.java \ + java/nio/file/StandardWatchEventKinds.java \ java/nio/file/TempFileHelper.java \ java/nio/file/WatchEvent.java \ java/nio/file/WatchKey.java \ diff -r 51a9096f6799 -r af3ed4dd2997 jdk/src/share/classes/com/sun/management/GarbageCollectionNotificationInfo.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/share/classes/com/sun/management/GarbageCollectionNotificationInfo.java Mon May 16 18:19:34 2011 -0700 @@ -0,0 +1,237 @@ +/* + * 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 + * + *
+ * 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:
+ *
+ * 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: + * + *
+ * + *+ * 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); + * .... + * } + *
+ * The type of the notification emitted by a {@code GarbageCollectorMXBean} is: + *
+ *+ * + * @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; + } + +} diff -r 51a9096f6799 -r af3ed4dd2997 jdk/src/share/classes/com/sun/nio/sctp/MessageInfo.java --- a/jdk/src/share/classes/com/sun/nio/sctp/MessageInfo.java Mon May 16 18:17:26 2011 -0700 +++ b/jdk/src/share/classes/com/sun/nio/sctp/MessageInfo.java Mon May 16 18:19:34 2011 -0700 @@ -179,7 +179,7 @@ * completely received. For messages being sent {@code true} indicates that * the message is complete, {@code false} indicates that the message is not * complete. How the send channel interprets this value depends on the value - * of its {@link SctpStandardSocketOption#SCTP_EXPLICIT_COMPLETE + * of its {@link SctpStandardSocketOptions#SCTP_EXPLICIT_COMPLETE * SCTP_EXPLICIT_COMPLETE} socket option. * * @return {@code true} if, and only if, the message is complete @@ -192,7 +192,7 @@ *+ *
+ *+ * + *Attribute Name + *Type + *+ * + *gcName + *{@code java.lang.String} + *+ * + *gcAction + *{@code java.lang.String} + *+ * + *gcCause + *{@code java.lang.String} + *+ * + *gcInfo + *{@code javax.management.openmbean.CompositeData} + *
For messages being sent {@code true} indicates that * the message is complete, {@code false} indicates that the message is not * complete. How the send channel interprets this value depends on the value - * of its {@link SctpStandardSocketOption#SCTP_EXPLICIT_COMPLETE + * of its {@link SctpStandardSocketOptions#SCTP_EXPLICIT_COMPLETE * SCTP_EXPLICIT_COMPLETE} socket option. * * @param complete diff -r 51a9096f6799 -r af3ed4dd2997 jdk/src/share/classes/com/sun/nio/sctp/SctpChannel.java --- a/jdk/src/share/classes/com/sun/nio/sctp/SctpChannel.java Mon May 16 18:17:26 2011 -0700 +++ b/jdk/src/share/classes/com/sun/nio/sctp/SctpChannel.java Mon May 16 18:19:34 2011 -0700 @@ -65,55 +65,55 @@ *
This is a convience method and is equivalent to evaluating the * following expression: *
* @@ -651,7 +651,7 @@ * @throws IOException * If an I/O error occurs * - * @see SctpStandardSocketOption + * @see SctpStandardSocketOptions */ public abstract- * setOption(SctpStandardSocketOption.SCTP_INIT_MAXSTREAMS, SctpStandardSocketOption.InitMaxStreams.create(maxInStreams, maxOutStreams)) + * setOption(SctpStandardSocketOptions.SCTP_INIT_MAXSTREAMS, SctpStandardSocketOption.InitMaxStreams.create(maxInStreams, maxOutStreams)) * .connect(remote); *
The message is transferred from the byte buffer as if by a regular diff -r 51a9096f6799 -r af3ed4dd2997 jdk/src/share/classes/com/sun/nio/sctp/SctpMultiChannel.java --- a/jdk/src/share/classes/com/sun/nio/sctp/SctpMultiChannel.java Mon May 16 18:17:26 2011 -0700 +++ b/jdk/src/share/classes/com/sun/nio/sctp/SctpMultiChannel.java Mon May 16 18:19:34 2011 -0700 @@ -69,55 +69,55 @@ *
If this channel is in non-blocking mode, there is sufficient room * in the underlying output buffer, and an implicit association setup is * required, then the remaining bytes in the given byte buffer are * transmitted as a single message, subject to {@link - * SctpStandardSocketOption#SCTP_EXPLICIT_COMPLETE SCTP_EXPLICIT_COMPLETE}. + * SctpStandardSocketOptions#SCTP_EXPLICIT_COMPLETE SCTP_EXPLICIT_COMPLETE}. * If for any reason the message cannot * be delivered an {@link AssociationChangeNotification association * changed} notification is put on the SCTP stack with its {@code event} parameter set diff -r 51a9096f6799 -r af3ed4dd2997 jdk/src/share/classes/com/sun/nio/sctp/SctpServerChannel.java --- a/jdk/src/share/classes/com/sun/nio/sctp/SctpServerChannel.java Mon May 16 18:17:26 2011 -0700 +++ b/jdk/src/share/classes/com/sun/nio/sctp/SctpServerChannel.java Mon May 16 18:19:34 2011 -0700 @@ -53,7 +53,7 @@ *
The value of this socket option is a {@code Boolean} that represents - * whether the option is enabled or disabled. If enabled no SCTP message - * fragmentation will be performed. Instead if a message being sent - * exceeds the current PMTU size, the message will NOT be sent and - * an error will be indicated to the user. - * - *
It is implementation specific whether or not this option is
- * supported.
- */
- public static final SctpSocketOption The value of this socket option is a {@code Boolean} that represents
- * whether the option is enabled or disabled. When this option is enabled,
- * the {@code send} method may be invoked multiple times to a send message.
- * The {@code isComplete} parameter of the {@link MessageInfo} must only
- * be set to {@code true} for the final send to indicate that the message is
- * complete. If this option is disabled then each individual {@code send}
- * invocation is considered complete.
- *
- * The default value of the option is {@code false} indicating that the
- * option is disabled. It is implementation specific whether or not this
- * option is supported.
- */
- public static final SctpSocketOption This option takes an {@code Integer} value. It can be set to a value
- * of {@code 0}, {@code 1} or {@code 2}.
- *
- * Setting the three levels provides the following receiver
- * interactions:
- *
- * {@code level 0} - Prevents the interleaving of any messages. This
- * means that when a partial delivery begins, no other messages will be
- * received except the message being partially delivered. If another message
- * arrives on a different stream (or association) that could be delivered,
- * it will be blocked waiting for the user to read all of the partially
- * delivered message.
- *
- * {@code level 1} - Allows interleaving of messages that are from
- * different associations. For {@code SctpChannel}, level 0 and
- * level 1 have the same meaning since an {@code SctpChannel} always
- * receives messages from the same association. Note that setting an {@code
- * SctpMultiChannel} to this level may cause multiple partial
- * delivers from different associations but for any given association, only
- * one message will be delivered until all parts of a message have been
- * delivered. This means that one large message, being read with an
- * association identification of "X", will block other messages from
- * association "X" from being delivered.
- *
- * {@code level 2} - Allows complete interleaving of messages. This
- * level requires that the sender carefully observe not only the peer
- * {@code Association} but also must pay careful attention to the stream
- * number. With this option enabled a partially delivered message may begin
- * being delivered for association "X" stream "Y" and the next subsequent
- * receive may return a message from association "X" stream "Z". Note that
- * no other messages would be delivered for association "X" stream "Y"
- * until all of stream "Y"'s partially delivered message was read.
- * Note that this option effects both channel types. Also note that
- * for an {@code SctpMultiChannel} not only may another streams
- * message from the same association be delivered from the next receive,
- * some other associations message may be delivered upon the next receive.
- *
- * It is implementation specific whether or not this option is
- * supported.
- */
- public static final SctpSocketOption The value of this socket option is an {@link
- * SctpStandardSocketOption.InitMaxStreams InitMaxStreams}, that represents
- * the maximum number of inbound and outbound streams that an association
- * on the channel is prepared to support.
- *
- * For an {@link SctpChannel} this option may only be used to
- * change the number of inbound/outbound streams prior to connecting.
- *
- * For an {@link SctpMultiChannel} this option determines
- * the maximum number of inbound/outbound streams new associations setup
- * on the channel will be prepared to support.
- *
- * For an {@link SctpServerChannel} this option determines the
- * maximum number of inbound/outbound streams accepted sockets will
- * negotiate with their connecting peer.
- *
- * In all cases the value set by this option is used in the negotiation
- * of new associations setup on the channel's socket and the actual
- * maximum number of inbound/outbound streams that have been negotiated
- * with the peer can be retrieved from the appropriate {@link
- * Association}. The {@code Association} can be retrieved from the
- * {@link AssociationChangeNotification.AssocChangeEvent#COMM_UP COMM_UP}
- * {@link AssociationChangeNotification} belonging to that association.
- *
- * This value is bounded by the actual implementation. In other
- * words the user may be able to support more streams than the Operating
- * System. In such a case, the Operating System limit may override the
- * value requested by the user. The default value of 0 indicates to use
- * the endpoints default value.
- */
- public static final SctpSocketOption
- The value of this socket option is a {@code Boolean} that represents
- * whether the option is enabled or disabled. SCTP uses an algorithm like
- * The Nagle Algorithm to coalesce short segments and
- * improve network efficiency.
- */
- public static final SctpSocketOption The value of this socket option is a {@code SocketAddress}
- * that represents the peer address that the local SCTP stack should use as
- * the association primary. The address must be one of the association
- * peer's addresses.
- *
- * An {@code SctpMultiChannel} can control more than one
- * association, the association parameter must be given when setting or
- * retrieving this option.
- *
- * Since {@code SctpChannel} only controls one association,
- * the association parameter is not required and this option can be
- * set or queried directly.
- */
- public static final SctpSocketOption The value of this socket option is a {@code SocketAddress}
- * that represents the local address that the peer should use as its
- * primary address. The given address must be one of the association's
- * locally bound addresses.
- *
- * An {@code SctpMultiChannel} can control more than one
- * association, the association parameter must be given when setting or
- * retrieving this option.
- *
- * Since {@code SctpChannel} only controls one association,
- * the association parameter is not required and this option can be
- * queried directly.
- *
- * Note, this is a set only option and cannot be retrieved by {@code
- * getOption}. It is implementation specific whether or not this
- * option is supported.
- */
- public static final SctpSocketOption The value of this socket option is an {@code Integer} that is the
- * size of the socket send buffer in bytes. The socket send buffer is an
- * output buffer used by the networking implementation. It may need to be
- * increased for high-volume connections. The value of the socket option is
- * a hint to the implementation to size the buffer and the actual
- * size may differ. The socket option can be queried to retrieve the actual
- * size.
- *
- * For {@code SctpChannel}, this controls the amount of data
- * the SCTP stack may have waiting in internal buffers to be sent. This
- * option therefore bounds the maximum size of data that can be sent in a
- * single send call.
- *
- * For {@code SctpMultiChannel}, the effect is the same as for {@code
- * SctpChannel}, except that it applies to all associations. The option
- * applies to each association's window size separately.
- *
- * An implementation allows this socket option to be set before the
- * socket is bound or connected. Whether an implementation allows the
- * socket send buffer to be changed after the socket is bound is system
- * dependent.
- */
- public static final SctpSocketOption The value of this socket option is an {@code Integer} that is the
- * size of the socket receive buffer in bytes. The socket receive buffer is
- * an input buffer used by the networking implementation. It may need to be
- * increased for high-volume connections or decreased to limit the possible
- * backlog of incoming data. The value of the socket option is a
- * hint to the implementation to size the buffer and the actual
- * size may differ.
- *
- * For {@code SctpChannel}, this controls the receiver window size.
- *
- * For {@code SctpMultiChannel}, the meaning is implementation
- * dependent. It might control the receive buffer for each association bound
- * to the socket descriptor or it might control the receive buffer for the
- * whole socket.
- *
- * An implementation allows this socket option to be set before the
- * socket is bound or connected. Whether an implementation allows the
- * socket receive buffer to be changed after the socket is bound is system
- * dependent.
- */
- public static final SctpSocketOption The value of this socket option is an {@code Integer} that controls
- * the action taken when unsent data is queued on the socket and a method
- * to close the socket is invoked. If the value of the socket option is zero
- * or greater, then it represents a timeout value, in seconds, known as the
- * linger interval. The linger interval is the timeout for the
- * {@code close} method to block while the operating system attempts to
- * transmit the unsent data or it decides that it is unable to transmit the
- * data. If the value of the socket option is less than zero then the option
- * is disabled. In that case the {@code close} method does not wait until
- * unsent data is transmitted; if possible the operating system will transmit
- * any unsent data before the connection is closed.
- *
- * This socket option is intended for use with sockets that are configured
- * in {@link java.nio.channels.SelectableChannel#isBlocking() blocking} mode
- * only. The behavior of the {@code close} method when this option is
- * enabled on a non-blocking socket is not defined.
- *
- * The initial value of this socket option is a negative value, meaning
- * that the option is disabled. The option may be enabled, or the linger
- * interval changed, at any time. The maximum value of the linger interval
- * is system dependent. Setting the linger interval to a value that is
- * greater than its maximum value causes the linger interval to be set to
- * its maximum value.
- */
- public static final SctpSocketOption The value of this socket option is a {@code Boolean} that represents
+ * whether the option is enabled or disabled. If enabled no SCTP message
+ * fragmentation will be performed. Instead if a message being sent
+ * exceeds the current PMTU size, the message will NOT be sent and
+ * an error will be indicated to the user.
+ *
+ * It is implementation specific whether or not this option is
+ * supported.
+ */
+ public static final SctpSocketOption The value of this socket option is a {@code Boolean} that represents
+ * whether the option is enabled or disabled. When this option is enabled,
+ * the {@code send} method may be invoked multiple times to a send message.
+ * The {@code isComplete} parameter of the {@link MessageInfo} must only
+ * be set to {@code true} for the final send to indicate that the message is
+ * complete. If this option is disabled then each individual {@code send}
+ * invocation is considered complete.
+ *
+ * The default value of the option is {@code false} indicating that the
+ * option is disabled. It is implementation specific whether or not this
+ * option is supported.
+ */
+ public static final SctpSocketOption This option takes an {@code Integer} value. It can be set to a value
+ * of {@code 0}, {@code 1} or {@code 2}.
+ *
+ * Setting the three levels provides the following receiver
+ * interactions:
+ *
+ * {@code level 0} - Prevents the interleaving of any messages. This
+ * means that when a partial delivery begins, no other messages will be
+ * received except the message being partially delivered. If another message
+ * arrives on a different stream (or association) that could be delivered,
+ * it will be blocked waiting for the user to read all of the partially
+ * delivered message.
+ *
+ * {@code level 1} - Allows interleaving of messages that are from
+ * different associations. For {@code SctpChannel}, level 0 and
+ * level 1 have the same meaning since an {@code SctpChannel} always
+ * receives messages from the same association. Note that setting an {@code
+ * SctpMultiChannel} to this level may cause multiple partial
+ * delivers from different associations but for any given association, only
+ * one message will be delivered until all parts of a message have been
+ * delivered. This means that one large message, being read with an
+ * association identification of "X", will block other messages from
+ * association "X" from being delivered.
+ *
+ * {@code level 2} - Allows complete interleaving of messages. This
+ * level requires that the sender carefully observe not only the peer
+ * {@code Association} but also must pay careful attention to the stream
+ * number. With this option enabled a partially delivered message may begin
+ * being delivered for association "X" stream "Y" and the next subsequent
+ * receive may return a message from association "X" stream "Z". Note that
+ * no other messages would be delivered for association "X" stream "Y"
+ * until all of stream "Y"'s partially delivered message was read.
+ * Note that this option effects both channel types. Also note that
+ * for an {@code SctpMultiChannel} not only may another streams
+ * message from the same association be delivered from the next receive,
+ * some other associations message may be delivered upon the next receive.
+ *
+ * It is implementation specific whether or not this option is
+ * supported.
+ */
+ public static final SctpSocketOption The value of this socket option is an {@link
+ * SctpStandardSocketOptions.InitMaxStreams InitMaxStreams}, that represents
+ * the maximum number of inbound and outbound streams that an association
+ * on the channel is prepared to support.
+ *
+ * For an {@link SctpChannel} this option may only be used to
+ * change the number of inbound/outbound streams prior to connecting.
+ *
+ * For an {@link SctpMultiChannel} this option determines
+ * the maximum number of inbound/outbound streams new associations setup
+ * on the channel will be prepared to support.
+ *
+ * For an {@link SctpServerChannel} this option determines the
+ * maximum number of inbound/outbound streams accepted sockets will
+ * negotiate with their connecting peer.
+ *
+ * In all cases the value set by this option is used in the negotiation
+ * of new associations setup on the channel's socket and the actual
+ * maximum number of inbound/outbound streams that have been negotiated
+ * with the peer can be retrieved from the appropriate {@link
+ * Association}. The {@code Association} can be retrieved from the
+ * {@link AssociationChangeNotification.AssocChangeEvent#COMM_UP COMM_UP}
+ * {@link AssociationChangeNotification} belonging to that association.
+ *
+ * This value is bounded by the actual implementation. In other
+ * words the user may be able to support more streams than the Operating
+ * System. In such a case, the Operating System limit may override the
+ * value requested by the user. The default value of 0 indicates to use
+ * the endpoints default value.
+ */
+ public static final SctpSocketOption
+ The value of this socket option is a {@code Boolean} that represents
+ * whether the option is enabled or disabled. SCTP uses an algorithm like
+ * The Nagle Algorithm to coalesce short segments and
+ * improve network efficiency.
+ */
+ public static final SctpSocketOption The value of this socket option is a {@code SocketAddress}
+ * that represents the peer address that the local SCTP stack should use as
+ * the association primary. The address must be one of the association
+ * peer's addresses.
+ *
+ * An {@code SctpMultiChannel} can control more than one
+ * association, the association parameter must be given when setting or
+ * retrieving this option.
+ *
+ * Since {@code SctpChannel} only controls one association,
+ * the association parameter is not required and this option can be
+ * set or queried directly.
+ */
+ public static final SctpSocketOption The value of this socket option is a {@code SocketAddress}
+ * that represents the local address that the peer should use as its
+ * primary address. The given address must be one of the association's
+ * locally bound addresses.
+ *
+ * An {@code SctpMultiChannel} can control more than one
+ * association, the association parameter must be given when setting or
+ * retrieving this option.
+ *
+ * Since {@code SctpChannel} only controls one association,
+ * the association parameter is not required and this option can be
+ * queried directly.
+ *
+ * Note, this is a set only option and cannot be retrieved by {@code
+ * getOption}. It is implementation specific whether or not this
+ * option is supported.
+ */
+ public static final SctpSocketOption The value of this socket option is an {@code Integer} that is the
+ * size of the socket send buffer in bytes. The socket send buffer is an
+ * output buffer used by the networking implementation. It may need to be
+ * increased for high-volume connections. The value of the socket option is
+ * a hint to the implementation to size the buffer and the actual
+ * size may differ. The socket option can be queried to retrieve the actual
+ * size.
+ *
+ * For {@code SctpChannel}, this controls the amount of data
+ * the SCTP stack may have waiting in internal buffers to be sent. This
+ * option therefore bounds the maximum size of data that can be sent in a
+ * single send call.
+ *
+ * For {@code SctpMultiChannel}, the effect is the same as for {@code
+ * SctpChannel}, except that it applies to all associations. The option
+ * applies to each association's window size separately.
+ *
+ * An implementation allows this socket option to be set before the
+ * socket is bound or connected. Whether an implementation allows the
+ * socket send buffer to be changed after the socket is bound is system
+ * dependent.
+ */
+ public static final SctpSocketOption The value of this socket option is an {@code Integer} that is the
+ * size of the socket receive buffer in bytes. The socket receive buffer is
+ * an input buffer used by the networking implementation. It may need to be
+ * increased for high-volume connections or decreased to limit the possible
+ * backlog of incoming data. The value of the socket option is a
+ * hint to the implementation to size the buffer and the actual
+ * size may differ.
+ *
+ * For {@code SctpChannel}, this controls the receiver window size.
+ *
+ * For {@code SctpMultiChannel}, the meaning is implementation
+ * dependent. It might control the receive buffer for each association bound
+ * to the socket descriptor or it might control the receive buffer for the
+ * whole socket.
+ *
+ * An implementation allows this socket option to be set before the
+ * socket is bound or connected. Whether an implementation allows the
+ * socket receive buffer to be changed after the socket is bound is system
+ * dependent.
+ */
+ public static final SctpSocketOption The value of this socket option is an {@code Integer} that controls
+ * the action taken when unsent data is queued on the socket and a method
+ * to close the socket is invoked. If the value of the socket option is zero
+ * or greater, then it represents a timeout value, in seconds, known as the
+ * linger interval. The linger interval is the timeout for the
+ * {@code close} method to block while the operating system attempts to
+ * transmit the unsent data or it decides that it is unable to transmit the
+ * data. If the value of the socket option is less than zero then the option
+ * is disabled. In that case the {@code close} method does not wait until
+ * unsent data is transmitted; if possible the operating system will transmit
+ * any unsent data before the connection is closed.
+ *
+ * This socket option is intended for use with sockets that are configured
+ * in {@link java.nio.channels.SelectableChannel#isBlocking() blocking} mode
+ * only. The behavior of the {@code close} method when this option is
+ * enabled on a non-blocking socket is not defined.
+ *
+ * The initial value of this socket option is a negative value, meaning
+ * that the option is disabled. The option may be enabled, or the linger
+ * interval changed, at any time. The maximum value of the linger interval
+ * is system dependent. Setting the linger interval to a value that is
+ * greater than its maximum value causes the linger interval to be set to
+ * its maximum value.
+ */
+ public static final SctpSocketOption Future versions of the platform may mandate compiler errors for
* such unsafe operations.
diff -r 51a9096f6799 -r af3ed4dd2997 jdk/src/share/classes/java/lang/Throwable.java
--- a/jdk/src/share/classes/java/lang/Throwable.java Mon May 16 18:17:26 2011 -0700
+++ b/jdk/src/share/classes/java/lang/Throwable.java Mon May 16 18:19:34 2011 -0700
@@ -336,7 +336,10 @@
* Disabling of suppression should only occur in exceptional
* circumstances where special requirements exist, such as a
* 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 cause the cause. (A {@code null} value is permitted,
@@ -423,6 +426,18 @@
* {@link #Throwable(String,Throwable)}, this method cannot be called
* even once.
*
+ * An example of using this method on a legacy throwable type
+ * without other support for setting the cause is:
+ *
+ * The suppression behavior is enabled unless disabled
* {@linkplain #Throwable(String, Throwable, boolean, boolean) via
@@ -1043,7 +1059,9 @@
*
* If no exceptions were suppressed or {@linkplain
* #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
* suppressed to deliver this exception.
diff -r 51a9096f6799 -r af3ed4dd2997 jdk/src/share/classes/java/net/SocketOption.java
--- a/jdk/src/share/classes/java/net/SocketOption.java Mon May 16 18:17:26 2011 -0700
+++ b/jdk/src/share/classes/java/net/SocketOption.java Mon May 16 18:19:34 2011 -0700
@@ -38,7 +38,7 @@
*
* @since 1.7
*
- * @see StandardSocketOption
+ * @see StandardSocketOptions
*/
public interface SocketOption The {@link SocketOption#name name} of each socket option defined by this
- * class is its field name.
- *
- * In this release, the socket options defined here are used by {@link
- * java.nio.channels.NetworkChannel network} channels in the {@link
- * java.nio.channels channels} package.
- *
- * @since 1.7
- */
-
-public final class StandardSocketOption {
- private StandardSocketOption() { }
-
- // -- SOL_SOCKET --
-
- /**
- * Allow transmission of broadcast datagrams.
- *
- * The value of this socket option is a {@code Boolean} that represents
- * whether the option is enabled or disabled. The option is specific to
- * datagram-oriented sockets sending to {@link java.net.Inet4Address IPv4}
- * broadcast addresses. When the socket option is enabled then the socket
- * can be used to send broadcast datagrams.
- *
- * The initial value of this socket option is {@code FALSE}. The socket
- * option may be enabled or disabled at any time. Some operating systems may
- * require that the Java virtual machine be started with implementation
- * specific privileges to enable this option or send broadcast datagrams.
- *
- * @see RFC 929:
- * Broadcasting Internet Datagrams
- * @see DatagramSocket#setBroadcast
- */
- public static final SocketOption The value of this socket option is a {@code Boolean} that represents
- * whether the option is enabled or disabled. When the {@code SO_KEEPALIVE}
- * option is enabled the operating system may use a keep-alive
- * mechanism to periodically probe the other end of a connection when the
- * connection is otherwise idle. The exact semantics of the keep alive
- * mechanism is system dependent and therefore unspecified.
- *
- * The initial value of this socket option is {@code FALSE}. The socket
- * option may be enabled or disabled at any time.
- *
- * @see RFC 1122
- * Requirements for Internet Hosts -- Communication Layers
- * @see Socket#setKeepAlive
- */
- public static final SocketOption The value of this socket option is an {@code Integer} that is the
- * size of the socket send buffer in bytes. The socket send buffer is an
- * output buffer used by the networking implementation. It may need to be
- * increased for high-volume connections. The value of the socket option is
- * a hint to the implementation to size the buffer and the actual
- * size may differ. The socket option can be queried to retrieve the actual
- * size.
- *
- * For datagram-oriented sockets, the size of the send buffer may limit
- * the size of the datagrams that may be sent by the socket. Whether
- * datagrams larger than the buffer size are sent or discarded is system
- * dependent.
- *
- * The initial/default size of the socket send buffer and the range of
- * allowable values is system dependent although a negative size is not
- * allowed. An attempt to set the socket send buffer to larger than its
- * maximum size causes it to be set to its maximum size.
- *
- * An implementation allows this socket option to be set before the
- * socket is bound or connected. Whether an implementation allows the
- * socket send buffer to be changed after the socket is bound is system
- * dependent.
- *
- * @see Socket#setSendBufferSize
- */
- public static final SocketOption The value of this socket option is an {@code Integer} that is the
- * size of the socket receive buffer in bytes. The socket receive buffer is
- * an input buffer used by the networking implementation. It may need to be
- * increased for high-volume connections or decreased to limit the possible
- * backlog of incoming data. The value of the socket option is a
- * hint to the implementation to size the buffer and the actual
- * size may differ.
- *
- * For datagram-oriented sockets, the size of the receive buffer may
- * limit the size of the datagrams that can be received. Whether datagrams
- * larger than the buffer size can be received is system dependent.
- * Increasing the socket receive buffer may be important for cases where
- * datagrams arrive in bursts faster than they can be processed.
- *
- * In the case of stream-oriented sockets and the TCP/IP protocol, the
- * size of the socket receive buffer may be used when advertising the size
- * of the TCP receive window to the remote peer.
- *
- * The initial/default size of the socket receive buffer and the range
- * of allowable values is system dependent although a negative size is not
- * allowed. An attempt to set the socket receive buffer to larger than its
- * maximum size causes it to be set to its maximum size.
- *
- * An implementation allows this socket option to be set before the
- * socket is bound or connected. Whether an implementation allows the
- * socket receive buffer to be changed after the socket is bound is system
- * dependent.
- *
- * @see RFC 1323: TCP
- * Extensions for High Performance
- * @see Socket#setReceiveBufferSize
- * @see ServerSocket#setReceiveBufferSize
- */
- public static final SocketOption The value of this socket option is a {@code Boolean} that represents
- * whether the option is enabled or disabled. The exact semantics of this
- * socket option are socket type and system dependent.
- *
- * In the case of stream-oriented sockets, this socket option will
- * usually determine whether the socket can be bound to a socket address
- * when a previous connection involving that socket address is in the
- * TIME_WAIT state. On implementations where the semantics differ,
- * and the socket option is not required to be enabled in order to bind the
- * socket when a previous connection is in this state, then the
- * implementation may choose to ignore this option.
- *
- * For datagram-oriented sockets the socket option is used to allow
- * multiple programs bind to the same address. This option should be enabled
- * when the socket is to be used for Internet Protocol (IP) multicasting.
- *
- * An implementation allows this socket option to be set before the
- * socket is bound or connected. Changing the value of this socket option
- * after the socket is bound has no effect. The default value of this
- * socket option is system dependent.
- *
- * @see RFC 793: Transmission
- * Control Protocol
- * @see ServerSocket#setReuseAddress
- */
- public static final SocketOption The value of this socket option is an {@code Integer} that controls
- * the action taken when unsent data is queued on the socket and a method
- * to close the socket is invoked. If the value of the socket option is zero
- * or greater, then it represents a timeout value, in seconds, known as the
- * linger interval. The linger interval is the timeout for the
- * {@code close} method to block while the operating system attempts to
- * transmit the unsent data or it decides that it is unable to transmit the
- * data. If the value of the socket option is less than zero then the option
- * is disabled. In that case the {@code close} method does not wait until
- * unsent data is transmitted; if possible the operating system will transmit
- * any unsent data before the connection is closed.
- *
- * This socket option is intended for use with sockets that are configured
- * in {@link java.nio.channels.SelectableChannel#isBlocking() blocking} mode
- * only. The behavior of the {@code close} method when this option is
- * enabled on a non-blocking socket is not defined.
- *
- * The initial value of this socket option is a negative value, meaning
- * that the option is disabled. The option may be enabled, or the linger
- * interval changed, at any time. The maximum value of the linger interval
- * is system dependent. Setting the linger interval to a value that is
- * greater than its maximum value causes the linger interval to be set to
- * its maximum value.
- *
- * @see Socket#setSoLinger
- */
- public static final SocketOption The value of this socket option is an {@code Integer} representing
- * the value of the ToS octet in IP packets sent by sockets to an {@link
- * StandardProtocolFamily#INET IPv4} socket. The interpretation of the ToS
- * octet is network specific and is not defined by this class. Further
- * information on the ToS octet can be found in RFC 1349 and RFC 2474. The value
- * of the socket option is a hint. An implementation may ignore the
- * value, or ignore specific values.
- *
- * The initial/default value of the TOS field in the ToS octet is
- * implementation specific but will typically be {@code 0}. For
- * datagram-oriented sockets the option may be configured at any time after
- * the socket has been bound. The new value of the octet is used when sending
- * subsequent datagrams. It is system dependent whether this option can be
- * queried or changed prior to binding the socket.
- *
- * The behavior of this socket option on a stream-oriented socket, or an
- * {@link StandardProtocolFamily#INET6 IPv6} socket, is not defined in this
- * release.
- *
- * @see DatagramSocket#setTrafficClass
- */
- public static final SocketOption The value of this socket option is a {@link NetworkInterface} that
- * represents the outgoing interface for multicast datagrams sent by the
- * datagram-oriented socket. For {@link StandardProtocolFamily#INET6 IPv6}
- * sockets then it is system dependent whether setting this option also
- * sets the outgoing interface for multlicast datagrams sent to IPv4
- * addresses.
- *
- * The initial/default value of this socket option may be {@code null}
- * to indicate that outgoing interface will be selected by the operating
- * system, typically based on the network routing tables. An implementation
- * allows this socket option to be set after the socket is bound. Whether
- * the socket option can be queried or changed prior to binding the socket
- * is system dependent.
- *
- * @see java.nio.channels.MulticastChannel
- * @see MulticastSocket#setInterface
- */
- public static final SocketOption The value of this socket option is an {@code Integer} in the range
- * 0 <= value <= 255. It is used to control
- * the scope of multicast datagrams sent by the datagram-oriented socket.
- * In the case of an {@link StandardProtocolFamily#INET IPv4} socket
- * the option is the time-to-live (TTL) on multicast datagrams sent by the
- * socket. Datagrams with a TTL of zero are not transmitted on the network
- * but may be delivered locally. In the case of an {@link
- * StandardProtocolFamily#INET6 IPv6} socket the option is the
- * hop limit which is number of hops that the datagram can
- * pass through before expiring on the network. For IPv6 sockets it is
- * system dependent whether the option also sets the time-to-live
- * on multicast datagrams sent to IPv4 addresses.
- *
- * The initial/default value of the time-to-live setting is typically
- * {@code 1}. An implementation allows this socket option to be set after
- * the socket is bound. Whether the socket option can be queried or changed
- * prior to binding the socket is system dependent.
- *
- * @see java.nio.channels.MulticastChannel
- * @see MulticastSocket#setTimeToLive
- */
- public static final SocketOption The value of this socket option is a {@code Boolean} that controls
- * the loopback of multicast datagrams. The value of the socket
- * option represents if the option is enabled or disabled.
- *
- * The exact semantics of this socket options are system dependent.
- * In particular, it is system dependent whether the loopback applies to
- * multicast datagrams sent from the socket or received by the socket.
- * For {@link StandardProtocolFamily#INET6 IPv6} sockets then it is
- * system dependent whether the option also applies to multicast datagrams
- * sent to IPv4 addresses.
- *
- * The initial/default value of this socket option is {@code TRUE}. An
- * implementation allows this socket option to be set after the socket is
- * bound. Whether the socket option can be queried or changed prior to
- * binding the socket is system dependent.
- *
- * @see java.nio.channels.MulticastChannel
- * @see MulticastSocket#setLoopbackMode
- */
- public static final SocketOption The value of this socket option is a {@code Boolean} that represents
- * whether the option is enabled or disabled. The socket option is specific to
- * stream-oriented sockets using the TCP/IP protocol. TCP/IP uses an algorithm
- * known as The Nagle Algorithm to coalesce short segments and
- * improve network efficiency.
- *
- * The default value of this socket option is {@code FALSE}. The
- * socket option should only be enabled in cases where it is known that the
- * coalescing impacts performance. The socket option may be enabled at any
- * time. In other words, the Nagle Algorithm can be disabled. Once the option
- * is enabled, it is system dependent whether it can be subsequently
- * disabled. If it cannot, then invoking the {@code setOption} method to
- * disable the option has no effect.
- *
- * @see RFC 1122:
- * Requirements for Internet Hosts -- Communication Layers
- * @see Socket#setTcpNoDelay
- */
- public static final SocketOption The {@link SocketOption#name name} of each socket option defined by this
+ * class is its field name.
+ *
+ * In this release, the socket options defined here are used by {@link
+ * java.nio.channels.NetworkChannel network} channels in the {@link
+ * java.nio.channels channels} package.
+ *
+ * @since 1.7
+ */
+
+public final class StandardSocketOptions {
+ private StandardSocketOptions() { }
+
+ // -- SOL_SOCKET --
+
+ /**
+ * Allow transmission of broadcast datagrams.
+ *
+ * The value of this socket option is a {@code Boolean} that represents
+ * whether the option is enabled or disabled. The option is specific to
+ * datagram-oriented sockets sending to {@link java.net.Inet4Address IPv4}
+ * broadcast addresses. When the socket option is enabled then the socket
+ * can be used to send broadcast datagrams.
+ *
+ * The initial value of this socket option is {@code FALSE}. The socket
+ * option may be enabled or disabled at any time. Some operating systems may
+ * require that the Java virtual machine be started with implementation
+ * specific privileges to enable this option or send broadcast datagrams.
+ *
+ * @see RFC 929:
+ * Broadcasting Internet Datagrams
+ * @see DatagramSocket#setBroadcast
+ */
+ public static final SocketOption The value of this socket option is a {@code Boolean} that represents
+ * whether the option is enabled or disabled. When the {@code SO_KEEPALIVE}
+ * option is enabled the operating system may use a keep-alive
+ * mechanism to periodically probe the other end of a connection when the
+ * connection is otherwise idle. The exact semantics of the keep alive
+ * mechanism is system dependent and therefore unspecified.
+ *
+ * The initial value of this socket option is {@code FALSE}. The socket
+ * option may be enabled or disabled at any time.
+ *
+ * @see RFC 1122
+ * Requirements for Internet Hosts -- Communication Layers
+ * @see Socket#setKeepAlive
+ */
+ public static final SocketOption The value of this socket option is an {@code Integer} that is the
+ * size of the socket send buffer in bytes. The socket send buffer is an
+ * output buffer used by the networking implementation. It may need to be
+ * increased for high-volume connections. The value of the socket option is
+ * a hint to the implementation to size the buffer and the actual
+ * size may differ. The socket option can be queried to retrieve the actual
+ * size.
+ *
+ * For datagram-oriented sockets, the size of the send buffer may limit
+ * the size of the datagrams that may be sent by the socket. Whether
+ * datagrams larger than the buffer size are sent or discarded is system
+ * dependent.
+ *
+ * The initial/default size of the socket send buffer and the range of
+ * allowable values is system dependent although a negative size is not
+ * allowed. An attempt to set the socket send buffer to larger than its
+ * maximum size causes it to be set to its maximum size.
+ *
+ * An implementation allows this socket option to be set before the
+ * socket is bound or connected. Whether an implementation allows the
+ * socket send buffer to be changed after the socket is bound is system
+ * dependent.
+ *
+ * @see Socket#setSendBufferSize
+ */
+ public static final SocketOption The value of this socket option is an {@code Integer} that is the
+ * size of the socket receive buffer in bytes. The socket receive buffer is
+ * an input buffer used by the networking implementation. It may need to be
+ * increased for high-volume connections or decreased to limit the possible
+ * backlog of incoming data. The value of the socket option is a
+ * hint to the implementation to size the buffer and the actual
+ * size may differ.
+ *
+ * For datagram-oriented sockets, the size of the receive buffer may
+ * limit the size of the datagrams that can be received. Whether datagrams
+ * larger than the buffer size can be received is system dependent.
+ * Increasing the socket receive buffer may be important for cases where
+ * datagrams arrive in bursts faster than they can be processed.
+ *
+ * In the case of stream-oriented sockets and the TCP/IP protocol, the
+ * size of the socket receive buffer may be used when advertising the size
+ * of the TCP receive window to the remote peer.
+ *
+ * The initial/default size of the socket receive buffer and the range
+ * of allowable values is system dependent although a negative size is not
+ * allowed. An attempt to set the socket receive buffer to larger than its
+ * maximum size causes it to be set to its maximum size.
+ *
+ * An implementation allows this socket option to be set before the
+ * socket is bound or connected. Whether an implementation allows the
+ * socket receive buffer to be changed after the socket is bound is system
+ * dependent.
+ *
+ * @see RFC 1323: TCP
+ * Extensions for High Performance
+ * @see Socket#setReceiveBufferSize
+ * @see ServerSocket#setReceiveBufferSize
+ */
+ public static final SocketOption The value of this socket option is a {@code Boolean} that represents
+ * whether the option is enabled or disabled. The exact semantics of this
+ * socket option are socket type and system dependent.
+ *
+ * In the case of stream-oriented sockets, this socket option will
+ * usually determine whether the socket can be bound to a socket address
+ * when a previous connection involving that socket address is in the
+ * TIME_WAIT state. On implementations where the semantics differ,
+ * and the socket option is not required to be enabled in order to bind the
+ * socket when a previous connection is in this state, then the
+ * implementation may choose to ignore this option.
+ *
+ * For datagram-oriented sockets the socket option is used to allow
+ * multiple programs bind to the same address. This option should be enabled
+ * when the socket is to be used for Internet Protocol (IP) multicasting.
+ *
+ * An implementation allows this socket option to be set before the
+ * socket is bound or connected. Changing the value of this socket option
+ * after the socket is bound has no effect. The default value of this
+ * socket option is system dependent.
+ *
+ * @see RFC 793: Transmission
+ * Control Protocol
+ * @see ServerSocket#setReuseAddress
+ */
+ public static final SocketOption The value of this socket option is an {@code Integer} that controls
+ * the action taken when unsent data is queued on the socket and a method
+ * to close the socket is invoked. If the value of the socket option is zero
+ * or greater, then it represents a timeout value, in seconds, known as the
+ * linger interval. The linger interval is the timeout for the
+ * {@code close} method to block while the operating system attempts to
+ * transmit the unsent data or it decides that it is unable to transmit the
+ * data. If the value of the socket option is less than zero then the option
+ * is disabled. In that case the {@code close} method does not wait until
+ * unsent data is transmitted; if possible the operating system will transmit
+ * any unsent data before the connection is closed.
+ *
+ * This socket option is intended for use with sockets that are configured
+ * in {@link java.nio.channels.SelectableChannel#isBlocking() blocking} mode
+ * only. The behavior of the {@code close} method when this option is
+ * enabled on a non-blocking socket is not defined.
+ *
+ * The initial value of this socket option is a negative value, meaning
+ * that the option is disabled. The option may be enabled, or the linger
+ * interval changed, at any time. The maximum value of the linger interval
+ * is system dependent. Setting the linger interval to a value that is
+ * greater than its maximum value causes the linger interval to be set to
+ * its maximum value.
+ *
+ * @see Socket#setSoLinger
+ */
+ public static final SocketOption The value of this socket option is an {@code Integer} representing
+ * the value of the ToS octet in IP packets sent by sockets to an {@link
+ * StandardProtocolFamily#INET IPv4} socket. The interpretation of the ToS
+ * octet is network specific and is not defined by this class. Further
+ * information on the ToS octet can be found in RFC 1349 and RFC 2474. The value
+ * of the socket option is a hint. An implementation may ignore the
+ * value, or ignore specific values.
+ *
+ * The initial/default value of the TOS field in the ToS octet is
+ * implementation specific but will typically be {@code 0}. For
+ * datagram-oriented sockets the option may be configured at any time after
+ * the socket has been bound. The new value of the octet is used when sending
+ * subsequent datagrams. It is system dependent whether this option can be
+ * queried or changed prior to binding the socket.
+ *
+ * The behavior of this socket option on a stream-oriented socket, or an
+ * {@link StandardProtocolFamily#INET6 IPv6} socket, is not defined in this
+ * release.
+ *
+ * @see DatagramSocket#setTrafficClass
+ */
+ public static final SocketOption The value of this socket option is a {@link NetworkInterface} that
+ * represents the outgoing interface for multicast datagrams sent by the
+ * datagram-oriented socket. For {@link StandardProtocolFamily#INET6 IPv6}
+ * sockets then it is system dependent whether setting this option also
+ * sets the outgoing interface for multlicast datagrams sent to IPv4
+ * addresses.
+ *
+ * The initial/default value of this socket option may be {@code null}
+ * to indicate that outgoing interface will be selected by the operating
+ * system, typically based on the network routing tables. An implementation
+ * allows this socket option to be set after the socket is bound. Whether
+ * the socket option can be queried or changed prior to binding the socket
+ * is system dependent.
+ *
+ * @see java.nio.channels.MulticastChannel
+ * @see MulticastSocket#setInterface
+ */
+ public static final SocketOption The value of this socket option is an {@code Integer} in the range
+ * 0 <= value <= 255. It is used to control
+ * the scope of multicast datagrams sent by the datagram-oriented socket.
+ * In the case of an {@link StandardProtocolFamily#INET IPv4} socket
+ * the option is the time-to-live (TTL) on multicast datagrams sent by the
+ * socket. Datagrams with a TTL of zero are not transmitted on the network
+ * but may be delivered locally. In the case of an {@link
+ * StandardProtocolFamily#INET6 IPv6} socket the option is the
+ * hop limit which is number of hops that the datagram can
+ * pass through before expiring on the network. For IPv6 sockets it is
+ * system dependent whether the option also sets the time-to-live
+ * on multicast datagrams sent to IPv4 addresses.
+ *
+ * The initial/default value of the time-to-live setting is typically
+ * {@code 1}. An implementation allows this socket option to be set after
+ * the socket is bound. Whether the socket option can be queried or changed
+ * prior to binding the socket is system dependent.
+ *
+ * @see java.nio.channels.MulticastChannel
+ * @see MulticastSocket#setTimeToLive
+ */
+ public static final SocketOption The value of this socket option is a {@code Boolean} that controls
+ * the loopback of multicast datagrams. The value of the socket
+ * option represents if the option is enabled or disabled.
+ *
+ * The exact semantics of this socket options are system dependent.
+ * In particular, it is system dependent whether the loopback applies to
+ * multicast datagrams sent from the socket or received by the socket.
+ * For {@link StandardProtocolFamily#INET6 IPv6} sockets then it is
+ * system dependent whether the option also applies to multicast datagrams
+ * sent to IPv4 addresses.
+ *
+ * The initial/default value of this socket option is {@code TRUE}. An
+ * implementation allows this socket option to be set after the socket is
+ * bound. Whether the socket option can be queried or changed prior to
+ * binding the socket is system dependent.
+ *
+ * @see java.nio.channels.MulticastChannel
+ * @see MulticastSocket#setLoopbackMode
+ */
+ public static final SocketOption The value of this socket option is a {@code Boolean} that represents
+ * whether the option is enabled or disabled. The socket option is specific to
+ * stream-oriented sockets using the TCP/IP protocol. TCP/IP uses an algorithm
+ * known as The Nagle Algorithm to coalesce short segments and
+ * improve network efficiency.
+ *
+ * The default value of this socket option is {@code FALSE}. The
+ * socket option should only be enabled in cases where it is known that the
+ * coalescing impacts performance. The socket option may be enabled at any
+ * time. In other words, the Nagle Algorithm can be disabled. Once the option
+ * is enabled, it is system dependent whether it can be subsequently
+ * disabled. If it cannot, then invoking the {@code setOption} method to
+ * disable the option has no effect.
+ *
+ * @see RFC 1122:
+ * Requirements for Internet Hosts -- Communication Layers
+ * @see Socket#setTcpNoDelay
+ */
+ public static final SocketOption
- *
@@ -55,15 +54,28 @@
*
*
*
- *
+ *
+ * leads to a {@code ClassCastException} at runtime.
*
*
+ * @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!
+ * }
+ *
+ * try {
+ * lowLevelOp();
+ * } catch (LowLevelException le) {
+ * throw (HighLevelException)
+ * new HighLevelException().initCause(le); // Legacy constructor
+ * }
+ *
+ *
* @param cause the cause (which is saved for later retrieval by the
* {@link #getCause()} method). (A {@code null} value is
* permitted, and indicates that the cause is nonexistent or
@@ -788,7 +803,8 @@
* this throwable is permitted to return a zero-length array from this
* method. Generally speaking, the array returned by this method will
* 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
* pertaining to this throwable.
@@ -971,8 +987,8 @@
/**
* Appends the specified exception to the exceptions that were
* suppressed in order to deliver this exception. This method is
- * typically called (automatically and implicitly) by the {@code
- * try}-with-resources statement.
+ * thread-safe and typically called (automatically and implicitly)
+ * by the {@code try}-with-resources statement.
*
* Description
*
The {@link StandardSocketOption#SO_REUSEADDR SO_REUSEADDR} option should be + *
The {@link StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} option should be * enabled prior to {@link NetworkChannel#bind binding} the socket. This is * required to allow multiple members of the group to bind to the same * address.
The {@link StandardCharset} class defines constants for each of the + *
The {@link StandardCharsets} class defines constants for each of the * standard charsets. * *
* Path path = FileSystems.getDefault().getPath("logs", "access.log"); - * BufferReader reader = Files.newBufferedReader(path, StandardCharset.UTF_8); + * BufferReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8); ** *
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 StandardWatchEventKinds} * *
The {@code modifiers} parameter specifies modifiers that * qualify how the directory is registered. This release does not define any diff -r 51a9096f6799 -r af3ed4dd2997 jdk/src/share/classes/java/nio/file/StandardWatchEventKind.java --- a/jdk/src/share/classes/java/nio/file/StandardWatchEventKind.java Mon May 16 18:17:26 2011 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2007, 2009, 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 java.nio.file; - -/** - * Defines the standard event kinds. - * - * @since 1.7 - */ - -public final class StandardWatchEventKind { - private StandardWatchEventKind() { } - - /** - * A special event to indicate that events may have been lost or - * discarded. - * - *
The {@link WatchEvent#context context} for this event is
- * implementation specific and may be {@code null}. The event {@link
- * WatchEvent#count count} may be greater than {@code 1}.
- *
- * @see WatchService
- */
- public static final WatchEvent.Kind When a directory is registered for this event then the {@link WatchKey}
- * is queued when it is observed that an entry is created in the directory
- * or renamed into the directory. The event {@link WatchEvent#count count}
- * for this event is always {@code 1}.
- */
- public static final WatchEvent.Kind When a directory is registered for this event then the {@link WatchKey}
- * is queued when it is observed that an entry is deleted or renamed out of
- * the directory. The event {@link WatchEvent#count count} for this event
- * is always {@code 1}.
- */
- public static final WatchEvent.Kind When a directory is registered for this event then the {@link WatchKey}
- * is queued when it is observed that an entry in the directory has been
- * modified. The event {@link WatchEvent#count count} for this event is
- * {@code 1} or greater.
- */
- public static final WatchEvent.Kind The {@link WatchEvent#context context} for this event is
+ * implementation specific and may be {@code null}. The event {@link
+ * WatchEvent#count count} may be greater than {@code 1}.
+ *
+ * @see WatchService
+ */
+ public static final WatchEvent.Kind