< 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 >