< prev index next >

src/jdk.jextract/share/classes/com/sun/tools/jextract/Main.java

Print this page

        

@@ -83,21 +83,11 @@
                 throw new IllegalArgumentException(format("not.a.directory", kv.key));
             }
         }
 
         Utils.validPackageName(pkgName);
-        ctx.usePackageForFolder(p, pkgName);
-    }
-
-    private void processHeader(Object header) {
-        Path p = Paths.get((String) header);
-        if (!Files.isReadable(p)) {
-            throw new IllegalArgumentException(format("cannot.read.header.file", header));
-        }
-        p = p.toAbsolutePath();
-        ctx.usePackageForFolder(p.getParent(), targetPackage);
-        ctx.addSource(p);
+        ctx.addPackageMapping(p, pkgName);
     }
 
     private void setupLogging(Level level) {
         Logger logger = ctx.logger;
         logger.setUseParentHandlers(false);

@@ -249,22 +239,31 @@
             }
         } else if (infer_rpath) {
             ctx.err.println(format("warn.rpath.auto.without.L"));
         }
 
-        targetPackage = options.has("t") ? (String) options.valueOf("t") : "";
-        if (!targetPackage.isEmpty()) {
-            Utils.validPackageName(targetPackage);
-        }
-
         if (options.has("m")) {
             options.valuesOf("m").forEach(this::processPackageMapping);
         }
 
+        final Writer writer;
+
         try {
-            options.nonOptionArguments().stream().forEach(this::processHeader);
-            ctx.parse();
+            for (Object header : options.nonOptionArguments()) {
+                Path p = Paths.get((String)header);
+                if (!Files.isReadable(p)) {
+                    throw new IllegalArgumentException(format("cannot.read.header.file", header));
+                }
+                p = p.normalize().toAbsolutePath();
+                ctx.addSource(p);
+            }
+            targetPackage = options.has("t") ? (String) options.valueOf("t") : "";
+            if (!targetPackage.isEmpty()) {
+                Utils.validPackageName(targetPackage);
+            }
+            ctx.setTargetPackage(targetPackage);
+            writer = new JextractTool(ctx).processHeaders();
         } catch (RuntimeException re) {
             ctx.err.println(re.getMessage());
             if (Main.DEBUG) {
                 re.printStackTrace(ctx.err);
             }

@@ -286,11 +285,11 @@
                     Files.createDirectories(dest);
                 } else if (!Files.isDirectory(dest)) {
                     ctx.err.println(format("not.a.directory", dest));
                     return 4;
                 }
-                ctx.collectClassFiles(dest, args, targetPackage);
+                writer.writeClassFiles(dest, args);
             } catch (IOException ex) {
                 ctx.err.println(format("cannot.write.class.file", dest, ex));
                 if (Main.DEBUG) {
                     ex.printStackTrace(ctx.err);
                 }

@@ -306,11 +305,11 @@
         } else {
             outputName =  Paths.get((String)options.nonOptionArguments().get(0)).getFileName() + ".jar";
         }
 
         try {
-            ctx.collectJarFile(Paths.get(outputName), args, targetPackage);
+            writer.writeJarFile(Paths.get(outputName), args);
         } catch (IOException ex) {
             ctx.err.println(format("cannot.write.jar.file", outputName, ex));
             if (Main.DEBUG) {
                 ex.printStackTrace(ctx.err);
             }

@@ -318,11 +317,11 @@
         }
 
         return 0;
     }
 
-    private static Path getBuiltinHeadersDir() {
+    static Path getBuiltinHeadersDir() {
         return Paths.get(System.getProperty("java.home"), "conf", "jextract");
     }
 
     public static void main(String... args) {
         Main instance = new Main(new Context());
< prev index next >