langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/Analyzer.java
changeset 30843 6e378856c5a2
parent 28706 a724585645ce
equal deleted inserted replaced
30736:ff3fc75f3214 30843:6e378856c5a2
    31 import java.util.List;
    31 import java.util.List;
    32 import java.util.Map;
    32 import java.util.Map;
    33 import java.util.Objects;
    33 import java.util.Objects;
    34 import java.util.Set;
    34 import java.util.Set;
    35 import java.util.stream.Collectors;
    35 import java.util.stream.Collectors;
       
    36 import java.util.stream.Stream;
    36 
    37 
    37 import com.sun.tools.classfile.Dependency.Location;
    38 import com.sun.tools.classfile.Dependency.Location;
    38 
    39 
    39 /**
    40 /**
    40  * Dependency Analyzer.
    41  * Dependency Analyzer.
   135      * If the requested level is SUMMARY, it will visit the required archives list.
   136      * If the requested level is SUMMARY, it will visit the required archives list.
   136      */
   137      */
   137     public void visitDependences(Archive source, Visitor v, Type level) {
   138     public void visitDependences(Archive source, Visitor v, Type level) {
   138         if (level == Type.SUMMARY) {
   139         if (level == Type.SUMMARY) {
   139             final ArchiveDeps result = results.get(source);
   140             final ArchiveDeps result = results.get(source);
   140             result.requires().stream()
   141             final Set<Archive> reqs = result.requires();
   141                   .sorted(Comparator.comparing(Archive::getName))
   142             Stream<Archive> stream = reqs.stream();
       
   143             if (reqs.isEmpty()) {
       
   144                 if (hasDependences(source)) {
       
   145                     // If reqs.isEmpty() and we have dependences, then it means
       
   146                     // that the dependences are from 'source' onto itself.
       
   147                     stream = Stream.of(source);
       
   148                 }
       
   149             }
       
   150             stream.sorted(Comparator.comparing(Archive::getName))
   142                   .forEach(archive -> {
   151                   .forEach(archive -> {
   143                       Profile profile = result.getTargetProfile(archive);
   152                       Profile profile = result.getTargetProfile(archive);
   144                       v.visitDependence(source.getName(), source,
   153                       v.visitDependence(source.getName(), source,
   145                                         profile != null ? profile.profileName() : archive.getName(), archive);
   154                                         profile != null ? profile.profileName() : archive.getName(), archive);
   146                   });
   155                   });