43 import java.io.IOException;
44 import java.io.PrintStream;
45 import java.io.UnsupportedEncodingException;
46 import java.lang.module.ModuleFinder;
47 import java.lang.module.ModuleReference;
48 import java.lang.module.ModuleDescriptor;
49 import java.lang.module.ModuleDescriptor.Requires;
50 import java.lang.module.ModuleDescriptor.Exports;
51 import java.lang.module.ModuleDescriptor.Provides;
52 import java.lang.reflect.Layer;
53 import java.lang.reflect.Method;
54 import java.lang.reflect.Modifier;
55 import java.lang.reflect.Module;
56 import java.math.BigDecimal;
57 import java.math.RoundingMode;
58 import java.net.URI;
59 import java.nio.charset.Charset;
60 import java.nio.file.DirectoryStream;
61 import java.nio.file.Files;
62 import java.nio.file.Path;
63 import java.security.AccessController;
64 import java.security.PrivilegedAction;
65 import java.text.Normalizer;
66 import java.text.MessageFormat;
67 import java.util.ResourceBundle;
68 import java.util.ArrayList;
69 import java.util.Collection;
70 import java.util.Collections;
71 import java.util.Comparator;
72 import java.util.Iterator;
73 import java.util.List;
74 import java.util.Locale;
75 import java.util.Locale.Category;
76 import java.util.Optional;
77 import java.util.Properties;
78 import java.util.Map;
79 import java.util.Set;
80 import java.util.TreeSet;
81 import java.util.jar.Attributes;
82 import java.util.jar.JarFile;
83 import java.util.jar.Manifest;
84 import jdk.internal.misc.VM;
888 out.format(", %s", ob);
889 }
890 }
891 out.format("%n");
892 }
893
894 /**
895 * Called by the launcher to list the observable modules.
896 * If called without any sub-options then the output is a simple list of
897 * the modules. If called with sub-options then the sub-options are the
898 * names of the modules to list (-listmods:java.base,java.desktop for
899 * example).
900 */
901 static void listModules(boolean printToStderr, String optionFlag)
902 throws IOException, ClassNotFoundException
903 {
904 initOutput(printToStderr);
905
906 ModuleFinder finder = jdk.internal.module.ModuleBootstrap.finder();
907
908 int colon = optionFlag.indexOf(':');
909 if (colon == -1) {
910 finder.findAll().stream()
911 .sorted(Comparator.comparing(ModuleReference::descriptor))
912 .forEach(md -> {
913 ostream.println(midAndLocation(md.descriptor(),
914 md.location()));
915 });
916 } else {
917 String[] names = optionFlag.substring(colon+1).split(",");
918 for (String name: names) {
919 ModuleReference mref = finder.find(name).orElse(null);
920 if (mref == null) {
921 // not found
922 continue;
923 }
924
925 ModuleDescriptor md = mref.descriptor();
926 ostream.println(midAndLocation(md, mref.location()));
927
928 for (Requires d : md.requires()) {
|
43 import java.io.IOException;
44 import java.io.PrintStream;
45 import java.io.UnsupportedEncodingException;
46 import java.lang.module.ModuleFinder;
47 import java.lang.module.ModuleReference;
48 import java.lang.module.ModuleDescriptor;
49 import java.lang.module.ModuleDescriptor.Requires;
50 import java.lang.module.ModuleDescriptor.Exports;
51 import java.lang.module.ModuleDescriptor.Provides;
52 import java.lang.reflect.Layer;
53 import java.lang.reflect.Method;
54 import java.lang.reflect.Modifier;
55 import java.lang.reflect.Module;
56 import java.math.BigDecimal;
57 import java.math.RoundingMode;
58 import java.net.URI;
59 import java.nio.charset.Charset;
60 import java.nio.file.DirectoryStream;
61 import java.nio.file.Files;
62 import java.nio.file.Path;
63 import java.text.Normalizer;
64 import java.text.MessageFormat;
65 import java.util.ResourceBundle;
66 import java.util.ArrayList;
67 import java.util.Collection;
68 import java.util.Collections;
69 import java.util.Comparator;
70 import java.util.Iterator;
71 import java.util.List;
72 import java.util.Locale;
73 import java.util.Locale.Category;
74 import java.util.Optional;
75 import java.util.Properties;
76 import java.util.Map;
77 import java.util.Set;
78 import java.util.TreeSet;
79 import java.util.jar.Attributes;
80 import java.util.jar.JarFile;
81 import java.util.jar.Manifest;
82 import jdk.internal.misc.VM;
886 out.format(", %s", ob);
887 }
888 }
889 out.format("%n");
890 }
891
892 /**
893 * Called by the launcher to list the observable modules.
894 * If called without any sub-options then the output is a simple list of
895 * the modules. If called with sub-options then the sub-options are the
896 * names of the modules to list (-listmods:java.base,java.desktop for
897 * example).
898 */
899 static void listModules(boolean printToStderr, String optionFlag)
900 throws IOException, ClassNotFoundException
901 {
902 initOutput(printToStderr);
903
904 ModuleFinder finder = jdk.internal.module.ModuleBootstrap.finder();
905
906 int colon = optionFlag.indexOf('=');
907 if (colon == -1) {
908 finder.findAll().stream()
909 .sorted(Comparator.comparing(ModuleReference::descriptor))
910 .forEach(md -> {
911 ostream.println(midAndLocation(md.descriptor(),
912 md.location()));
913 });
914 } else {
915 String[] names = optionFlag.substring(colon+1).split(",");
916 for (String name: names) {
917 ModuleReference mref = finder.find(name).orElse(null);
918 if (mref == null) {
919 // not found
920 continue;
921 }
922
923 ModuleDescriptor md = mref.descriptor();
924 ostream.println(midAndLocation(md, mref.location()));
925
926 for (Requires d : md.requires()) {
|