< prev index next >

src/jdk.jartool/share/classes/sun/tools/jar/Main.java

Print this page

        

@@ -60,10 +60,11 @@
 import jdk.internal.misc.JavaLangModuleAccess;
 import jdk.internal.misc.SharedSecrets;
 import jdk.internal.module.Checks;
 import jdk.internal.module.ModuleHashes;
 import jdk.internal.module.ModuleInfoExtender;
+import jdk.internal.module.WarnIfResolvedReason;
 import jdk.internal.util.jar.JarIndex;
 
 import static jdk.internal.util.jar.JarIndex.INDEX_NAME;
 import static java.util.jar.JarFile.MANIFEST_NAME;
 import static java.util.stream.Collectors.joining;

@@ -223,10 +224,12 @@
     /* Modular jar related options */
     boolean printModuleDescriptor;
     Version moduleVersion;
     Pattern modulesToHash;
     ModuleFinder moduleFinder = ModuleFinder.of();
+    boolean doNotResolveByDefault;
+    WarnIfResolvedReason warnIfResolvedReason = WarnIfResolvedReason.NONE;
 
     private static final String MODULE_INFO = "module-info.class";
 
     static final String MANIFEST_DIR = "META-INF/";
     static final String VERSIONS_DIR = MANIFEST_DIR + "versions/";

@@ -2092,11 +2095,16 @@
 
         for (Map.Entry<String,byte[]> e: moduleInfos.entrySet()) {
             ModuleDescriptor vd = ModuleDescriptor.read(ByteBuffer.wrap(e.getValue()));
             if (!(isValidVersionedDescriptor(vd, rd)))
                 return false;
-            e.setValue(extendedInfoBytes(rd, vd, e.getValue(), packages));
+            e.setValue(extendedInfoBytes(rd,
+                                         vd,
+                                         e.getValue(),
+                                         packages,
+                                         doNotResolveByDefault,
+                                         warnIfResolvedReason));
         }
         return true;
     }
 
     private Set<String> findConcealedPackages(ModuleDescriptor md) {

@@ -2177,11 +2185,13 @@
      * module-info here.
      */
     private byte[] extendedInfoBytes(ModuleDescriptor rootDescriptor,
                                      ModuleDescriptor md,
                                      byte[] miBytes,
-                                     Set<String> packages)
+                                     Set<String> packages,
+                                     boolean doNotResolveByDefault,
+                                     WarnIfResolvedReason warnReason)
         throws IOException
     {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         InputStream is = new ByteArrayInputStream(miBytes);
         ModuleInfoExtender extender = ModuleInfoExtender.newExtender(is);

@@ -2212,10 +2222,13 @@
                 // should it issue warning or silent?
                 System.out.println("warning: no module is recorded in hash in " + mn);
             }
         }
 
+        if (doNotResolveByDefault || warnReason != WarnIfResolvedReason.NONE)
+            extender.moduleResolution(doNotResolveByDefault, warnReason);
+
         extender.write(baos);
         return baos.toByteArray();
     }
 
     /**
< prev index next >