Search in sources :

Example 1 with Requires

use of java.lang.module.ModuleDescriptor.Requires in project Bytecoder by mirkosertic.

the class LauncherHelper method describeModule.

/**
 * Called by the launcher to describe a module
 */
static void describeModule(String moduleName) {
    initOutput(System.out);
    ModuleFinder finder = ModuleBootstrap.limitedFinder();
    ModuleReference mref = finder.find(moduleName).orElse(null);
    if (mref == null) {
        abort(null, "java.launcher.module.error4", moduleName);
    }
    ModuleDescriptor md = mref.descriptor();
    // one-line summary
    showModule(mref);
    // unqualified exports (sorted by package)
    md.exports().stream().filter(e -> !e.isQualified()).sorted(Comparator.comparing(Exports::source)).map(e -> Stream.concat(Stream.of(e.source()), toStringStream(e.modifiers())).collect(Collectors.joining(" "))).forEach(sourceAndMods -> ostream.format("exports %s%n", sourceAndMods));
    // dependences
    for (Requires r : md.requires()) {
        String nameAndMods = Stream.concat(Stream.of(r.name()), toStringStream(r.modifiers())).collect(Collectors.joining(" "));
        ostream.format("requires %s", nameAndMods);
        finder.find(r.name()).map(ModuleReference::descriptor).filter(ModuleDescriptor::isAutomatic).ifPresent(any -> ostream.print(" automatic"));
        ostream.println();
    }
    // service use and provides
    for (String s : md.uses()) {
        ostream.format("uses %s%n", s);
    }
    for (Provides ps : md.provides()) {
        String names = ps.providers().stream().collect(Collectors.joining(" "));
        ostream.format("provides %s with %s%n", ps.service(), names);
    }
    // qualified exports
    for (Exports e : md.exports()) {
        if (e.isQualified()) {
            String who = e.targets().stream().collect(Collectors.joining(" "));
            ostream.format("qualified exports %s to %s%n", e.source(), who);
        }
    }
    // open packages
    for (Opens opens : md.opens()) {
        if (opens.isQualified())
            ostream.print("qualified ");
        String sourceAndMods = Stream.concat(Stream.of(opens.source()), toStringStream(opens.modifiers())).collect(Collectors.joining(" "));
        ostream.format("opens %s", sourceAndMods);
        if (opens.isQualified()) {
            String who = opens.targets().stream().collect(Collectors.joining(" "));
            ostream.format(" to %s", who);
        }
        ostream.println();
    }
    // non-exported/non-open packages
    Set<String> concealed = new TreeSet<>(md.packages());
    md.exports().stream().map(Exports::source).forEach(concealed::remove);
    md.opens().stream().map(Opens::source).forEach(concealed::remove);
    concealed.forEach(p -> ostream.format("contains %s%n", p));
}
Also used : Manifest(java.util.jar.Manifest) NoSuchFileException(java.nio.file.NoSuchFileException) ModuleReference(java.lang.module.ModuleReference) JarFile(java.util.jar.JarFile) Requires(java.lang.module.ModuleDescriptor.Requires) BigDecimal(java.math.BigDecimal) DirectoryStream(java.nio.file.DirectoryStream) Category(java.util.Locale.Category) ModuleFinder(java.lang.module.ModuleFinder) Locale(java.util.Locale) Map(java.util.Map) URI(java.net.URI) Method(java.lang.reflect.Method) Path(java.nio.file.Path) FindException(java.lang.module.FindException) RoundingMode(java.math.RoundingMode) Set(java.util.Set) Configuration(java.lang.module.Configuration) Attributes(java.util.jar.Attributes) Collectors(java.util.stream.Collectors) InvocationTargetException(java.lang.reflect.InvocationTargetException) Exports(java.lang.module.ModuleDescriptor.Exports) List(java.util.List) Stream(java.util.stream.Stream) Modifier(java.lang.reflect.Modifier) Optional(java.util.Optional) VM(jdk.internal.misc.VM) UnsupportedEncodingException(java.io.UnsupportedEncodingException) Provides(java.lang.module.ModuleDescriptor.Provides) ModuleDescriptor(java.lang.module.ModuleDescriptor) HashMap(java.util.HashMap) TreeSet(java.util.TreeSet) MessageFormat(java.text.MessageFormat) ArrayList(java.util.ArrayList) ResolvedModule(java.lang.module.ResolvedModule) Charset(java.nio.charset.Charset) ResourceBundle(java.util.ResourceBundle) PrintStream(java.io.PrintStream) Properties(java.util.Properties) Iterator(java.util.Iterator) Files(java.nio.file.Files) Opens(java.lang.module.ModuleDescriptor.Opens) IOException(java.io.IOException) BasicFileAttributes(java.nio.file.attribute.BasicFileAttributes) File(java.io.File) Normalizer(java.text.Normalizer) ModuleBootstrap(jdk.internal.module.ModuleBootstrap) Paths(java.nio.file.Paths) Modules(jdk.internal.module.Modules) Comparator(java.util.Comparator) Collections(java.util.Collections) ModuleDescriptor(java.lang.module.ModuleDescriptor) ModuleFinder(java.lang.module.ModuleFinder) Opens(java.lang.module.ModuleDescriptor.Opens) ModuleReference(java.lang.module.ModuleReference) Requires(java.lang.module.ModuleDescriptor.Requires) TreeSet(java.util.TreeSet) Provides(java.lang.module.ModuleDescriptor.Provides) Exports(java.lang.module.ModuleDescriptor.Exports)

Aggregations

File (java.io.File)1 IOException (java.io.IOException)1 PrintStream (java.io.PrintStream)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 Configuration (java.lang.module.Configuration)1 FindException (java.lang.module.FindException)1 ModuleDescriptor (java.lang.module.ModuleDescriptor)1 Exports (java.lang.module.ModuleDescriptor.Exports)1 Opens (java.lang.module.ModuleDescriptor.Opens)1 Provides (java.lang.module.ModuleDescriptor.Provides)1 Requires (java.lang.module.ModuleDescriptor.Requires)1 ModuleFinder (java.lang.module.ModuleFinder)1 ModuleReference (java.lang.module.ModuleReference)1 ResolvedModule (java.lang.module.ResolvedModule)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 Method (java.lang.reflect.Method)1 Modifier (java.lang.reflect.Modifier)1 BigDecimal (java.math.BigDecimal)1 RoundingMode (java.math.RoundingMode)1 URI (java.net.URI)1