public void testCompile() throws Exception { Compiler compiler = new Compiler(); List<JavaClassFileObject> files = compiler.compile("A", "public class A implements java.util.concurrent.Callable<String> {\n" + "public String call() {\n" + "return \"hello\";\n" + "}\n" + "}"); assertEquals(1, files.size()); LoadingClassLoader loader = new LoadingClassLoader(Thread.currentThread().getContextClassLoader(), files); Class<?> A = loader.findClass("A"); Callable<String> asCallable = (Callable<String>)A.newInstance(); String ret = asCallable.call(); assertEquals("hello", ret); }
List<JavaClassFileObject> classFiles; try { classFiles = compiler.compile(name, script);
public void testCompilationFailure() throws Exception { Compiler compiler = new Compiler(); try { compiler.compile("foo.A", "package foo;\n public class A {"); } catch (CompilationFailureException e) { List<Diagnostic<? extends JavaFileObject>> errors = e.getErrors(); assertEquals(1, errors.size()); Diagnostic<? extends JavaFileObject> error = errors.get(0); assertEndsWith("/foo/A.java", error.getSource().getName()); } } }
private void doTestImport(ClassLoaderFactory factory) throws Exception { Compiler compiler = new Compiler(); List<JavaClassFileObject> files = compiler.compile("foo.A", "package foo;\n public class A {}"); assertEquals(1, files.size()); JavaClassFileObject aFile = files.get(0); JavaArchive jar = ShrinkWrap.create(JavaArchive.class, "crash.jar"); jar.add(new ByteArrayAsset(aFile.getBytes()), "foo/A.class"); jar.setManifest(Thread.currentThread().getContextClassLoader().getResource("META-INF/MANIFEST.MF")); ClassLoader cl = factory.getClassLoader(jar); // compiler = new Compiler(cl); files = compiler.compile("B", "import foo.A;\n" + "public class B implements java.util.concurrent.Callable<A> {\n" + "public A call() {\n" + "return new A();\n" + "}\n" + "}"); assertEquals(1, files.size()); LoadingClassLoader loader = new LoadingClassLoader(cl, files); Class<?> B = loader.findClass("B"); Callable<?> asCallable = (Callable<?>)B.newInstance(); Object ret = asCallable.call(); assertNotNull(ret); Class<?> A = ret.getClass(); assertEquals("foo.A", A.getName()); assertEquals(cl, A.getClassLoader()); }
List<JavaClassFileObject> classFiles; try { classFiles = compiler.compile(name, script);
List<JavaClassFileObject> classFiles; try { classFiles = compiler.compile(name, script);