use of org.codehaus.janino.Location 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);
}
Aggregations