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
* {@code T} declared by a receiver class of type {@code R}, supporting
* shape {@code (R : T)}.
* Produces a VarHandle giving access to a non-static field {@code name}
* of type {@code type} declared in a class of type {@code recv}.
* The VarHandle's variable type is {@code type} and it has one
* coordinate type, {@code recv}.
* <p>
* Access checking is performed immediately on behalf of the lookup
* class.
@ -1472,7 +1473,7 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method
* <p>
* If the field is declared {@code volatile} then the returned VarHandle
* 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.
* <p>
* 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
* {@code T} declared by a given declaring class, supporting shape
* {@code ((empty) : T)}.
* Produces a VarHandle giving access to a static field {@code name} of
* type {@code type} declared in a class of type {@code decl}.
* The VarHandle's variable type is {@code type} and it has no
* coordinate types.
* <p>
* Access checking is performed immediately on behalf of the lookup
* class.
@ -1596,7 +1598,7 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method
* <p>
* If the field is declared {@code volatile} then the returned VarHandle
* 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.
* <p>
* 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 {
Class<? extends Object> refc = receiver.getClass(); // may get NPE
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);
}
@ -1877,11 +1885,12 @@ return mh1;
}
/**
* Produces a VarHandle that accesses fields of type {@code T} declared
* by a class of type {@code R}, as described by the given reflected
* field.
* If the field is non-static the VarHandle supports a shape of
* {@code (R : T)}, otherwise supports a shape of {@code ((empty) : T)}.
* Produces a VarHandle giving access to a reflected field {@code f}
* of type {@code T} declared in a class of type {@code R}.
* The VarHandle's variable type is {@code T}.
* If the field is non-static the VarHandle has one coordinate type,
* {@code R}. Otherwise, the field is static, and the VarHandle has no
* coordinate types.
* <p>
* Access checking is performed immediately on behalf of the lookup
* class, regardless of the value of the field's {@code accessible}
@ -1909,7 +1918,7 @@ return mh1;
* <p>
* If the field is declared {@code volatile} then the returned VarHandle
* 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.
* <p>
* 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);
}
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);
assert(!mh.isVarargsCollector()); // viewAsType will lose varargs-ness
assert(mh.viewAsTypeChecks(narrowType, true));
@ -2253,11 +2262,11 @@ return mh1;
final boolean checkSecurity = true;
return getDirectMethodCommon(refKind, refc, method, checkSecurity, doRestrict, callerClass);
}
/** Check access and get the requested method, eliding receiver narrowing rules. */
private MethodHandle getDirectMethodNoRestrict(byte refKind, Class<?> refc, MemberName method, Class<?> callerClass) throws IllegalAccessException {
/** Check access and get the requested method, for invokespecial with no restriction on the application of narrowing rules. */
private MethodHandle getDirectMethodNoRestrictInvokeSpecial(Class<?> refc, MemberName method, Class<?> callerClass) throws IllegalAccessException {
final boolean doRestrict = false;
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. */
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);
MethodHandle mh = dmh;
// Optionally narrow the receiver argument to refc using restrictReceiver.
if (doRestrict &&
(refKind == REF_invokeSpecial ||
(MethodHandleNatives.refKindHasReceiver(refKind) &&
restrictProtectedReceiver(method)))) {
if ((doRestrict && refKind == REF_invokeSpecial) ||
(MethodHandleNatives.refKindHasReceiver(refKind) && restrictProtectedReceiver(method))) {
mh = restrictReceiver(method, dmh, lookupClass());
}
mh = maybeBindCaller(method, mh, callerClass);
@ -2572,9 +2579,11 @@ return mh1;
}
/**
*
* Produces a VarHandle giving access to elements of an array type
* {@code T[]}, supporting shape {@code (T[], int : T)}.
* Produces a VarHandle giving access to elements of an array of type
* {@code arrayClass}. The VarHandle's variable type is the component type
* 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>
* Certain access modes of the returned VarHandle are unsupported under
* the following conditions:
@ -2629,13 +2638,14 @@ return mh1;
/**
* Produces a VarHandle giving access to elements of a {@code byte[]} array
* 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 (byte[], int : T)}, where the {@code int} coordinate type
* corresponds to an argument that is an index in a {@code byte[]} array,
* and {@code T} is the component type of the given view array class. The
* returned VarHandle accesses bytes at an index in a {@code byte[]} array,
* composing bytes to or from a value of {@code T} according to the given
* endianness.
* {@code int[]} or {@code long[]}.
* The VarHandle's variable type is the component type of
* {@code viewArrayClass} and the list of coordinate types is
* {@code (byte[], int)}, where the {@code int} coordinate type
* corresponds to an argument that is an index into a {@code byte[]} array.
* The returned VarHandle accesses bytes at an index in a {@code byte[]}
* array, composing bytes to or from a value of the component type of
* {@code viewArrayClass} according to the given endianness.
* <p>
* The supported component types (variables types) are {@code short},
* {@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}
* 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
* {@code long[]}. The shape of the resulting VarHandle is
* {@code (ByteBuffer, int : T)}, where the {@code int} coordinate type
* corresponds to an argument that is an index in a {@code ByteBuffer}, and
* {@code T} is the component type of the given view array class. The
* returned VarHandle accesses bytes at an index in a {@code ByteBuffer},
* composing bytes to or from a value of {@code T} according to the given
* endianness.
* {@code long[]}.
* The VarHandle's variable type is the component type of
* {@code viewArrayClass} and the list of coordinate types is
* {@code (ByteBuffer, int)}, where the {@code int} coordinate type
* corresponds to an argument that is an index into a {@code byte[]} array.
* The returned VarHandle accesses bytes at an index in a
* {@code ByteBuffer}, composing bytes to or from a value of the component
* type of {@code viewArrayClass} according to the given endianness.
* <p>
* The supported component types (variables types) are {@code short},
* {@code char}, {@code int}, {@code long}, {@code float} and

View File

@ -98,7 +98,7 @@ questions.
constructor.</p>
<h4><a name="servergen">Connector addresses generated by the
<h4><a id="servergen">Connector addresses generated by the
server</a></h4>
<p>If the <code>serviceURL</code> you specify has an empty URL
@ -157,7 +157,7 @@ questions.
<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>
<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}
* object associated with synchronizers.
* <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
* {@link AbstractOwnableSynchronizer AbstractOwnableSynchronizer}
* (or its subclass) to implement its synchronization property.
@ -42,7 +42,7 @@ import sun.management.LockInfoCompositeData;
* the read-lock) of {@link ReentrantReadWriteLock ReentrantReadWriteLock} are
* 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}
* as specified in the {@link #from from} method.
*
@ -105,10 +105,11 @@ public class LockInfo {
* given {@code CompositeData}.
* The given {@code CompositeData} must contain the following attributes:
* <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>
* <th align=left>Attribute Name</th>
* <th align=left>Type</th>
* <th style="text-align:left">Attribute Name</th>
* <th style="text-align:left">Type</th>
* </tr>
* <tr>
* <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.
*
* 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
* machine.
*
* <h3><a name="MXBean">Platform MXBeans</a></h3>
* <h3><a id="MXBean">Platform MXBeans</a></h3>
* <p>
* A platform MXBean is a <i>managed bean</i> that
* 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">
* the specification of MXBeans</a> for details.
*
* <a name="MXBeanNames"></a>
* <a id="MXBeanNames"></a>
* <p>Each platform MXBean is a {@link PlatformManagedObject}
* and it has a unique
* {@link javax.management.ObjectName ObjectName} for
@ -141,7 +141,8 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* interfaces:
*
* <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>
* <th>Management Interface</th>
* <th>ObjectName</th>
@ -184,7 +185,8 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* the following management interfaces.
*
* <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>
* <th>Management Interface</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
* management interfaces.
* <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>
* <th>Management Interface</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.
*
* 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,
* 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>
* <th>Permission Target Name</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.
*
* 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 following attributes:
* <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>
* <th align=left>Attribute Name</th>
* <th align=left>Type</th>
* <th style="text-align:left">Attribute Name</th>
* <th style="text-align:left">Type</th>
* </tr>
* <tr>
* <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.
*
* 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>
* </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
* 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
* 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
* pool since the virtual machine was started or the peak was reset.
* The peak memory usage is returned by the {@link #getPeakUsage} 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
* 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.
*
* <ol type="a">
* <li><a name="Polling"><b>Polling</b></a>
* <li><a id="Polling"><b>Polling</b></a>
* <p>
* An application can continuously monitor its memory usage
* by calling either the {@link #getUsage} method for all
@ -231,7 +231,7 @@ package java.lang.management;
* }
* </pre><hr>
* </li>
* <li><a name="ThresholdNotification"><b>Usage Threshold Notifications</b></a>
* <li><a id="ThresholdNotification"><b>Usage Threshold Notifications</b></a>
* <p>
* Usage threshold notification will be emitted by {@link MemoryMXBean}.
* When the Java virtual machine detects that the memory usage of
@ -304,7 +304,7 @@ package java.lang.management;
* </li>
* </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
* 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.
*
* 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.
*
* <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>
* <td valign=top> {@code init} </td>
* <td valign=top> represents the initial amount of memory (in bytes) that
* <td style="vertical-align:top"> {@code init} </td>
* <td style="vertical-align:top"> represents the initial amount of memory (in bytes) that
* the Java virtual machine requests from the operating system
* for memory management during startup. The Java virtual machine
* may request additional memory from the operating system and
@ -48,13 +49,13 @@ import sun.management.MemoryUsageCompositeData;
* </td>
* </tr>
* <tr>
* <td valign=top> {@code used} </td>
* <td valign=top> represents the amount of memory currently used (in bytes).
* <td style="vertical-align:top"> {@code used} </td>
* <td style="vertical-align:top"> represents the amount of memory currently used (in bytes).
* </td>
* </tr>
* <tr>
* <td valign=top> {@code committed} </td>
* <td valign=top> represents the amount of memory (in bytes) that is
* <td style="vertical-align:top"> {@code committed} </td>
* <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.
* The amount of committed memory may change over time (increase
* or decrease). The Java virtual machine may release memory to
@ -64,8 +65,8 @@ import sun.management.MemoryUsageCompositeData;
* </td>
* </tr>
* <tr>
* <td valign=top> {@code max} </td>
* <td valign=top> represents the maximum amount of memory (in bytes)
* <td style="vertical-align:top"> {@code max} </td>
* <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.
* The maximum amount of memory may change over time if defined.
* The amount of used and committed memory will always be less than
@ -252,10 +253,11 @@ public class MemoryUsage {
* must contain the following attributes:
*
* <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>
* <th align=left>Attribute Name</th>
* <th align=left>Type</th>
* <th style="text-align:left">Attribute Name</th>
* <th style="text-align:left">Type</th>
* </tr>
* <tr>
* <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.
*
* 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">
* mapped type</a> for the {@link LockInfo} class:
* <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>
* <th align=left>Attribute Name</th>
* <th align=left>Type</th>
* <th style="text-align:left">Attribute Name</th>
* <th style="text-align:left">Type</th>
* </tr>
* <tr>
* <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.
*
* 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}
* with two items in each row as follows:
* <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>
* <th>Item Name</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.
*
* 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>
* </ul>
*
* <h4><a name="SyncStats">Synchronization Statistics</a></h4>
* <h4><a id="SyncStats">Synchronization Statistics</a></h4>
* <ul>
* <li>The number of times that the thread has blocked for
* synchronization or waited for notification.</li>
@ -695,10 +695,11 @@ public class ThreadInfo {
* The given {@code CompositeData} must contain the following attributes
* unless otherwise specified below:
* <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>
* <th align=left>Attribute Name</th>
* <th align=left>Type</th>
* <th style="text-align:left">Attribute Name</th>
* <th style="text-align:left">Type</th>
* </tr>
* <tr>
* <td>threadId</td>
@ -759,16 +760,17 @@ public class ThreadInfo {
* <td>{@code java.lang.String}</td>
* </tr>
* <tr>
* <td><a name="StackTrace">stackTrace</a></td>
* <td><a id="StackTrace">stackTrace</a></td>
* <td>{@code javax.management.openmbean.CompositeData[]}
* <p>
* Each element is a {@code CompositeData} representing
* StackTraceElement containing the following attributes:
* <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>
* <th align=left>Attribute Name</th>
* <th align=left>Type</th>
* <th style="text-align:left">Attribute Name</th>
* <th style="text-align:left">Type</th>
* </tr>
* <tr>
* <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
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>
A platform MXBean is a <i>managed bean</i> that
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}
with a unique
{@linkplain java.lang.management.PlatformManagedObject#getObjectName name}.
<h4>ManagementFactory</h4>
<h3>ManagementFactory</h3>
<p>The {@link java.lang.management.ManagementFactory} class is the management
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
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
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">
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
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>
<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
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.
*
* 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
* 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>
*
@ -330,7 +331,8 @@ import javax.management.openmbean.OpenType;
* interest outside Model MBeans, for example. But only Model MBeans have
* 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>
*

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.
*
* 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
* 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><td>units</td><td>"bytes"</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
* 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><td>Primitive value ({@code 5}, {@code false}, etc)</td>
* <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.
*
* 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
* 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>
* <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.
*
* 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
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>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@ -133,7 +134,8 @@ public interface MemoryPool<b>MXBean</b> {
<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>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@ -195,7 +197,8 @@ public class MemoryUsage {
<p>This becomes clearer if we compare what the clients of the two
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>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@ -232,7 +235,8 @@ String name = (String)
managed objects when you know the model beforehand, regardless
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>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@ -265,7 +269,8 @@ long used = usage.getUsed();
<p>Implementing the MemoryPool object works similarly for both
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>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@ -292,7 +297,8 @@ public class MemoryPool
<p>Registering the MBean in the MBean Server works in the same way
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>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@ -478,13 +484,14 @@ public class MemoryPool
<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>
<th>Java type <em>J</em></th>
<th><em>opentype(J)</em></th>
<th><em>opendata(J)</em></th>
</tr>
<tbody valign="top">
<tbody style="vertical-align:top">
<tr>
<td>{@code int}, {@code boolean}, etc<br>
(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
* 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><td>name</td><td>String</td>
* <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
* 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><td>name</td><td>String</td>
* <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.
*
* 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
* 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><td>name</td><td>String</td>
* <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
* 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><td>name</td><td>String</td>
* <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
* 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><td>name</td><td>String</td>
* <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"
</pre>
<h2><a name="spec">Package Specification</a></h2>
<h2><a id="spec">Package Specification</a></h2>
<ul>
<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
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
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.
*
* 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>
*
* <table summary="JMXConnectionNotification Types">
* <table>
* <caption style="display:none">JMXConnectionNotification Types</caption>
*
* <tr>
* <th align=left>Type</th>
* <th align=left>Meaning</th>
* <th style="text-align:left">Type</th>
* <th style="text-align:left">Meaning</th>
* </tr>
*
* <tr>

View File

@ -24,7 +24,6 @@
/*
* @test
* @bug 6402006 7030573 8011136
* @key intermittent
* @summary Test if available returns correct value when reading
* a large file.
* @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
* @bug 8137121 8137230
* @key intermittent
* @summary (fc) Infinite loop FileChannel.truncate
* @library /lib/testlibrary
* @build jdk.testlibrary.Utils

View File

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

View File

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