langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/ModulesXmlReader.java
changeset 27579 d1a63c99cdd5
parent 26276 0dca2378aa34
--- a/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/ModulesXmlReader.java	Tue Nov 18 15:25:18 2014 -0800
+++ b/langtools/src/jdk.dev/share/classes/com/sun/tools/jdeps/ModulesXmlReader.java	Wed Dec 03 14:25:46 2014 +0000
@@ -24,15 +24,9 @@
  */
 package com.sun.tools.jdeps;
 
-import com.sun.tools.classfile.ClassFile;
-import com.sun.tools.jdeps.PlatformClassPath.LegacyImageHelper;
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLEventReader;
@@ -40,73 +34,15 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.events.Attribute;
 import javax.xml.stream.events.XMLEvent;
-
-abstract class ModulesXmlReader {
-    abstract ClassFileReader getClassFileReader(String modulename, Set<String> packages)
-        throws IOException;
-
-    static class ImageReader extends ModulesXmlReader {
-        final LegacyImageHelper helper;
-        ImageReader(LegacyImageHelper helper) {
-            this.helper = helper;
-        }
-        ClassFileReader getClassFileReader(String modulename, Set<String> packages)
-            throws IOException
-        {
-            return helper.getClassReader(modulename, packages);
-        }
-    }
+import com.sun.tools.jdeps.ClassFileReader.ModuleClassReader;
+import com.sun.tools.jdeps.PlatformClassPath.ImageHelper;
 
-    static class ModulePathReader extends ModulesXmlReader {
-        final Path mpath;
-        final ClassFileReader defaultReader;
-        ModulePathReader(Path mp) throws IOException {
-            this.mpath = mp;
-            this.defaultReader = new NonExistModuleReader(mpath);
-        }
-        ClassFileReader getClassFileReader(String modulename, Set<String> packages)
-            throws IOException
-        {
-            Path mdir = mpath.resolve(modulename);
-            if (Files.exists(mdir) && Files.isDirectory(mdir)) {
-                return ClassFileReader.newInstance(mdir);
-            } else {
-                // aggregator module or os-specific module in jdeps-modules.xml
-                // mdir not exist
-                return defaultReader;
-            }
-        }
-        class NonExistModuleReader extends ClassFileReader {
-            private final List<ClassFile> classes = Collections.emptyList();
-            private NonExistModuleReader(Path mpath) {
-                super(mpath);
-            }
-
-            public ClassFile getClassFile(String name) throws IOException {
-                return null;
-            }
-            public Iterable<ClassFile> getClassFiles() throws IOException {
-                return classes;
-            }
-        }
-    }
-
-    public static Set<Module> load(Path mpath, InputStream in)
+final class ModulesXmlReader {
+    public static Set<Module> load(ImageHelper helper,InputStream in)
         throws IOException
     {
         try {
-            ModulePathReader reader = new ModulePathReader(mpath);
-            return reader.load(in);
-        } catch (XMLStreamException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public static Set<Module> loadFromImage(LegacyImageHelper helper, InputStream in)
-        throws IOException
-    {
-        try {
-            ImageReader reader = new ImageReader(helper);
+            ModulesXmlReader reader = new ModulesXmlReader(helper);
             return reader.load(in);
         } catch (XMLStreamException e) {
             throw new RuntimeException(e);
@@ -119,8 +55,12 @@
     private static final String DEPEND    = "depend";
     private static final String EXPORT    = "export";
     private static final String TO        = "to";
-    private static final String INCLUDE   = "include";
     private static final QName  REEXPORTS = new QName("re-exports");
+    private final ImageHelper helper;
+    ModulesXmlReader(ImageHelper helper) {
+        this.helper = helper;
+    }
+
     public Set<Module> load(InputStream in) throws XMLStreamException, IOException {
         Set<Module> modules = new HashSet<>();
         if (in == null) {
@@ -162,9 +102,6 @@
                         }
                         mb.require(getData(reader), reexports);
                         break;
-                    case INCLUDE:
-                        mb.include(getData(reader));
-                        break;
                     case EXPORT:
                         exportedPackage = getNextTag(reader, NAME);
                         break;
@@ -178,8 +115,9 @@
                 String endTag = event.asEndElement().getName().getLocalPart();
                 switch (endTag) {
                     case MODULE:
-                        ClassFileReader cfr = getClassFileReader(modulename, mb.packages);
+                        ModuleClassReader cfr = helper.getModuleClassReader(modulename);
                         mb.classes(cfr);
+                        mb.packages(cfr.packages());
                         modules.add(mb.build());
                         mb = null;
                         break;