diff -r 2c33418a6d57 -r 83b611b88ac8 jdk/src/java.instrument/share/classes/java/lang/instrument/Instrumentation.java --- a/jdk/src/java.instrument/share/classes/java/lang/instrument/Instrumentation.java Thu Apr 06 17:01:03 2017 +0000 +++ b/jdk/src/java.instrument/share/classes/java/lang/instrument/Instrumentation.java Fri Apr 07 08:05:54 2017 +0000 @@ -25,7 +25,6 @@ package java.lang.instrument; -import java.lang.reflect.Module; import java.security.ProtectionDomain; import java.util.List; import java.util.Map; @@ -346,7 +345,7 @@ /** - * Determines whether a class is modifiable by + * Tests whether a class is modifiable by * {@linkplain #retransformClasses retransformation} * or {@linkplain #redefineClasses redefinition}. * If a class is modifiable then this method returns true. @@ -711,8 +710,11 @@ * {@code extraProvides} map contains a service provider type that * is not a member of the module or an implementation of the service; * or {@code extraProvides} maps a key to an empty list + * @throws UnmodifiableModuleException if the module cannot be modified * @throws NullPointerException if any of the arguments are {@code null} or * any of the Sets or Maps contains a {@code null} key or value + * + * @see #isModifiableModule(Module) * @since 9 * @spec JPMS */ @@ -722,4 +724,19 @@ Map> extraOpens, Set> extraUses, Map, List>> extraProvides); + + /** + * Tests whether a module can be modified with {@link #redefineModule + * redefineModule}. If a module is modifiable then this method returns + * {@code true}. If a module is not modifiable then this method returns + * {@code false}. + * + * @param module the module to test if it can be modified + * @return {@code true} if the module is modifiable, otherwise {@code false} + * @throws NullPointerException if the module is {@code null} + * + * @since 9 + * @spec JPMS + */ + boolean isModifiableModule(Module module); }