< prev index next >

src/jdk.jdeps/share/classes/com/sun/tools/jdeps/DependencyFinder.java

Print this page
rev 3356 : [mq]: 8140281-deprecation-optional.get


 187                     .collect(Collectors.toList());
 188 
 189             // Additional pass to find archive where dependences are identified
 190             // and also any specified classes, if any.
 191             // If -R is specified, perform transitive dependency analysis.
 192             Deque<String> unresolved = new LinkedList<>(classes);
 193             do {
 194                 String name;
 195                 while ((name = unresolved.poll()) != null) {
 196                     if (doneClasses.contains(name)) {
 197                         continue;
 198                     }
 199                     if (compileTimeView) {
 200                         final String cn = name + ".class";
 201                         // parse all classes in the source archive
 202                         Optional<Archive> source = archives.stream()
 203                                 .filter(a -> a.reader().entries().contains(cn))
 204                                 .findFirst();
 205                         trace("%s compile time view %s%n", name, source.map(Archive::getName).orElse(" not found"));
 206                         if (source.isPresent()) {
 207                             executor.runTask(source.get(), deque);
 208                         }
 209                     }
 210                     ClassFile cf = null;
 211                     for (Archive archive : archives) {
 212                         cf = archive.reader().getClassFile(name);
 213 
 214                         if (cf != null) {
 215                             String classFileName;
 216                             try {
 217                                 classFileName = cf.getName();
 218                             } catch (ConstantPoolException e) {
 219                                 throw new Dependencies.ClassFileError(e);
 220                             }
 221                             if (!doneClasses.contains(classFileName)) {
 222                                 // if name is a fully-qualified class name specified
 223                                 // from command-line, this class might already be parsed
 224                                 doneClasses.add(classFileName);
 225                                 for (Dependency d : finder.findDependencies(cf)) {
 226                                     if (depth == 0) {
 227                                         // ignore the dependency




 187                     .collect(Collectors.toList());
 188 
 189             // Additional pass to find archive where dependences are identified
 190             // and also any specified classes, if any.
 191             // If -R is specified, perform transitive dependency analysis.
 192             Deque<String> unresolved = new LinkedList<>(classes);
 193             do {
 194                 String name;
 195                 while ((name = unresolved.poll()) != null) {
 196                     if (doneClasses.contains(name)) {
 197                         continue;
 198                     }
 199                     if (compileTimeView) {
 200                         final String cn = name + ".class";
 201                         // parse all classes in the source archive
 202                         Optional<Archive> source = archives.stream()
 203                                 .filter(a -> a.reader().entries().contains(cn))
 204                                 .findFirst();
 205                         trace("%s compile time view %s%n", name, source.map(Archive::getName).orElse(" not found"));
 206                         if (source.isPresent()) {
 207                             executor.runTask(source.getWhenPresent(), deque);
 208                         }
 209                     }
 210                     ClassFile cf = null;
 211                     for (Archive archive : archives) {
 212                         cf = archive.reader().getClassFile(name);
 213 
 214                         if (cf != null) {
 215                             String classFileName;
 216                             try {
 217                                 classFileName = cf.getName();
 218                             } catch (ConstantPoolException e) {
 219                                 throw new Dependencies.ClassFileError(e);
 220                             }
 221                             if (!doneClasses.contains(classFileName)) {
 222                                 // if name is a fully-qualified class name specified
 223                                 // from command-line, this class might already be parsed
 224                                 doneClasses.add(classFileName);
 225                                 for (Dependency d : finder.findDependencies(cf)) {
 226                                     if (depth == 0) {
 227                                         // ignore the dependency


< prev index next >