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 }); |