return new Parser(new Scanner(null, new StringReader(body))).parseCompilationUnit(); } catch (CompileException e) { throw new IOException(String.format("Failure while loading class %s.", clazz.getName()), e);
private ClassFile[] doCompile(final String sourceCode) throws CompileException, IOException, ClassNotFoundException { StringReader reader = new StringReader(sourceCode); Scanner scanner = new Scanner((String) null, reader); Java.CompilationUnit compilationUnit = new Parser(scanner).parseCompilationUnit(); return new UnitCompiler(compilationUnit, compilationClassLoader) .compileUnit(this.debug, this.debug, this.debug); }
private CompilationUnit get(Class<?> c) throws IOException { URL u = getSourceURL(c); try (Reader reader = Resources.asCharSource(u, UTF_8).openStream()) { String body = CharStreams.toString(reader); // TODO: Hack to remove annotations so Janino doesn't choke. Need to reconsider this problem... body = body.replaceAll("@\\w+(?:\\([^\\\\]*?\\))?", ""); for(Replacement r : REPLACERS){ body = r.apply(body); } // System.out.println("original"); // System.out.println(body);; // System.out.println("decompiled"); // System.out.println(decompile(c)); try { return new Parser(new Scanner(null, new StringReader(body))).parseCompilationUnit(); } catch (CompileException e) { logger.warn("Failure while parsing function class:\n{}", body, e); return null; } } }
new Parser(scanner).parseCompilationUnit(), new ClassLoaderIClassLoader(cl)); ClassFile[] classFiles = unitCompiler.compileUnit(true, true, true);
new Parser(scanner).parseCompilationUnit(), new ClassLoaderIClassLoader(cl)); ClassFile[] classFiles = unitCompiler.compileUnit(true, true, true);
@Override public Class<?> compileClass(SourceCodeContext sourceCode) throws SourceCodeGenerationException { Scanner scanner; try { scanner = new Scanner(sourceCode.getClassName(), new StringReader(sourceCode.toSourceFile())); Java.CompilationUnit localCompilationUnit = new Parser(scanner).parseCompilationUnit(); UnitCompiler unitCompile = new UnitCompiler(localCompilationUnit, iClassLoader); ClassFile[] classes = unitCompile.compileUnit(false, false, false); return classLoader.findClass(classes[0].getThisClassName()); } catch (Exception e) { LOG.error("Can not compile {0}", sourceCode.getClassName(), e); throw new MappingException("Can not compile the generated mapper", e); } }
@Override protected ClassBytes[] getByteCode(final ClassNames className, final String sourcecode, boolean debug) throws CompileException, IOException, ClassNotFoundException, ClassTransformationException { StringReader reader = new StringReader(sourcecode); Scanner scanner = new Scanner((String) null, reader); Java.CompilationUnit compilationUnit = new Parser(scanner).parseCompilationUnit(); ClassFile[] classFiles = new UnitCompiler(compilationUnit, compilationClassLoader) .compileUnit(debug, debug, debug); ClassBytes[] byteCodes = new ClassBytes[classFiles.length]; for(int i = 0; i < classFiles.length; i++){ ClassFile file = classFiles[i]; byteCodes[i] = new ClassBytes(file.getThisClassName(), file.toByteArray()); } return byteCodes; }