Search in sources :

Example 1 with ErrorHandler

use of org.codehaus.janino.UnitCompiler.ErrorHandler in project drools by kiegroup.

the class JaninoJavaCompiler method compile.

public CompilationResult compile(final String[] pSourceNames, final ResourceReader pResourceReader, final ResourceStore pStore, final ClassLoader pClassLoader, final JavaCompilerSettings pSettings) {
    final Collection problems = new ArrayList();
    final StringPattern[] pattern = StringPattern.PATTERNS_NONE;
    final Compiler compiler = new Compiler(new ResourceFinder() {

        public Resource findResource(final String pSourceName) {
            final byte[] bytes = pResourceReader.getBytes(pSourceName);
            if (bytes == null) {
                return null;
            }
            return new JciResource(pSourceName, bytes);
        }
    }, new ClassLoaderIClassLoader(pClassLoader), new ResourceFinder() {

        public Resource findResource(final String pResourceName) {
            final byte[] bytes = pStore.read(pResourceName);
            if (bytes == null) {
                return null;
            }
            return new JciResource(pResourceName, bytes);
        }
    }, new ResourceCreator() {

        public OutputStream createResource(final String pResourceName) throws IOException {
            return new JciOutputStream(pResourceName, pStore);
        }

        public boolean deleteResource(final String pResourceName) {
            pStore.remove(pResourceName);
            return true;
        }
    }, pSettings.getSourceEncoding(), false, pSettings.isDebug() ? DebuggingInformation.ALL : DebuggingInformation.NONE, new FilterWarningHandler(pattern, new WarningHandler() {

        public void handleWarning(final String pHandle, final String pMessage, final Location pLocation) {
            final CompilationProblem problem = new JaninoCompilationProblem(pLocation.getFileName(), pLocation, pMessage, false);
            if (problemHandler != null) {
                problemHandler.handle(problem);
            }
            problems.add(problem);
        }
    }));
    compiler.setCompileErrorHandler(new ErrorHandler() {

        public void handleError(final String pMessage, final Location pLocation) throws CompileException {
            final CompilationProblem problem = new JaninoCompilationProblem(pLocation.getFileName(), pLocation, pMessage, true);
            if (problemHandler != null) {
                problemHandler.handle(problem);
            }
            problems.add(problem);
        }
    });
    final Resource[] resources = new Resource[pSourceNames.length];
    for (int i = 0; i < pSourceNames.length; i++) {
        final byte[] source = pResourceReader.getBytes(pSourceNames[i]);
        resources[i] = new JciResource(pSourceNames[i], source);
    }
    try {
        compiler.compile(resources);
    } catch (ScanException e) {
        problems.add(new JaninoCompilationProblem(e));
    } catch (ParseException e) {
        problems.add(new JaninoCompilationProblem(e));
    } catch (IOException e) {
    // I'm hoping the existing compiler problems handler catches these
    } catch (CompileException e) {
    // I'm hoping the existing compiler problems handler catches these
    }
    final CompilationProblem[] result = new CompilationProblem[problems.size()];
    problems.toArray(result);
    return new CompilationResult(result);
}
Also used : OutputStream(java.io.OutputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ArrayList(java.util.ArrayList) CompilationProblem(org.drools.compiler.commons.jci.problems.CompilationProblem) ScanException(org.codehaus.janino.Scanner.ScanException) CompileException(org.codehaus.janino.CompileException) StringPattern(org.codehaus.janino.util.StringPattern) Compiler(org.codehaus.janino.Compiler) ResourceFinder(org.codehaus.janino.util.resource.ResourceFinder) ErrorHandler(org.codehaus.janino.UnitCompiler.ErrorHandler) ResourceCreator(org.codehaus.janino.util.resource.ResourceCreator) WarningHandler(org.codehaus.janino.WarningHandler) FilterWarningHandler(org.codehaus.janino.FilterWarningHandler) Resource(org.codehaus.janino.util.resource.Resource) IOException(java.io.IOException) ClassLoaderIClassLoader(org.codehaus.janino.ClassLoaderIClassLoader) FilterWarningHandler(org.codehaus.janino.FilterWarningHandler) Collection(java.util.Collection) ParseException(org.codehaus.janino.Parser.ParseException) Location(org.codehaus.janino.Location)

Aggregations

ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 IOException (java.io.IOException)1 OutputStream (java.io.OutputStream)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 ClassLoaderIClassLoader (org.codehaus.janino.ClassLoaderIClassLoader)1 CompileException (org.codehaus.janino.CompileException)1 Compiler (org.codehaus.janino.Compiler)1 FilterWarningHandler (org.codehaus.janino.FilterWarningHandler)1 Location (org.codehaus.janino.Location)1 ParseException (org.codehaus.janino.Parser.ParseException)1 ScanException (org.codehaus.janino.Scanner.ScanException)1 ErrorHandler (org.codehaus.janino.UnitCompiler.ErrorHandler)1 WarningHandler (org.codehaus.janino.WarningHandler)1 StringPattern (org.codehaus.janino.util.StringPattern)1 Resource (org.codehaus.janino.util.resource.Resource)1 ResourceCreator (org.codehaus.janino.util.resource.ResourceCreator)1 ResourceFinder (org.codehaus.janino.util.resource.ResourceFinder)1 CompilationProblem (org.drools.compiler.commons.jci.problems.CompilationProblem)1