From e3043fddcaf5e3ea4beb022c04d411661a3499bd Mon Sep 17 00:00:00 2001
From: ulrich <undisclosed>
Date: Tue, 14 Mar 2017 14:27:13 +0000
Subject: [PATCH] Syntax-Check fuer Java, Gutter Marker fuer Fehler, Tooltips fuer Fehlermeldungen

---
 src/java/de/uhilger/filecms/api/CompileService.java |   41 +++++++++++++++++++++++------------------
 1 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/src/java/de/uhilger/filecms/api/CompileService.java b/src/java/de/uhilger/filecms/api/CompileService.java
index f596dd6..d65fba2 100644
--- a/src/java/de/uhilger/filecms/api/CompileService.java
+++ b/src/java/de/uhilger/filecms/api/CompileService.java
@@ -21,6 +21,7 @@
 import static de.uhilger.filecms.api.FileMgr.HOME_DIR_PATH;
 import static de.uhilger.filecms.api.FileMgr.PUB_DIR_NAME;
 import static de.uhilger.filecms.api.FileMgr.PUB_DIR_PATH;
+import de.uhilger.filecms.data.CompilerIssue;
 import de.uhilger.filecms.data.FileRef;
 import de.uhilger.filecms.web.Initialiser;
 import de.uhilger.transit.web.RequestKontext;
@@ -42,7 +43,6 @@
 import javax.tools.JavaFileObject;
 import javax.tools.StandardJavaFileManager;
 import javax.tools.ToolProvider;
-import org.apache.commons.io.FileUtils;
 
 /**
  *
@@ -54,7 +54,7 @@
   private ServletContext ctx;
   private HttpServletRequest request;
   
-  public String compile(String relPath, List fileNames) throws IOException {
+  public List<CompilerIssue> compile(String relPath, List fileNames) throws IOException {
     //Files[] files1 = ... ; // input for first compilation task
     //Files[] files2 = ... ; // input for second compilation task
     
@@ -79,13 +79,16 @@
 
     Iterable<? extends JavaFileObject> compilationUnits1 = fileManager.getJavaFileObjectsFromFiles(files);
     
+    /*
     final Iterable<String> options =
             Arrays.asList(new String[]{"-Xlint",
-              /*"-cp", project.getClassPath(),*/
+              "-cp", project.getClassPath(),
               "-d", targetDir.getAbsolutePath()
               });
     
     compiler.getTask(null, fileManager, diagnostics, options, null, compilationUnits1).call();
+    */
+    compiler.getTask(null, fileManager, diagnostics, null, null, compilationUnits1).call();
 
     /*
     Iterable<? extends JavaFileObject> compilationUnits2
@@ -95,23 +98,25 @@
     */
     fileManager.close();
 
-    StringBuilder msg = new StringBuilder();
-    msg.append("Result of compile to Java bytecode (empty means no error):");
-    for (Diagnostic<? extends JavaFileObject> err : diagnostics.getDiagnostics()) {
-      msg.append('\n');
-      msg.append(err.getKind());
-      msg.append(": ");
-      if (err.getSource() != null) {
-        msg.append(err.getSource().getName());
+    List compileResults = diagnostics.getDiagnostics();
+    List<CompilerIssue> compilerIssues = new ArrayList();
+    Iterator i = compileResults.iterator();
+    while(i.hasNext()) {
+      Object o = i.next();
+      Diagnostic<? extends JavaFileObject> err;
+      if(o instanceof Diagnostic) {
+        err = (Diagnostic) o;
+        CompilerIssue issue = new CompilerIssue();
+        issue.setKind(err.getKind().name());
+        issue.setLineNumber(err.getLineNumber());
+        issue.setMessage(err.getMessage(Locale.GERMANY));
+        issue.setSoureName(err.getSource().getName());
+        compilerIssues.add(issue);
       }
-      msg.append(':');
-      msg.append(err.getLineNumber());
-      msg.append(": ");
-      msg.append(err.getMessage(Locale.GERMANY));
-    }    
-    
-    return msg.toString();
+    }
+    return compilerIssues;
   }
+  
   private File getTargetDir(String relPath) {
     logger.fine(relPath);
     String targetPath = null;

--
Gitblit v1.9.3