< prev index next >
src/java.base/share/classes/jdk/internal/module/Modules.java
Print this page
*** 29,50 ****
import java.lang.reflect.Layer;
import java.lang.reflect.Module;
import java.net.URI;
import java.security.AccessController;
import java.security.PrivilegedAction;
- import java.util.Set;
import jdk.internal.loader.BootLoader;
import jdk.internal.loader.ClassLoaders;
import jdk.internal.misc.JavaLangReflectModuleAccess;
import jdk.internal.misc.SharedSecrets;
/**
! * A helper class to allow JDK classes create dynamic modules and to update
! * modules, exports and the readability graph. It is also invoked by the VM
! * to add read edges when agents are instrumenting code that need to link
! * to supporting classes.
*
* The parameters that are package names in this API are the fully-qualified
* names of the packages as defined in section 6.5.3 of <cite>The Java™
* Language Specification </cite>, for example, {@code "java.lang"}.
*/
--- 29,49 ----
import java.lang.reflect.Layer;
import java.lang.reflect.Module;
import java.net.URI;
import java.security.AccessController;
import java.security.PrivilegedAction;
import jdk.internal.loader.BootLoader;
import jdk.internal.loader.ClassLoaders;
import jdk.internal.misc.JavaLangReflectModuleAccess;
import jdk.internal.misc.SharedSecrets;
/**
! * A helper class for creating and updating modules. This class is intended to
! * support command-line options, tests, and the instrumentation API. It is also
! * used by the VM to add read edges when agents are instrumenting code that
! * need to link to supporting classes.
*
* The parameters that are package names in this API are the fully-qualified
* names of the packages as defined in section 6.5.3 of <cite>The Java™
* Language Specification </cite>, for example, {@code "java.lang"}.
*/
*** 70,157 ****
{
return JLRMA.defineModule(loader, descriptor, uri);
}
/**
! * Define a new module to the VM. The module has the given set of
! * packages and is defined to the given class loader.
! *
! * The resulting Module is in a larval state in that it does not not read
! * any other module and does not have any exports.
! */
! public static Module defineModule(ClassLoader loader,
! String name,
! Set<String> packages)
! {
! ModuleDescriptor descriptor = ModuleDescriptor.newModule(name)
! .packages(packages)
! .build();
!
! return JLRMA.defineModule(loader, descriptor, null);
! }
!
! /**
! * Adds a read-edge so that module {@code m1} reads module {@code m1}.
* Same as m1.addReads(m2) but without a caller check.
*/
public static void addReads(Module m1, Module m2) {
JLRMA.addReads(m1, m2);
}
/**
! * Update module {@code m} to read all unnamed modules.
*/
public static void addReadsAllUnnamed(Module m) {
JLRMA.addReadsAllUnnamed(m);
}
/**
! * Updates module m1 to export a package to module m2.
! * Same as m1.addExports(pn, m2) but without a caller check.
*/
! public static void addExports(Module m1, String pn, Module m2) {
! JLRMA.addExports(m1, pn, m2);
}
/**
! * Updates module m1 to open a package to module m2.
! * Same as m1.addOpens(pn, m2) but without a caller check.
*/
! public static void addOpens(Module m1, String pn, Module m2) {
! JLRMA.addOpens(m1, pn, m2);
}
/**
! * Updates a module m to export a package to all modules.
*/
! public static void addExportsToAll(Module m, String pn) {
! JLRMA.addExportsToAll(m, pn);
}
/**
! * Updates a module m to open a package to all modules.
*/
! public static void addOpensToAll(Module m, String pn) {
! JLRMA.addOpensToAll(m, pn);
}
/**
! * Updates module m to export a package to all unnamed modules.
*/
! public static void addExportsToAllUnnamed(Module m, String pn) {
! JLRMA.addExportsToAllUnnamed(m, pn);
}
/**
* Updates module m to open a package to all unnamed modules.
*/
public static void addOpensToAllUnnamed(Module m, String pn) {
JLRMA.addOpensToAllUnnamed(m, pn);
}
/**
! * Updates module m to use a service
*/
public static void addUses(Module m, Class<?> service) {
JLRMA.addUses(m, service);
}
--- 69,143 ----
{
return JLRMA.defineModule(loader, descriptor, uri);
}
/**
! * Updates m1 to read m2.
* Same as m1.addReads(m2) but without a caller check.
*/
public static void addReads(Module m1, Module m2) {
JLRMA.addReads(m1, m2);
}
/**
! * Update module m to read all unnamed modules.
*/
public static void addReadsAllUnnamed(Module m) {
JLRMA.addReadsAllUnnamed(m);
}
/**
! * Update module m to export a package to all modules.
! *
! * This method is for intended for use by tests only.
*/
! public static void addExports(Module m, String pn) {
! JLRMA.addExports(m, pn);
}
/**
! * Updates module m1 to export a package to module m2.
! * Same as m1.addExports(pn, m2) but without a caller check
*/
! public static void addExports(Module m1, String pn, Module m2) {
! JLRMA.addExports(m1, pn, m2);
}
/**
! * Updates module m to export a package to all unnamed modules.
*/
! public static void addExportsToAllUnnamed(Module m, String pn) {
! JLRMA.addExportsToAllUnnamed(m, pn);
}
/**
! * Update module m to open a package to all modules.
! *
! * This method is for intended for use by tests only.
*/
! public static void addOpens(Module m, String pn) {
! JLRMA.addOpens(m, pn);
}
/**
! * Updates module m1 to open a package to module m2.
! * Same as m1.addOpens(pn, m2) but without a caller check.
*/
! public static void addOpens(Module m1, String pn, Module m2) {
! JLRMA.addOpens(m1, pn, m2);
}
/**
* Updates module m to open a package to all unnamed modules.
*/
public static void addOpensToAllUnnamed(Module m, String pn) {
JLRMA.addOpensToAllUnnamed(m, pn);
}
/**
! * Updates module m to use a service.
! * Same as m2.addUses(service) but without a caller check.
*/
public static void addUses(Module m, Class<?> service) {
JLRMA.addUses(m, service);
}
*** 181,200 ****
.addProvider(m, service, impl);
}
}
/**
- * Adds a package to a module's content.
- *
- * This method is a no-op if the module already contains the package or the
- * module is an unnamed module.
- */
- public static void addPackage(Module m, String pn) {
- JLRMA.addPackage(m, pn);
- }
-
- /**
* Called by the VM when code in the given Module has been transformed by
* an agent and so may have been instrumented to call into supporting
* classes on the boot class path or application class path.
*/
public static void transformedByAgent(Module m) {
--- 167,176 ----
< prev index next >