- Enclosing class:
- ModuleDescriptor
ModuleDescriptor objects.
  ModuleDescriptor defines the newModule,
 newOpenModule, and newAutomaticModule methods to create builders for building
 normal, open, and automatic modules. 
 The set of packages in the module are accumulated by the 
 Builder as the exports,
 opens,
 packages,
 provides, and
 mainClass methods are
 invoked. 
The module names, package names, and class names that are parameters specified to the builder methods are the module names, package names, and qualified names of classes (in named packages) as defined in the The Java Language Specification.
Example usage:
   ModuleDescriptor descriptor = ModuleDescriptor.newModule("stats.core")
         .requires("java.base")
         .exports("org.acme.stats.core.clustering")
         .exports("org.acme.stats.core.regression")
         .packages(Set.of("org.acme.stats.core.internal"))
         .build();
 - API Note:
- A Builderchecks the components and invariants as components are added to the builder. The rationale for this is to detect errors as early as possible and not defer all validation to thebuildmethod.
- Since:
- 9
- 
Method SummaryModifier and TypeMethodDescriptionbuild()Builds and returns aModuleDescriptorfrom its components.Adds an exported package.Adds an exported package.Adds an exported package.Adds an exported package with the given (and possibly empty) set of modifiers.Adds an exported package with the given (and possibly empty) set of modifiers.Sets the module main class.Adds an open package.Adds an open package.Adds an open package.opens(Set<ModuleDescriptor.Opens.Modifier> ms, String pn) Adds an open package with the given (and possibly empty) set of modifiers.Adds an open package with the given (and possibly empty) set of modifiers.Adds packages to the module.Provides a service with one or more implementations.Provides implementations of a service.Adds a dependence on a module.Adds a dependence on a module with an empty set of modifiers.Adds a dependence on a module with the given (and possibly empty) set of modifiers.requires(Set<ModuleDescriptor.Requires.Modifier> ms, String mn, ModuleDescriptor.Version compiledVersion) Adds a dependence on a module with the given (and possibly empty) set of modifiers.Adds a service dependence.Sets the module version.Sets the module version.
- 
Method Details- 
requiresAdds a dependence on a module.- Parameters:
- req- The dependence
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the dependence is on the module that this builder was initialized to build
- IllegalStateException- If the dependence on the module has already been declared or this builder is for an automatic module
 
- 
requirespublic ModuleDescriptor.Builder requires(Set<ModuleDescriptor.Requires.Modifier> ms, String mn, ModuleDescriptor.Version compiledVersion) Adds a dependence on a module with the given (and possibly empty) set of modifiers. The dependence includes the version of the module that was recorded at compile-time.- Parameters:
- ms- The set of modifiers
- mn- The module name
- compiledVersion- The version of the module recorded at compile-time
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the module name is- null, is not a legal module name, or is equal to the module name that this builder was initialized to build
- IllegalStateException- If the dependence on the module has already been declared or this builder is for an automatic module
 
- 
requiresAdds a dependence on a module with the given (and possibly empty) set of modifiers.- Parameters:
- ms- The set of modifiers
- mn- The module name
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the module name is- null, is not a legal module name, or is equal to the module name that this builder was initialized to build
- IllegalStateException- If the dependence on the module has already been declared or this builder is for an automatic module
 
- 
requiresAdds a dependence on a module with an empty set of modifiers.- Parameters:
- mn- The module name
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the module name is- null, is not a legal module name, or is equal to the module name that this builder was initialized to build
- IllegalStateException- If the dependence on the module has already been declared or this builder is for an automatic module
 
- 
exportsAdds an exported package.- Parameters:
- e- The export
- Returns:
- This builder
- Throws:
- IllegalStateException- If the- packageis already declared as exported or this builder is for an automatic module
 
- 
exportspublic ModuleDescriptor.Builder exports(Set<ModuleDescriptor.Exports.Modifier> ms, String pn, Set<String> targets) Adds an exported package with the given (and possibly empty) set of modifiers. The package is exported to a set of target modules.- Parameters:
- ms- The set of modifiers
- pn- The package name
- targets- The set of target modules names
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the package name is- nullor is not a legal package name, the set of target modules is empty, or the set of target modules contains a name that is not a legal module name
- IllegalStateException- If the package is already declared as exported or this builder is for an automatic module
 
