Dateiverwaltung für die WebBox
ulrich
2017-03-18 1f550a4fce54040aa41f6351b0ba1fe1c404652d
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,15 @@
  private ServletContext ctx;
  private HttpServletRequest request;
  
  public String compile(String relPath, List fileNames) throws IOException {
  /**
   *
   * @param relPath
   * @param fileNames
   * @param mode 0 = test, 1 = build
   * @return
   * @throws IOException
   */
  public List<CompilerIssue> compile(String relPath, List fileNames, String mode) throws IOException {
    //Files[] files1 = ... ; // input for first compilation task
    //Files[] files2 = ... ; // input for second compilation task
    
@@ -79,13 +87,19 @@
    Iterable<? extends JavaFileObject> compilationUnits1 = fileManager.getJavaFileObjectsFromFiles(files);
    
    final Iterable<String> options =
            Arrays.asList(new String[]{"-Xlint",
    if( mode.equals("1")) {
      final Iterable<String> options = Arrays.asList(new String[]{"-Xlint",
              /*"-cp", project.getClassPath(),*/
              "-d", targetDir.getAbsolutePath()
              });
      compiler.getTask(null, fileManager, diagnostics, options, null, compilationUnits1).call();
    } else {
      compiler.getTask(null, null, diagnostics, null, null, compilationUnits1).call();
    }
    
    compiler.getTask(null, fileManager, diagnostics, options, null, compilationUnits1).call();
    //compiler.getTask(null, fileManager, diagnostics, null, null, compilationUnits1).call();
    /*
    Iterable<? extends JavaFileObject> compilationUnits2
@@ -95,23 +109,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;