From 72e43ddf5a01b28d57a41bdbd4b77a0519d92912 Mon Sep 17 00:00:00 2001 From: ulrich <not disclosed> Date: Sun, 19 Mar 2017 16:27:57 +0000 Subject: [PATCH] compileAll (Entwurf) --- src/java/de/uhilger/filecms/api/CompileService.java | 99 ++++++++++++++++++++++++++++++++----------------- 1 files changed, 65 insertions(+), 34 deletions(-) diff --git a/src/java/de/uhilger/filecms/api/CompileService.java b/src/java/de/uhilger/filecms/api/CompileService.java index 21f3464..49bc175 100644 --- a/src/java/de/uhilger/filecms/api/CompileService.java +++ b/src/java/de/uhilger/filecms/api/CompileService.java @@ -17,26 +17,17 @@ */ package de.uhilger.filecms.api; -import static de.uhilger.filecms.api.FileMgr.HOME_DIR_NAME; -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; -import de.uhilger.transit.web.WebKontext; import java.io.File; +import java.io.FileFilter; import java.io.IOException; -import java.security.Principal; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Locale; +import java.util.logging.Level; import java.util.logging.Logger; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; import javax.tools.Diagnostic; import javax.tools.DiagnosticCollector; import javax.tools.JavaCompiler; @@ -47,12 +38,70 @@ /** * */ -public class CompileService implements RequestKontext, WebKontext { +public class CompileService extends Api { private static final Logger logger = Logger.getLogger(CompileService.class.getName()); + + public List<CompilerIssue> compileAll(String relPath) { + logger.fine(relPath); + List<CompilerIssue> compilerIssues = new ArrayList(); + try { + File targetDir = getTargetDir(relPath); + ArrayList<File> files = new ArrayList(); + collectFiles(files, targetDir, new JavaFileFilter()); + JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); + DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector(); + StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null); + Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(files); + compiler.getTask(null, null, diagnostics, null, null, compilationUnits).call(); + fileManager.close(); + + List compileResults = diagnostics.getDiagnostics(); + 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); + } + } + } catch(Exception ex) { + logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex); + } + return compilerIssues; + } - private ServletContext ctx; - private HttpServletRequest request; + private void collectFiles(ArrayList<File> files, File dir, FileFilter filter) { + File[] dirFiles = dir.listFiles(filter); + for(int i = 0; i < dirFiles.length; i++) { + if(dirFiles[i].isDirectory()) { + logger.fine("drill down to " + dirFiles[i].getAbsolutePath()); + collectFiles(files, dirFiles[i], filter); + } else { + logger.fine("add " + dirFiles[i].getAbsolutePath()); + files.add(dirFiles[i]); + } + } + } + + public class JavaFileFilter implements FileFilter { + + @Override + public boolean accept(File pathname) { + boolean doAccept = false; + if(pathname.getName().endsWith(".java") || pathname.isDirectory()) { + doAccept = true; + } + return doAccept; + } + + } /** * @@ -128,6 +177,7 @@ return compilerIssues; } + /* private File getTargetDir(String relPath) { logger.fine(relPath); String targetPath = null; @@ -162,26 +212,7 @@ } return userName; } - - @Override - public HttpServletRequest getRequest() { - return request; - } - - @Override - public void setRequest(HttpServletRequest r) { - this.request = r; - } - - @Override - public ServletContext getServletContext() { - return ctx; - } - - @Override - public void setServletContext(ServletContext servletContext) { - this.ctx = servletContext; - } +*/ } -- Gitblit v1.9.3