From b06493dc93fa736965511e1fab2165b5c904f7e0 Mon Sep 17 00:00:00 2001 From: gered Date: Tue, 11 Apr 2017 12:03:40 -0400 Subject: [PATCH] update java compilation to abort on compile errors after each package --- .../bwmirror/generator/CJavaPipeline.java | 10 ++++++++-- .../bwmirror/generator/MyJavaCompiler.java | 19 +++++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/generator/src/main/java/bwmirror/generator/CJavaPipeline.java b/generator/src/main/java/bwmirror/generator/CJavaPipeline.java index 741ef59..73e17e2 100644 --- a/generator/src/main/java/bwmirror/generator/CJavaPipeline.java +++ b/generator/src/main/java/bwmirror/generator/CJavaPipeline.java @@ -103,7 +103,9 @@ public class CJavaPipeline { */ System.out.println("\n\nInit"); System.out.println("Cleaning existing generated output"); - FileUtils.deleteDirectory(new File(processingOptions.getProperty(GENERATE_TO_DIR))); + for (PackageProcessOptions pkg : packages) { + FileUtils.deleteDirectory(new File(processingOptions.getProperty(GENERATE_TO_DIR) + "/" + pkg.packageName)); + } FileUtils.deleteDirectory(new File(processingOptions.getProperty(HEADERS_DIR_PROPERTY))); FileUtils.deleteDirectory(new File(processingOptions.getProperty(COMPILE_DIR_PROPERTY))); FileUtils.deleteDirectory(new File(processingOptions.getProperty(C_IMPLEMENTATION_FILE_PROPERTY)).getParentFile()); @@ -192,7 +194,11 @@ public class CJavaPipeline { MyJavaCompiler compiler = new MyJavaCompiler(); for (PackageProcessOptions pkg : packages) { - compiler.run(new File(processingOptions.get(GENERATE_TO_DIR) + "/" + pkg.packageName), javaOut); + if (!compiler.run(new File(processingOptions.get(GENERATE_TO_DIR) + "/" + pkg.packageName), javaOut)) { + System.out.println("\n\nAborting due to compile errors (see above)."); + System.exit(1); + return; + } } /** diff --git a/generator/src/main/java/bwmirror/generator/MyJavaCompiler.java b/generator/src/main/java/bwmirror/generator/MyJavaCompiler.java index 5494c06..394ca1c 100644 --- a/generator/src/main/java/bwmirror/generator/MyJavaCompiler.java +++ b/generator/src/main/java/bwmirror/generator/MyJavaCompiler.java @@ -19,10 +19,9 @@ public class MyJavaCompiler { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); @SuppressWarnings("ConstantConditions") - public void run(File inDir, File outDir) { + public boolean run(File inDir, File outDir) throws Exception { System.out.println("Compiling " + inDir + ", output " + outDir); - outDir.delete(); - outDir.mkdir(); + outDir.mkdirs(); List javaFileObjects = new ArrayList(); DiagnosticCollector diagnostics = new DiagnosticCollector(); @@ -58,15 +57,19 @@ public class MyJavaCompiler { JavaCompiler.CompilationTask compilerTask = compiler.getTask(null, compiler.getStandardFileManager(null, Locale.getDefault(), null), diagnostics, compilationOptions, null, javaFileObjects); - try { - boolean status = compilerTask.call(); + boolean status = false; - for (Diagnostic diagnostic : diagnostics.getDiagnostics()){ - System.out.format("Error on line %d in %s", diagnostic.getLineNumber(), diagnostic); - } + try { + status = compilerTask.call(); + + for (Diagnostic diagnostic : diagnostics.getDiagnostics()) { + System.out.format("Error on line %d in %s", diagnostic.getLineNumber(), diagnostic); + } } catch (Exception e) { e.printStackTrace(); } + System.out.println(); + return status; } }