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); }
@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; }
@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); } }
UnitCompiler unitCompiler = new UnitCompiler( new Parser(scanner).parseCompilationUnit(), new ClassLoaderIClassLoader(cl)); ClassFile[] classFiles = unitCompiler.compileUnit(true, true, true); for (int i = 0; i < classFiles.length; i++) { classes.put(classFiles[i].getThisClassName(), classFiles[i].toByteArray());
UnitCompiler unitCompiler = new UnitCompiler( new Parser(scanner).parseCompilationUnit(), new ClassLoaderIClassLoader(cl)); ClassFile[] classFiles = unitCompiler.compileUnit(true, true, true); for (int i = 0; i < classFiles.length; i++) { classes.put(classFiles[i].getThisClassName(), classFiles[i].toByteArray());