This commit is contained in:
Alexandre Iline 2017-05-01 11:48:16 -07:00
commit 91d055b6be
31 changed files with 573 additions and 399 deletions

View File

@ -1447,9 +1447,10 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method
} }
/** /**
* Produces a VarHandle giving access to non-static fields of type * Produces a VarHandle giving access to a non-static field {@code name}
* {@code T} declared by a receiver class of type {@code R}, supporting * of type {@code type} declared in a class of type {@code recv}.
* shape {@code (R : T)}. * The VarHandle's variable type is {@code type} and it has one
* coordinate type, {@code recv}.
* <p> * <p>
* Access checking is performed immediately on behalf of the lookup * Access checking is performed immediately on behalf of the lookup
* class. * class.
@ -1472,7 +1473,7 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method
* <p> * <p>
* If the field is declared {@code volatile} then the returned VarHandle * If the field is declared {@code volatile} then the returned VarHandle
* will override access to the field (effectively ignore the * will override access to the field (effectively ignore the
* {@code volatile} declaration) in accordance to it's specified * {@code volatile} declaration) in accordance to its specified
* access modes. * access modes.
* <p> * <p>
* If the field type is {@code float} or {@code double} then numeric * If the field type is {@code float} or {@code double} then numeric
@ -1568,9 +1569,10 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method
} }
/** /**
* Produces a VarHandle giving access to a static field of type * Produces a VarHandle giving access to a static field {@code name} of
* {@code T} declared by a given declaring class, supporting shape * type {@code type} declared in a class of type {@code decl}.
* {@code ((empty) : T)}. * The VarHandle's variable type is {@code type} and it has no
* coordinate types.
* <p> * <p>
* Access checking is performed immediately on behalf of the lookup * Access checking is performed immediately on behalf of the lookup
* class. * class.
@ -1596,7 +1598,7 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method
* <p> * <p>
* If the field is declared {@code volatile} then the returned VarHandle * If the field is declared {@code volatile} then the returned VarHandle
* will override access to the field (effectively ignore the * will override access to the field (effectively ignore the
* {@code volatile} declaration) in accordance to it's specified * {@code volatile} declaration) in accordance to its specified
* access modes. * access modes.
* <p> * <p>
* If the field type is {@code float} or {@code double} then numeric * If the field type is {@code float} or {@code double} then numeric
@ -1691,7 +1693,13 @@ return mh1;
public MethodHandle bind(Object receiver, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException { public MethodHandle bind(Object receiver, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException {
Class<? extends Object> refc = receiver.getClass(); // may get NPE Class<? extends Object> refc = receiver.getClass(); // may get NPE
MemberName method = resolveOrFail(REF_invokeSpecial, refc, name, type); MemberName method = resolveOrFail(REF_invokeSpecial, refc, name, type);
MethodHandle mh = getDirectMethodNoRestrict(REF_invokeSpecial, refc, method, findBoundCallerClass(method)); MethodHandle mh = getDirectMethodNoRestrictInvokeSpecial(refc, method, findBoundCallerClass(method));
if (!mh.type().leadingReferenceParameter().isAssignableFrom(receiver.getClass())) {
throw new IllegalAccessException("The restricted defining class " +
mh.type().leadingReferenceParameter().getName() +
" is not assignable from receiver class " +
receiver.getClass().getName());
}
return mh.bindArgumentL(0, receiver).setVarargs(method); return mh.bindArgumentL(0, receiver).setVarargs(method);
} }
@ -1877,11 +1885,12 @@ return mh1;
} }
/** /**
* Produces a VarHandle that accesses fields of type {@code T} declared * Produces a VarHandle giving access to a reflected field {@code f}
* by a class of type {@code R}, as described by the given reflected * of type {@code T} declared in a class of type {@code R}.
* field. * The VarHandle's variable type is {@code T}.
* If the field is non-static the VarHandle supports a shape of * If the field is non-static the VarHandle has one coordinate type,
* {@code (R : T)}, otherwise supports a shape of {@code ((empty) : T)}. * {@code R}. Otherwise, the field is static, and the VarHandle has no
* coordinate types.
* <p> * <p>
* Access checking is performed immediately on behalf of the lookup * Access checking is performed immediately on behalf of the lookup
* class, regardless of the value of the field's {@code accessible} * class, regardless of the value of the field's {@code accessible}
@ -1909,7 +1918,7 @@ return mh1;
* <p> * <p>
* If the field is declared {@code volatile} then the returned VarHandle * If the field is declared {@code volatile} then the returned VarHandle
* will override access to the field (effectively ignore the * will override access to the field (effectively ignore the
* {@code volatile} declaration) in accordance to it's specified * {@code volatile} declaration) in accordance to its specified
* access modes. * access modes.
* <p> * <p>
* If the field type is {@code float} or {@code double} then numeric * If the field type is {@code float} or {@code double} then numeric
@ -2240,7 +2249,7 @@ return mh1;
throw method.makeAccessException("caller class must be a subclass below the method", caller); throw method.makeAccessException("caller class must be a subclass below the method", caller);
} }
MethodType rawType = mh.type(); MethodType rawType = mh.type();
if (rawType.parameterType(0) == caller) return mh; if (caller.isAssignableFrom(rawType.parameterType(0))) return mh; // no need to restrict; already narrow
MethodType narrowType = rawType.changeParameterType(0, caller); MethodType narrowType = rawType.changeParameterType(0, caller);
assert(!mh.isVarargsCollector()); // viewAsType will lose varargs-ness assert(!mh.isVarargsCollector()); // viewAsType will lose varargs-ness
assert(mh.viewAsTypeChecks(narrowType, true)); assert(mh.viewAsTypeChecks(narrowType, true));
@ -2253,11 +2262,11 @@ return mh1;
final boolean checkSecurity = true; final boolean checkSecurity = true;
return getDirectMethodCommon(refKind, refc, method, checkSecurity, doRestrict, callerClass); return getDirectMethodCommon(refKind, refc, method, checkSecurity, doRestrict, callerClass);
} }
/** Check access and get the requested method, eliding receiver narrowing rules. */ /** Check access and get the requested method, for invokespecial with no restriction on the application of narrowing rules. */
private MethodHandle getDirectMethodNoRestrict(byte refKind, Class<?> refc, MemberName method, Class<?> callerClass) throws IllegalAccessException { private MethodHandle getDirectMethodNoRestrictInvokeSpecial(Class<?> refc, MemberName method, Class<?> callerClass) throws IllegalAccessException {
final boolean doRestrict = false; final boolean doRestrict = false;
final boolean checkSecurity = true; final boolean checkSecurity = true;
return getDirectMethodCommon(refKind, refc, method, checkSecurity, doRestrict, callerClass); return getDirectMethodCommon(REF_invokeSpecial, refc, method, checkSecurity, doRestrict, callerClass);
} }
/** Check access and get the requested method, eliding security manager checks. */ /** Check access and get the requested method, eliding security manager checks. */
private MethodHandle getDirectMethodNoSecurityManager(byte refKind, Class<?> refc, MemberName method, Class<?> callerClass) throws IllegalAccessException { private MethodHandle getDirectMethodNoSecurityManager(byte refKind, Class<?> refc, MemberName method, Class<?> callerClass) throws IllegalAccessException {
@ -2309,10 +2318,8 @@ return mh1;
DirectMethodHandle dmh = DirectMethodHandle.make(refKind, refc, method); DirectMethodHandle dmh = DirectMethodHandle.make(refKind, refc, method);
MethodHandle mh = dmh; MethodHandle mh = dmh;
// Optionally narrow the receiver argument to refc using restrictReceiver. // Optionally narrow the receiver argument to refc using restrictReceiver.
if (doRestrict && if ((doRestrict && refKind == REF_invokeSpecial) ||
(refKind == REF_invokeSpecial || (MethodHandleNatives.refKindHasReceiver(refKind) && restrictProtectedReceiver(method))) {
(MethodHandleNatives.refKindHasReceiver(refKind) &&
restrictProtectedReceiver(method)))) {
mh = restrictReceiver(method, dmh, lookupClass()); mh = restrictReceiver(method, dmh, lookupClass());
} }
mh = maybeBindCaller(method, mh, callerClass); mh = maybeBindCaller(method, mh, callerClass);
@ -2572,9 +2579,11 @@ return mh1;
} }
/** /**
* * Produces a VarHandle giving access to elements of an array of type
* Produces a VarHandle giving access to elements of an array type * {@code arrayClass}. The VarHandle's variable type is the component type
* {@code T[]}, supporting shape {@code (T[], int : T)}. * of {@code arrayClass} and the list of coordinate types is
* {@code (arrayClass, int)}, where the {@code int} coordinate type
* corresponds to an argument that is an index into an array.
* <p> * <p>
* Certain access modes of the returned VarHandle are unsupported under * Certain access modes of the returned VarHandle are unsupported under
* the following conditions: * the following conditions:
@ -2629,13 +2638,14 @@ return mh1;
/** /**
* Produces a VarHandle giving access to elements of a {@code byte[]} array * Produces a VarHandle giving access to elements of a {@code byte[]} array
* viewed as if it were a different primitive array type, such as * viewed as if it were a different primitive array type, such as
* {@code int[]} or {@code long[]}. The shape of the resulting VarHandle is * {@code int[]} or {@code long[]}.
* {@code (byte[], int : T)}, where the {@code int} coordinate type * The VarHandle's variable type is the component type of
* corresponds to an argument that is an index in a {@code byte[]} array, * {@code viewArrayClass} and the list of coordinate types is
* and {@code T} is the component type of the given view array class. The * {@code (byte[], int)}, where the {@code int} coordinate type
* returned VarHandle accesses bytes at an index in a {@code byte[]} array, * corresponds to an argument that is an index into a {@code byte[]} array.
* composing bytes to or from a value of {@code T} according to the given * The returned VarHandle accesses bytes at an index in a {@code byte[]}
* endianness. * array, composing bytes to or from a value of the component type of
* {@code viewArrayClass} according to the given endianness.
* <p> * <p>
* The supported component types (variables types) are {@code short}, * The supported component types (variables types) are {@code short},
* {@code char}, {@code int}, {@code long}, {@code float} and * {@code char}, {@code int}, {@code long}, {@code float} and
@ -2713,13 +2723,14 @@ return mh1;
* Produces a VarHandle giving access to elements of a {@code ByteBuffer} * Produces a VarHandle giving access to elements of a {@code ByteBuffer}
* viewed as if it were an array of elements of a different primitive * viewed as if it were an array of elements of a different primitive
* component type to that of {@code byte}, such as {@code int[]} or * component type to that of {@code byte}, such as {@code int[]} or
* {@code long[]}. The shape of the resulting VarHandle is * {@code long[]}.
* {@code (ByteBuffer, int : T)}, where the {@code int} coordinate type * The VarHandle's variable type is the component type of
* corresponds to an argument that is an index in a {@code ByteBuffer}, and * {@code viewArrayClass} and the list of coordinate types is
* {@code T} is the component type of the given view array class. The * {@code (ByteBuffer, int)}, where the {@code int} coordinate type
* returned VarHandle accesses bytes at an index in a {@code ByteBuffer}, * corresponds to an argument that is an index into a {@code byte[]} array.
* composing bytes to or from a value of {@code T} according to the given * The returned VarHandle accesses bytes at an index in a
* endianness. * {@code ByteBuffer}, composing bytes to or from a value of the component
* type of {@code viewArrayClass} according to the given endianness.
* <p> * <p>
* The supported component types (variables types) are {@code short}, * The supported component types (variables types) are {@code short},
* {@code char}, {@code int}, {@code long}, {@code float} and * {@code char}, {@code int}, {@code long}, {@code float} and

View File

@ -98,7 +98,7 @@ questions.
constructor.</p> constructor.</p>
<h4><a name="servergen">Connector addresses generated by the <h4><a id="servergen">Connector addresses generated by the
server</a></h4> server</a></h4>
<p>If the <code>serviceURL</code> you specify has an empty URL <p>If the <code>serviceURL</code> you specify has an empty URL
@ -157,7 +157,7 @@ questions.
<code><em>port</em></code>.</p> <code><em>port</em></code>.</p>
<h4><a name="directory">Connector addresses based on directory <h4><a id="directory">Connector addresses based on directory
entries</a></h4> entries</a></h4>
<p>As an alternative to the generated addresses just described, <p>As an alternative to the generated addresses just described,

View File

@ -34,7 +34,7 @@ import sun.management.LockInfoCompositeData;
* an <em>ownable synchronizer</em>, or the {@link Condition Condition} * an <em>ownable synchronizer</em>, or the {@link Condition Condition}
* object associated with synchronizers. * object associated with synchronizers.
* <p> * <p>
* <a name="OwnableSynchronizer">An ownable synchronizer</a> is * <a id="OwnableSynchronizer">An ownable synchronizer</a> is
* a synchronizer that may be exclusively owned by a thread and uses * a synchronizer that may be exclusively owned by a thread and uses
* {@link AbstractOwnableSynchronizer AbstractOwnableSynchronizer} * {@link AbstractOwnableSynchronizer AbstractOwnableSynchronizer}
* (or its subclass) to implement its synchronization property. * (or its subclass) to implement its synchronization property.
@ -42,7 +42,7 @@ import sun.management.LockInfoCompositeData;
* the read-lock) of {@link ReentrantReadWriteLock ReentrantReadWriteLock} are * the read-lock) of {@link ReentrantReadWriteLock ReentrantReadWriteLock} are
* two examples of ownable synchronizers provided by the platform. * two examples of ownable synchronizers provided by the platform.
* *
* <h3><a name="MappedType">MXBean Mapping</a></h3> * <h3><a id="MappedType">MXBean Mapping</a></h3>
* {@code LockInfo} is mapped to a {@link CompositeData CompositeData} * {@code LockInfo} is mapped to a {@link CompositeData CompositeData}
* as specified in the {@link #from from} method. * as specified in the {@link #from from} method.
* *
@ -105,10 +105,11 @@ public class LockInfo {
* given {@code CompositeData}. * given {@code CompositeData}.
* The given {@code CompositeData} must contain the following attributes: * The given {@code CompositeData} must contain the following attributes:
* <blockquote> * <blockquote>
* <table border summary="The attributes and the types the given CompositeData contains"> * <table border="1">
* <caption style="display:none">The attributes and the types the given CompositeData contains</caption>
* <tr> * <tr>
* <th align=left>Attribute Name</th> * <th style="text-align:left">Attribute Name</th>
* <th align=left>Type</th> * <th style="text-align:left">Type</th>
* </tr> * </tr>
* <tr> * <tr>
* <td>className</td> * <td>className</td>

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2017, 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
@ -67,7 +67,7 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* the management interface of a component of the Java virtual * the management interface of a component of the Java virtual
* machine. * machine.
* *
* <h3><a name="MXBean">Platform MXBeans</a></h3> * <h3><a id="MXBean">Platform MXBeans</a></h3>
* <p> * <p>
* A platform MXBean is a <i>managed bean</i> that * A platform MXBean is a <i>managed bean</i> that
* conforms to the <a href="../../../javax/management/package-summary.html">JMX</a> * conforms to the <a href="../../../javax/management/package-summary.html">JMX</a>
@ -83,7 +83,7 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* See <a href="../../../javax/management/MXBean.html#MXBean-spec"> * See <a href="../../../javax/management/MXBean.html#MXBean-spec">
* the specification of MXBeans</a> for details. * the specification of MXBeans</a> for details.
* *
* <a name="MXBeanNames"></a> * <a id="MXBeanNames"></a>
* <p>Each platform MXBean is a {@link PlatformManagedObject} * <p>Each platform MXBean is a {@link PlatformManagedObject}
* and it has a unique * and it has a unique
* {@link javax.management.ObjectName ObjectName} for * {@link javax.management.ObjectName ObjectName} for
@ -141,7 +141,8 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* interfaces: * interfaces:
* *
* <blockquote> * <blockquote>
* <table border summary="The list of Management Interfaces and their single instances"> * <table border="1">
* <caption style="display:none">The list of Management Interfaces and their single instances</caption>
* <tr> * <tr>
* <th>Management Interface</th> * <th>Management Interface</th>
* <th>ObjectName</th> * <th>ObjectName</th>
@ -184,7 +185,8 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* the following management interfaces. * the following management interfaces.
* *
* <blockquote> * <blockquote>
* <table border summary="The list of Management Interfaces and their single instances"> * <table border="1">
* <caption style="display:none">The list of Management Interfaces and their single instances</caption>
* <tr> * <tr>
* <th>Management Interface</th> * <th>Management Interface</th>
* <th>ObjectName</th> * <th>ObjectName</th>
@ -201,7 +203,8 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* A Java virtual machine may have one or more instances of the following * A Java virtual machine may have one or more instances of the following
* management interfaces. * management interfaces.
* <blockquote> * <blockquote>
* <table border summary="The list of Management Interfaces and their single instances"> * <table border="1">
* <caption style="display:none">The list of Management Interfaces and their single instances</caption>
* <tr> * <tr>
* <th>Management Interface</th> * <th>Management Interface</th>
* <th>ObjectName</th> * <th>ObjectName</th>

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2017, 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
@ -34,7 +34,8 @@ package java.lang.management;
* provides a summary description of what the permission allows, * provides a summary description of what the permission allows,
* and discusses the risks of granting code the permission. * and discusses the risks of granting code the permission.
* *
* <table border=1 cellpadding=5 summary="Table shows permission target name, what the permission allows, and associated risks"> * <table border="1" cellpadding=5>
* <caption style="display:none">Table shows permission target name, what the permission allows, and associated risks</caption>
* <tr> * <tr>
* <th>Permission Target Name</th> * <th>Permission Target Name</th>
* <th>What the Permission Allows</th> * <th>What the Permission Allows</th>

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2017, 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
@ -212,10 +212,11 @@ public class MemoryNotificationInfo {
* The given {@code CompositeData} must contain * The given {@code CompositeData} must contain
* the following attributes: * the following attributes:
* <blockquote> * <blockquote>
* <table border summary="The attributes and the types the given CompositeData contains"> * <table border="1">
* <caption style="display:none">The attributes and the types the given CompositeData contains</caption>
* <tr> * <tr>
* <th align=left>Attribute Name</th> * <th style="text-align:left">Attribute Name</th>
* <th align=left>Type</th> * <th style="text-align:left">Type</th>
* </tr> * </tr>
* <tr> * <tr>
* <td>poolName</td> * <td>poolName</td>

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2017, 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
@ -71,7 +71,7 @@ package java.lang.management;
* (only supported by some <em>garbage-collected</em> memory pools)</li> * (only supported by some <em>garbage-collected</em> memory pools)</li>
* </ul> * </ul>
* *
* <h3><a name="Usage">1. Memory Usage</a></h3> * <h3><a id="Usage">1. Memory Usage</a></h3>
* *
* The {@link #getUsage} method provides an estimate * The {@link #getUsage} method provides an estimate
* of the current usage of a memory pool. * of the current usage of a memory pool.
@ -86,14 +86,14 @@ package java.lang.management;
* the current memory usage. An implementation should document when * the current memory usage. An implementation should document when
* this is the case. * this is the case.
* *
* <h3><a name="PeakUsage">2. Peak Memory Usage</a></h3> * <h3><a id="PeakUsage">2. Peak Memory Usage</a></h3>
* *
* The Java virtual machine maintains the peak memory usage of a memory * The Java virtual machine maintains the peak memory usage of a memory
* pool since the virtual machine was started or the peak was reset. * pool since the virtual machine was started or the peak was reset.
* The peak memory usage is returned by the {@link #getPeakUsage} method * The peak memory usage is returned by the {@link #getPeakUsage} method
* and reset by calling the {@link #resetPeakUsage} method. * and reset by calling the {@link #resetPeakUsage} method.
* *
* <h3><a name="UsageThreshold">3. Usage Threshold</a></h3> * <h3><a id="UsageThreshold">3. Usage Threshold</a></h3>
* *
* Each memory pool has a manageable attribute * Each memory pool has a manageable attribute
* called the <i>usage threshold</i> which has a default value supplied * called the <i>usage threshold</i> which has a default value supplied
@ -141,7 +141,7 @@ package java.lang.management;
* <a href="#ThresholdNotification">threshold notification</a> mechanisms. * <a href="#ThresholdNotification">threshold notification</a> mechanisms.
* *
* <ol type="a"> * <ol type="a">
* <li><a name="Polling"><b>Polling</b></a> * <li><a id="Polling"><b>Polling</b></a>
* <p> * <p>
* An application can continuously monitor its memory usage * An application can continuously monitor its memory usage
* by calling either the {@link #getUsage} method for all * by calling either the {@link #getUsage} method for all
@ -231,7 +231,7 @@ package java.lang.management;
* } * }
* </pre><hr> * </pre><hr>
* </li> * </li>
* <li><a name="ThresholdNotification"><b>Usage Threshold Notifications</b></a> * <li><a id="ThresholdNotification"><b>Usage Threshold Notifications</b></a>
* <p> * <p>
* Usage threshold notification will be emitted by {@link MemoryMXBean}. * Usage threshold notification will be emitted by {@link MemoryMXBean}.
* When the Java virtual machine detects that the memory usage of * When the Java virtual machine detects that the memory usage of
@ -304,7 +304,7 @@ package java.lang.management;
* </li> * </li>
* </ol> * </ol>
* *
* <h3><a name="CollectionThreshold">4. Collection Usage Threshold</a></h3> * <h3><a id="CollectionThreshold">4. Collection Usage Threshold</a></h3>
* *
* Collection usage threshold is a manageable attribute only applicable * Collection usage threshold is a manageable attribute only applicable
* to some garbage-collected memory pools. * to some garbage-collected memory pools.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2017, 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,10 +36,11 @@ import sun.management.MemoryUsageCompositeData;
* the heap or non-heap memory of the Java virtual machine as a whole. * the heap or non-heap memory of the Java virtual machine as a whole.
* *
* <p> A {@code MemoryUsage} object contains four values: * <p> A {@code MemoryUsage} object contains four values:
* <table summary="Describes the MemoryUsage object content"> * <table>
* <caption style="display:none">Describes the MemoryUsage object content</caption>
* <tr> * <tr>
* <td valign=top> {@code init} </td> * <td style="vertical-align:top"> {@code init} </td>
* <td valign=top> represents the initial amount of memory (in bytes) that * <td style="vertical-align:top"> represents the initial amount of memory (in bytes) that
* the Java virtual machine requests from the operating system * the Java virtual machine requests from the operating system
* for memory management during startup. The Java virtual machine * for memory management during startup. The Java virtual machine
* may request additional memory from the operating system and * may request additional memory from the operating system and
@ -48,13 +49,13 @@ import sun.management.MemoryUsageCompositeData;
* </td> * </td>
* </tr> * </tr>
* <tr> * <tr>
* <td valign=top> {@code used} </td> * <td style="vertical-align:top"> {@code used} </td>
* <td valign=top> represents the amount of memory currently used (in bytes). * <td style="vertical-align:top"> represents the amount of memory currently used (in bytes).
* </td> * </td>
* </tr> * </tr>
* <tr> * <tr>
* <td valign=top> {@code committed} </td> * <td style="vertical-align:top"> {@code committed} </td>
* <td valign=top> represents the amount of memory (in bytes) that is * <td style="vertical-align:top"> represents the amount of memory (in bytes) that is
* guaranteed to be available for use by the Java virtual machine. * guaranteed to be available for use by the Java virtual machine.
* The amount of committed memory may change over time (increase * The amount of committed memory may change over time (increase
* or decrease). The Java virtual machine may release memory to * or decrease). The Java virtual machine may release memory to
@ -64,8 +65,8 @@ import sun.management.MemoryUsageCompositeData;
* </td> * </td>
* </tr> * </tr>
* <tr> * <tr>
* <td valign=top> {@code max} </td> * <td style="vertical-align:top"> {@code max} </td>
* <td valign=top> represents the maximum amount of memory (in bytes) * <td style="vertical-align:top"> represents the maximum amount of memory (in bytes)
* that can be used for memory management. Its value may be undefined. * that can be used for memory management. Its value may be undefined.
* The maximum amount of memory may change over time if defined. * The maximum amount of memory may change over time if defined.
* The amount of used and committed memory will always be less than * The amount of used and committed memory will always be less than
@ -252,10 +253,11 @@ public class MemoryUsage {
* must contain the following attributes: * must contain the following attributes:
* *
* <blockquote> * <blockquote>
* <table border summary="The attributes and the types the given CompositeData contains"> * <table border="1">
* <caption style="display:none">The attributes and the types the given CompositeData contains</caption>
* <tr> * <tr>
* <th align=left>Attribute Name</th> * <th style="text-align:left">Attribute Name</th>
* <th align=left>Type</th> * <th style="text-align:left">Type</th>
* </tr> * </tr>
* <tr> * <tr>
* <td>init</td> * <td>init</td>

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2017, 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
@ -106,10 +106,11 @@ public class MonitorInfo extends LockInfo {
* <a href="LockInfo.html#MappedType"> * <a href="LockInfo.html#MappedType">
* mapped type</a> for the {@link LockInfo} class: * mapped type</a> for the {@link LockInfo} class:
* <blockquote> * <blockquote>
* <table border summary="The attributes and their types the given CompositeData contains"> * <table border="1">
* <caption style="display:none">The attributes and their types the given CompositeData contains</caption>
* <tr> * <tr>
* <th align=left>Attribute Name</th> * <th style="text-align:left">Attribute Name</th>
* <th align=left>Type</th> * <th style="text-align:left">Type</th>
* </tr> * </tr>
* <tr> * <tr>
* <td>lockedStackFrame</td> * <td>lockedStackFrame</td>

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2017, 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
@ -312,7 +312,8 @@ public interface RuntimeMXBean extends PlatformManagedObject {
* {@link javax.management.openmbean.TabularData TabularData} * {@link javax.management.openmbean.TabularData TabularData}
* with two items in each row as follows: * with two items in each row as follows:
* <blockquote> * <blockquote>
* <table border summary="Name and Type for each item"> * <table border="1">
* <caption style="display:none">Name and Type for each item</caption>
* <tr> * <tr>
* <th>Item Name</th> * <th>Item Name</th>
* <th>Item Type</th> * <th>Item Type</th>

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2017, 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
@ -61,7 +61,7 @@ import static java.lang.Thread.State.*;
* <li>Thread priority</li> * <li>Thread priority</li>
* </ul> * </ul>
* *
* <h4><a name="SyncStats">Synchronization Statistics</a></h4> * <h4><a id="SyncStats">Synchronization Statistics</a></h4>
* <ul> * <ul>
* <li>The number of times that the thread has blocked for * <li>The number of times that the thread has blocked for
* synchronization or waited for notification.</li> * synchronization or waited for notification.</li>
@ -695,10 +695,11 @@ public class ThreadInfo {
* The given {@code CompositeData} must contain the following attributes * The given {@code CompositeData} must contain the following attributes
* unless otherwise specified below: * unless otherwise specified below:
* <blockquote> * <blockquote>
* <table border summary="The attributes and their types the given CompositeData contains"> * <table border="1">
* <caption style="display:none">The attributes and their types the given CompositeData contains</caption>
* <tr> * <tr>
* <th align=left>Attribute Name</th> * <th style="text-align:left">Attribute Name</th>
* <th align=left>Type</th> * <th style="text-align:left">Type</th>
* </tr> * </tr>
* <tr> * <tr>
* <td>threadId</td> * <td>threadId</td>
@ -759,16 +760,17 @@ public class ThreadInfo {
* <td>{@code java.lang.String}</td> * <td>{@code java.lang.String}</td>
* </tr> * </tr>
* <tr> * <tr>
* <td><a name="StackTrace">stackTrace</a></td> * <td><a id="StackTrace">stackTrace</a></td>
* <td>{@code javax.management.openmbean.CompositeData[]} * <td>{@code javax.management.openmbean.CompositeData[]}
* <p> * <p>
* Each element is a {@code CompositeData} representing * Each element is a {@code CompositeData} representing
* StackTraceElement containing the following attributes: * StackTraceElement containing the following attributes:
* <blockquote> * <blockquote>
* <table cellspacing=1 cellpadding=0 summary="The attributes and their types the given CompositeData contains"> * <table cellspacing=1 cellpadding=0>
* <caption style="display:none">The attributes and their types the given CompositeData contains</caption>
* <tr> * <tr>
* <th align=left>Attribute Name</th> * <th style="text-align:left">Attribute Name</th>
* <th align=left>Type</th> * <th style="text-align:left">Type</th>
* </tr> * </tr>
* <tr> * <tr>
* <td>moduleName</td> * <td>moduleName</td>

View File

@ -32,7 +32,7 @@ Java virtual machine and other components in the Java runtime.
It allows both local and remote It allows both local and remote
monitoring and management of the running Java virtual machine. monitoring and management of the running Java virtual machine.
<h4><a name="MXBean">Platform MXBean</a></h4> <h3><a id="MXBean">Platform MXBean</a></h3>
<p> <p>
A platform MXBean is a <i>managed bean</i> that A platform MXBean is a <i>managed bean</i> that
conforms to the <a href="../../../javax/management/package-summary.html">JMX</a> conforms to the <a href="../../../javax/management/package-summary.html">JMX</a>
@ -40,7 +40,7 @@ Instrumentation Specification and only uses a set of basic data types.
Each platform MXBean is a {@link java.lang.management.PlatformManagedObject} Each platform MXBean is a {@link java.lang.management.PlatformManagedObject}
with a unique with a unique
{@linkplain java.lang.management.PlatformManagedObject#getObjectName name}. {@linkplain java.lang.management.PlatformManagedObject#getObjectName name}.
<h4>ManagementFactory</h4> <h3>ManagementFactory</h3>
<p>The {@link java.lang.management.ManagementFactory} class is the management <p>The {@link java.lang.management.ManagementFactory} class is the management
factory class for the Java platform. This class provides a set of factory class for the Java platform. This class provides a set of
@ -58,7 +58,7 @@ the specification of the management interface.
This is a single MBeanServer that can be shared by different managed This is a single MBeanServer that can be shared by different managed
components running within the same Java virtual machine. components running within the same Java virtual machine.
<h4>Interoperability</h4> <h3>Interoperability</h3>
<p>A management application and a platform MBeanServer of a running <p>A management application and a platform MBeanServer of a running
virtual machine can interoperate virtual machine can interoperate
@ -72,7 +72,7 @@ open type when being accessed via MBeanServer interface.
See the <a href="../../../javax/management/MXBean.html#MXBean-spec"> See the <a href="../../../javax/management/MXBean.html#MXBean-spec">
MXBean</a> specification for details. MXBean</a> specification for details.
<h4><a name="examples">Ways to Access MXBeans</a></h4> <h3><a id="examples">Ways to Access MXBeans</a></h3>
<p>An application can monitor the instrumentation of the <p>An application can monitor the instrumentation of the
Java virtual machine and the runtime in the following ways: Java virtual machine and the runtime in the following ways:
@ -163,7 +163,7 @@ Java virtual machine and the runtime in the following ways:
</ul> </ul>
<h4><a name="extension">Platform Extension</a></h4> <h3><a id="extension">Platform Extension</a></h3>
<p>A Java virtual machine implementation may add its platform extension to <p>A Java virtual machine implementation may add its platform extension to
the management interface by defining platform-dependent the management interface by defining platform-dependent

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2017, 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
@ -96,7 +96,8 @@ import javax.management.openmbean.OpenType;
* of the mapped Java type, called <em>opendata</em>(J) in the <a * of the mapped Java type, called <em>opendata</em>(J) in the <a
* href="MXBean.html#mapping-rules">MXBean type mapping rules</a>.</p> * href="MXBean.html#mapping-rules">MXBean type mapping rules</a>.</p>
* *
* <table border="1" cellpadding="5" summary="Descriptor Fields"> * <table border="1" cellpadding="5">
* <caption style="display:none">Descriptor Fields</caption>
* *
* <tr><th>Name</th><th>Type</th><th>Used in</th><th>Meaning</th></tr> * <tr><th>Name</th><th>Type</th><th>Used in</th><th>Meaning</th></tr>
* *
@ -330,7 +331,8 @@ import javax.management.openmbean.OpenType;
* interest outside Model MBeans, for example. But only Model MBeans have * interest outside Model MBeans, for example. But only Model MBeans have
* a predefined behavior for these fields.</p> * a predefined behavior for these fields.</p>
* *
* <table border="1" cellpadding="5" summary="ModelMBean Fields"> * <table border="1" cellpadding="5">
* <caption style="display:none">ModelMBean Fields</caption>
* *
* <tr><th>Name</th><th>Type</th><th>Used in</th><th>Meaning</th></tr> * <tr><th>Name</th><th>Type</th><th>Used in</th><th>Meaning</th></tr>
* *

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2017, 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
@ -94,7 +94,8 @@ import java.lang.annotation.*;
* <p>then the resulting {@code Descriptor} will contain the following * <p>then the resulting {@code Descriptor} will contain the following
* fields:</p> * fields:</p>
* *
* <table border="2" summary="Descriptor Fields"> * <table border="1">
* <caption style="display:none">Descriptor Fields</caption>
* <tr><th>Name</th><th>Value</th></tr> * <tr><th>Name</th><th>Value</th></tr>
* <tr><td>units</td><td>"bytes"</td></tr> * <tr><td>units</td><td>"bytes"</td></tr>
* <tr><td>descriptionResourceKey</td><td>"bytes.key"</td></tr> * <tr><td>descriptionResourceKey</td><td>"bytes.key"</td></tr>
@ -143,7 +144,8 @@ import java.lang.annotation.*;
* or an array of annotations. The value of the field is derived from * or an array of annotations. The value of the field is derived from
* the value of the annotation element as follows:</p> * the value of the annotation element as follows:</p>
* *
* <table border="2" summary="Descriptor Field Types"> * <table border="1">
* <caption style="display:none">Descriptor Field Types</caption>
* <tr><th>Annotation element</th><th>Descriptor field</th></tr> * <tr><th>Annotation element</th><th>Descriptor field</th></tr>
* <tr><td>Primitive value ({@code 5}, {@code false}, etc)</td> * <tr><td>Primitive value ({@code 5}, {@code false}, etc)</td>
* <td>Wrapped value ({@code Integer.valueOf(5)}, * <td>Wrapped value ({@code Integer.valueOf(5)},

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2017, 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
@ -133,7 +133,7 @@ import java.security.Permission;
* any value (including another null value) but does not imply any * any value (including another null value) but does not imply any
* other value.</p> * other value.</p>
* *
* <p><a name="action-list">The possible actions are these:</a></p> * <p><a id="action-list">The possible actions are these:</a></p>
* *
* <ul> * <ul>
* <li>addNotificationListener</li> * <li>addNotificationListener</li>

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2017, 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
@ -93,7 +93,8 @@ import javax.management.openmbean.TabularType;
Standard MBean concept. Here is how a managed object might be Standard MBean concept. Here is how a managed object might be
represented as a Standard MBean, and as an MXBean:</p> represented as a Standard MBean, and as an MXBean:</p>
<table border="1" cellpadding="5" summary="Standard Bean vs. MXBean"> <table border="1" cellpadding="5">
<caption style="display:none">Standard Bean vs. MXBean</caption>
<tr> <tr>
<th>Standard MBean</th><th>MXBean</th> <th>Standard MBean</th><th>MXBean</th>
</tr> </tr>
@ -133,7 +134,8 @@ public interface MemoryPool<b>MXBean</b> {
<p>So, we might define <code>MemoryUsage</code> like this:</p> <p>So, we might define <code>MemoryUsage</code> like this:</p>
<table border="1" cellpadding="5" summary="Standard Bean vs. MXBean"> <table border="1" cellpadding="5">
<caption style="display:none">Standard Bean vs. MXBean</caption>
<tr> <tr>
<th>Standard MBean</th><th>MXBean</th> <th>Standard MBean</th><th>MXBean</th>
</tr> </tr>
@ -195,7 +197,8 @@ public class MemoryUsage {
<p>This becomes clearer if we compare what the clients of the two <p>This becomes clearer if we compare what the clients of the two
models might look like:</p> models might look like:</p>
<table border="1" cellpadding="5" summary="Standard Bean vs. MXBean"> <table border="1" cellpadding="5">
<caption style="display:none">Standard Bean vs. MXBean</caption>
<tr> <tr>
<th>Standard MBean</th><th>MXBean</th> <th>Standard MBean</th><th>MXBean</th>
</tr> </tr>
@ -232,7 +235,8 @@ String name = (String)
managed objects when you know the model beforehand, regardless managed objects when you know the model beforehand, regardless
of whether you are using Standard MBeans or MXBeans:</p> of whether you are using Standard MBeans or MXBeans:</p>
<table border="1" cellpadding="5" summary="Standard Bean vs. MXBean"> <table border="1" cellpadding="5">
<caption style="display:none">Standard Bean vs. MXBean</caption>
<tr> <tr>
<th>Standard MBean</th><th>MXBean</th> <th>Standard MBean</th><th>MXBean</th>
</tr> </tr>
@ -265,7 +269,8 @@ long used = usage.getUsed();
<p>Implementing the MemoryPool object works similarly for both <p>Implementing the MemoryPool object works similarly for both
Standard MBeans and MXBeans.</p> Standard MBeans and MXBeans.</p>
<table border="1" cellpadding="5" summary="Standard Bean vs. MXBean"> <table border="1" cellpadding="5">
<caption style="display:none">Standard Bean vs. MXBean</caption>
<tr> <tr>
<th>Standard MBean</th><th>MXBean</th> <th>Standard MBean</th><th>MXBean</th>
</tr> </tr>
@ -292,7 +297,8 @@ public class MemoryPool
<p>Registering the MBean in the MBean Server works in the same way <p>Registering the MBean in the MBean Server works in the same way
in both cases:</p> in both cases:</p>
<table border="1" cellpadding="5" summary="Standard Bean vs. MXBean"> <table border="1" cellpadding="5">
<caption style="display:none">Standard Bean vs. MXBean</caption>
<tr> <tr>
<th>Standard MBean</th><th>MXBean</th> <th>Standard MBean</th><th>MXBean</th>
</tr> </tr>
@ -478,13 +484,14 @@ public class MemoryPool
<p>The following table summarizes the type mapping rules.</p> <p>The following table summarizes the type mapping rules.</p>
<table border="1" cellpadding="5" summary="Type Mapping Rules"> <table border="1" cellpadding="5">
<caption style="display:none">Type Mapping Rules</caption>
<tr> <tr>
<th>Java type <em>J</em></th> <th>Java type <em>J</em></th>
<th><em>opentype(J)</em></th> <th><em>opentype(J)</em></th>
<th><em>opendata(J)</em></th> <th><em>opendata(J)</em></th>
</tr> </tr>
<tbody valign="top"> <tbody style="vertical-align:top">
<tr> <tr>
<td>{@code int}, {@code boolean}, etc<br> <td>{@code int}, {@code boolean}, etc<br>
(the 8 primitive Java types)</td> (the 8 primitive Java types)</td>

View File

@ -57,7 +57,8 @@ import javax.management.RuntimeOperationsException;
* Note that when the Type in this table is Number, a String that is the decimal * Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.</P> * representation of a Long can also be used.</P>
* *
* <table border="1" cellpadding="5" summary="ModelMBeanAttributeInfo Fields"> * <table border="1" cellpadding="5">
* <caption style="display:none">ModelMBeanAttributeInfo Fields</caption>
* <tr><th>Name</th><th>Type</th><th>Meaning</th></tr> * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
* <tr><td>name</td><td>String</td> * <tr><td>name</td><td>String</td>
* <td>Attribute name.</td></tr> * <td>Attribute name.</td></tr>

View File

@ -58,7 +58,8 @@ import javax.management.RuntimeOperationsException;
* Note that when the Type in this table is Number, a String that is the decimal * Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.</P> * representation of a Long can also be used.</P>
* *
* <table border="1" cellpadding="5" summary="ModelMBeanConstructorInfo Fields"> * <table border="1" cellpadding="5">
* <caption style="display:none">ModelMBeanConstructorInfo Fields</caption>
* <tr><th>Name</th><th>Type</th><th>Meaning</th></tr> * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
* <tr><td>name</td><td>String</td> * <tr><td>name</td><td>String</td>
* <td>Constructor name.</td></tr> * <td>Constructor name.</td></tr>

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2017, 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
@ -165,7 +165,8 @@ public interface ModelMBeanInfo
* following. Note that when the Type in this table is Number, a String * following. Note that when the Type in this table is Number, a String
* that is the decimal representation of a Long can also be used.</P> * that is the decimal representation of a Long can also be used.</P>
* *
* <table border="1" cellpadding="5" summary="ModelMBean Fields"> * <table border="1" cellpadding="5">
* <caption style="display:none">ModelMBean Fields</caption>
* <tr><th>Name</th><th>Type</th><th>Meaning</th></tr> * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
* <tr><td>name</td><td>String</td> * <tr><td>name</td><td>String</td>
* <td>MBean name.</td></tr> * <td>MBean name.</td></tr>

View File

@ -56,7 +56,8 @@ import javax.management.RuntimeOperationsException;
* Note that when the Type in this table is Number, a String that is the decimal * Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.</P> * representation of a Long can also be used.</P>
* *
* <table border="1" cellpadding="5" summary="ModelMBeanNotificationInfo Fields"> * <table border="1" cellpadding="5">
* <caption style="display:none">ModelMBeanNotificationInfo Fields</caption>
* <tr><th>Name</th><th>Type</th><th>Meaning</th></tr> * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
* <tr><td>name</td><td>String</td> * <tr><td>name</td><td>String</td>
* <td>Notification name.</td></tr> * <td>Notification name.</td></tr>

View File

@ -59,7 +59,8 @@ import javax.management.RuntimeOperationsException;
* Note that when the Type in this table is Number, a String that is the decimal * Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.</P> * representation of a Long can also be used.</P>
* *
* <table border="1" cellpadding="5" summary="ModelMBeanOperationInfo Fields"> * <table border="1" cellpadding="5">
* <caption style="display:none">ModelMBeanOperationInfo Fields</caption>
* <tr><th>Name</th><th>Type</th><th>Meaning</th></tr> * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
* <tr><td>name</td><td>String</td> * <tr><td>name</td><td>String</td>
* <td>Operation name.</td></tr> * <td>Operation name.</td></tr>

View File

@ -110,7 +110,7 @@ mbs.invoke(mapName, "get", new Object[] {"key"}, new String[] {Object.class.getN
// returns "value" // returns "value"
</pre> </pre>
<h2><a name="spec">Package Specification</a></h2> <h2><a id="spec">Package Specification</a></h2>
<ul> <ul>
<li>See the <i>JMX 1.4 Specification</i> <li>See the <i>JMX 1.4 Specification</i>

View File

@ -77,7 +77,7 @@ questions.
describes the items in the <code>CompositeData</code> instances describes the items in the <code>CompositeData</code> instances
for the attribute.</p> for the attribute.</p>
<h2><a name="constraints">Default values and constraints</a></h2> <h2><a id="constraints">Default values and constraints</a></h2>
<p>In Open MBeans, attributes and parameters can have default values <p>In Open MBeans, attributes and parameters can have default values
and/or constraints associated with them in the {@code and/or constraints associated with them in the {@code

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2017, 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
@ -40,11 +40,12 @@ import javax.management.ObjectName;
* *
* <p>The notification type is one of the following:</p> * <p>The notification type is one of the following:</p>
* *
* <table summary="JMXConnectionNotification Types"> * <table>
* <caption style="display:none">JMXConnectionNotification Types</caption>
* *
* <tr> * <tr>
* <th align=left>Type</th> * <th style="text-align:left">Type</th>
* <th align=left>Meaning</th> * <th style="text-align:left">Meaning</th>
* </tr> * </tr>
* *
* <tr> * <tr>

View File

@ -24,7 +24,6 @@
/* /*
* @test * @test
* @bug 6402006 7030573 8011136 * @bug 6402006 7030573 8011136
* @key intermittent
* @summary Test if available returns correct value when reading * @summary Test if available returns correct value when reading
* a large file. * a large file.
* @run main/timeout=300 LargeFileAvailable * @run main/timeout=300 LargeFileAvailable

View File

@ -0,0 +1,96 @@
/*
* Copyright (c) 2017, 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 8177146
* @run testng/othervm TestMethodHandleBind
*/
import org.testng.annotations.Test;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodType;
import static java.lang.invoke.MethodHandles.lookup;
import static org.testng.Assert.*;
public class TestMethodHandleBind extends pkg.A {
static class B extends TestMethodHandleBind {}
@Test
public void testInstanceOfCallerClass() throws Throwable {
MethodHandle bound = lookup().bind(new TestMethodHandleBind() , "m1", MethodType.methodType(String.class));
String x = (String)bound.invoke();
assertEquals(x, this.getClass().getSimpleName());
}
@Test
public void testInstanceOfCallerSubclass() throws Throwable {
MethodHandle bound = lookup().bind(new B() , "m1", MethodType.methodType(String.class));
// MethodHandle bound = lookup().findVirtual(B.class, "m1", MethodType.methodType(String.class)).bindTo(new B());
String x = (String)bound.invoke();
assertEquals(x, "B");
}
@Test
public void testInstanceOfReceiverClass() throws Throwable {
try {
MethodHandle bound = lookup().bind(new pkg.A() , "m1", MethodType.methodType(String.class));
bound.invoke();
fail("IllegalAccessException expected");
} catch (IllegalAccessException e) {
}
}
@Test
public void testPublicMethod() throws Throwable {
MethodHandle bound = lookup().bind(new pkg.A() , "m2", MethodType.methodType(String.class));
String x = (String)bound.invoke();
assertEquals(x, "A");
}
@Test
public void testPublicMethod2() throws Throwable {
MethodHandle bound = lookup().bind(new TestMethodHandleBind(), "m2", MethodType.methodType(String.class));
String x = (String)bound.invoke();
assertEquals(x, this.getClass().getSimpleName());
}
@Test
public void testInstanceOfCallerClassVarargs() throws Throwable {
MethodHandle bound = lookup().bind(new TestMethodHandleBind() , "m3", MethodType.methodType(String.class, String[].class));
String x = (String)bound.invoke("a", "b", "c");
assertEquals(x, this.getClass().getSimpleName() + "abc");
}
@Test
public void testInstanceOfReceiverClassVarargs() throws Throwable {
try {
MethodHandle bound = lookup().bind(new pkg.A(), "m3", MethodType.methodType(String.class, String[].class));
bound.invoke();
fail("IllegalAccessException expected");
} catch (IllegalAccessException e) {
}
}
}