- 
exportsAdds an exported package with the given (and possibly empty) set of modifiers. The package is exported to all modules.- Parameters:
- ms- The set of modifiers
- pn- The package name
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the package name is- nullor is not a legal package name
- IllegalStateException- If the package is already declared as exported or this builder is for an automatic module
 
- 
exportsAdds an exported package. The package is exported to a set of target modules.- Parameters:
- pn- The package name
- targets- The set of target modules names
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the package name is- nullor is not a legal package name, the set of target modules is empty, or the set of target modules contains a name that is not a legal module name
- IllegalStateException- If the package is already declared as exported or this builder is for an automatic module
 
- 
exportsAdds an exported package. The package is exported to all modules.- Parameters:
- pn- The package name
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the package name is- nullor is not a legal package name
- IllegalStateException- If the package is already declared as exported or this builder is for an automatic module
 
- 
opensAdds an open package.- Parameters:
- obj- The- Opensobject
- Returns:
- This builder
- Throws:
- IllegalStateException- If the package is already declared as open, or this is a builder for an open module or automatic module
 
- 
openspublic ModuleDescriptor.Builder opens(Set<ModuleDescriptor.Opens.Modifier> ms, String pn, Set<String> targets) Adds an open package with the given (and possibly empty) set of modifiers. The package is open to a set of target modules.- Parameters:
- ms- The set of modifiers
- pn- The package name
- targets- The set of target modules names
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the package name is- nullor is not a legal package name, the set of target modules is empty, or the set of target modules contains a name that is not a legal module name
- IllegalStateException- If the package is already declared as open, or this is a builder for an open module or automatic module
 
- 
opensAdds an open package with the given (and possibly empty) set of modifiers. The package is open to all modules.- Parameters:
- ms- The set of modifiers
- pn- The package name
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the package name is- nullor is not a legal package name
- IllegalStateException- If the package is already declared as open, or this is a builder for an open module or automatic module
 
- 
opensAdds an open package. The package is open to a set of target modules.- Parameters:
- pn- The package name
- targets- The set of target modules names
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the package name is- nullor is not a legal package name, the set of target modules is empty, or the set of target modules contains a name that is not a legal module name
- IllegalStateException- If the package is already declared as open, or this is a builder for an open module or automatic module
 
- 
opensAdds an open package. The package is open to all modules.- Parameters:
- pn- The package name
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the package name is- nullor is not a legal package name
- IllegalStateException- If the package is already declared as open, or this is a builder for an open module or automatic module
 
- 
usesAdds a service dependence.- Parameters:
- service- The service type
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the service type is- nullor not a qualified name of a class in a named package
- IllegalStateException- If a dependency on the service type has already been declared or this is a builder for an automatic module
 
- 
providesProvides a service with one or more implementations. The package for eachprovider(or provider factory) is added to the module if not already added.- Parameters:
- p- The provides
- Returns:
- This builder
- Throws:
- IllegalStateException- If the providers for the service type have already been declared
 
- 
providesProvides implementations of a service. The package for each provider (or provider factory) is added to the module if not already added.- Parameters:
- service- The service type
- providers- The list of provider or provider factory class names
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If the service type or any of the provider class names is- nullor not a qualified name of a class in a named package, or the list of provider class names is empty
- IllegalStateException- If the providers for the service type have already been declared
 
- 
packagesAdds packages to the module. All packages in the set of package names that are not in the module are added to module.- Parameters:
- pns- The (possibly empty) set of package names
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If any of the package names is- nullor is not a legal package name
 
- 
versionSets the module version.- Parameters:
- v- The version
- Returns:
- This builder
 
- 
versionSets the module version.- Parameters:
- vs- The version string to parse
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If- vsis- nullor cannot be parsed as a version string
- See Also:
 
- 
mainClassSets the module main class. The package for the main class is added to the module if not already added. In other words, this method is equivalent to first invoking this builder'spackagesmethod to add the package name of the main class.- Parameters:
- mc- The module main class
- Returns:
- This builder
- Throws:
- IllegalArgumentException- If- mainClassis- nullor not a qualified name of a class in a named package
 
- 
buildBuilds and returns aModuleDescriptorfrom its components.The module will require " java.base" even if the dependence has not been declared (the exception is when building a module named "java.base" as it cannot require itself). The dependence on "java.base" will have theMANDATEDmodifier if the dependence was not declared.- Returns:
- The module descriptor
 
 
-