langtools/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/ModuleInfoBuilder.java
changeset 45684 2c5f2779c3d1
parent 43767 9cff98a149cb
--- a/langtools/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/ModuleInfoBuilder.java	Sat Jun 17 08:02:55 2017 +0100
+++ b/langtools/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/ModuleInfoBuilder.java	Sat Jun 17 11:50:45 2017 -0700
@@ -203,21 +203,43 @@
         writer.format("%smodule %s {%n", open ? "open " : "", md.name());
 
         Map<String, Module> modules = configuration.getModules();
-        // first print the JDK modules
-        md.requires().stream()
-          .filter(req -> !req.name().equals("java.base"))   // implicit requires
-          .sorted(Comparator.comparing(Requires::name))
-          .forEach(req -> writer.format("    requires %s;%n",
-                                        toString(req.modifiers(), req.name())));
+
+        // first print requires
+        Set<Requires> reqs = md.requires().stream()
+            .filter(req -> !req.name().equals("java.base") && req.modifiers().isEmpty())
+            .collect(Collectors.toSet());
+        reqs.stream()
+            .sorted(Comparator.comparing(Requires::name))
+            .forEach(req -> writer.format("    requires %s;%n",
+                                          toString(req.modifiers(), req.name())));
+        if (!reqs.isEmpty()) {
+            writer.println();
+        }
+
+        // requires transitive
+        reqs = md.requires().stream()
+                 .filter(req -> !req.name().equals("java.base") && !req.modifiers().isEmpty())
+                 .collect(Collectors.toSet());
+        reqs.stream()
+            .sorted(Comparator.comparing(Requires::name))
+            .forEach(req -> writer.format("    requires %s;%n",
+                                          toString(req.modifiers(), req.name())));
+        if (!reqs.isEmpty()) {
+            writer.println();
+        }
 
         if (!open) {
             md.exports().stream()
               .peek(exp -> {
                   if (exp.isQualified())
                       throw new InternalError(md.name() + " qualified exports: " + exp);
-              })
+                  })
               .sorted(Comparator.comparing(Exports::source))
               .forEach(exp -> writer.format("    exports %s;%n", exp.source()));
+
+            if (!md.exports().isEmpty()) {
+                writer.println();
+            }
         }
 
         md.provides().stream()
@@ -228,8 +250,11 @@
                                       String.format("    provides %s with%n",
                                                     p.service().replace('$', '.')),
                                       ";")))
-          .forEach(writer::println);
+                     .forEach(writer::println);
 
+        if (!md.provides().isEmpty()) {
+            writer.println();
+        }
         writer.println("}");
     }