View File

@ -0,0 +1,40 @@
/*
* Copyright (c) 2017, 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.
*/
package pkg;
public class A {
protected String m1() {
return this.getClass().getSimpleName();
}
public String m2() {
return this.getClass().getSimpleName();
}
protected String m3(String... args) {
StringBuilder sb = new StringBuilder();
for (String s : args)
sb.append(s);
return this.getClass().getSimpleName() + sb.toString();
}
}

View File

@ -24,7 +24,6 @@
/** /**
* @test * @test
* @bug 8137121 8137230 * @bug 8137121 8137230
* @key intermittent
* @summary (fc) Infinite loop FileChannel.truncate * @summary (fc) Infinite loop FileChannel.truncate
* @library /lib/testlibrary * @library /lib/testlibrary
* @build jdk.testlibrary.Utils * @build jdk.testlibrary.Utils

View File

@ -23,7 +23,6 @@
/* @test /* @test
* @bug 4434723 4482726 4559072 4795550 5081340 5103988 6984545 * @bug 4434723 4482726 4559072 4795550 5081340 5103988 6984545
* @key intermittent
* @summary Test FileChannel.transferFrom and transferTo (use -Dseed=X to set PRNG seed) * @summary Test FileChannel.transferFrom and transferTo (use -Dseed=X to set PRNG seed)
* @library .. * @library ..
* @library /lib/testlibrary/ * @library /lib/testlibrary/

View File

@ -22,7 +22,6 @@
*/ */
/* @test /* @test
* @key intermittent
* @summary Comprehensive test for FileChannel.transfer{From,To} * @summary Comprehensive test for FileChannel.transfer{From,To}
* @bug 4708120 * @bug 4708120
* @author Mark Reinhold * @author Mark Reinhold