langtools/src/share/classes/com/sun/tools/jdeps/Analyzer.java
changeset 16550 f20e2521f3df
parent 16290 b0b4f52de7ea
child 21046 ebf16a1a6328
--- a/langtools/src/share/classes/com/sun/tools/jdeps/Analyzer.java	Thu Mar 14 08:30:16 2013 +0000
+++ b/langtools/src/share/classes/com/sun/tools/jdeps/Analyzer.java	Thu Mar 14 10:33:31 2013 -0700
@@ -91,9 +91,11 @@
                             result.requiredArchives.add(source);
                         }
                         // either a profile name or the archive name
-                        String tname = getProfile(target);
-                        if (tname.isEmpty()){
-                            tname = source.toString();
+                        String tname = result.getTargetProfile(target);
+                        if (tname.isEmpty()) {
+                            tname = PlatformClassPath.contains(source)
+                                        ? "JDK internal API (" + source.getFileName() + ")"
+                                        : source.toString();
                         }
                         if (!result.targetNames.contains(tname)) {
                             result.targetNames.add(tname);
@@ -110,7 +112,7 @@
          * a fully-qualified classname, a package name, a profile or
          * archive name depending on the Analyzer's type.
          */
-        void visit(String origin, String target);
+        void visit(String origin, String target, String profile);
         /**
          * Visits the source archive to its destination archive of
          * a recorded dependency.
@@ -124,7 +126,7 @@
                 v.visit(r.archive, a);
             }
             for (String name : r.targetNames) {
-                v.visit(r.archive.getFileName(), name);
+                v.visit(r.archive.getFileName(), name, name);
             }
         }
     }
@@ -138,7 +140,7 @@
                 for (String target : r.deps.get(origin)) {
                     // filter intra-dependency unless in verbose mode
                     if (type == Type.VERBOSE || getArchive(origin) != getArchive(target)) {
-                        v.visit(origin, target);
+                        v.visit(origin, target, r.getTargetProfile(target));
                     }
                 }
             }
@@ -149,21 +151,16 @@
         return map.containsKey(name) ? map.get(name) : NOT_FOUND;
     }
 
-    public String getArchiveName(String name) {
-        return getArchive(name).getFileName();
-    }
-
-    public String getProfile(String name) {
-        String pn = type == Type.CLASS ? packageOf(name) : name;
-        Archive source = map.get(name);
-        if (source != null && PlatformClassPath.contains(source)) {
-            String profile = PlatformClassPath.getProfileName(pn);
-            if (profile.isEmpty()) {
-                return "JDK internal API (" + source.getFileName() + ")";
-            }
-            return profile;
-        }
-        return "";
+    /**
+     * Returns the file name of the archive for non-JRE class or
+     * internal JRE classes.  It returns empty string for SE API.
+     */
+    public String getArchiveName(String target, String profile) {
+        Archive source = getArchive(target);
+        String name = source.getFileName();
+        if (PlatformClassPath.contains(source))
+            return profile.isEmpty() ? "JDK internal API (" + name + ")" : "";
+        return name;
     }
 
     private abstract class ArchiveDeps implements Archive.Visitor {
@@ -200,6 +197,8 @@
         }
 
         public abstract void visit(Location o, Location t);
+        public abstract String getTargetProfile(String target);
+
     }
 
     private class ClassVisitor extends ArchiveDeps {
@@ -212,6 +211,10 @@
         public void visit(Location o, Location t) {
             add(o.getClassName(), t.getClassName());
         }
+        public String getTargetProfile(String target) {
+            int i = target.lastIndexOf('.');
+            return (i > 0) ? Profiles.getProfileName(target.substring(0, i)) : "";
+        }
     }
 
     private class PackageVisitor extends ArchiveDeps {
@@ -221,19 +224,15 @@
         public void visit(Location o, Location t) {
             add(packageOf(o), packageOf(t));
         }
-
         public void visit(Location l) {
             add(packageOf(l));
         }
-
         private String packageOf(Location loc) {
             String pkg = loc.getPackageName();
             return pkg.isEmpty() ? "<unnamed>" : pkg;
         }
-    }
-
-    private static String packageOf(String cn) {
-        int i = cn.lastIndexOf('.');
-        return (i > 0) ? cn.substring(0, i) : "<unnamed>";
+        public String getTargetProfile(String target) {
+            return Profiles.getProfileName(target);
+        }
     }
 }