SHOW:
|
|
- or go back to the newest paste.
1 | package so_22729226; | |
2 | ||
3 | import groovy.lang.GroovyClassLoader; | |
4 | import groovy.lang.GroovyObject; | |
5 | ||
6 | import java.security.CodeSource; | |
7 | ||
8 | import org.codehaus.groovy.control.CompilationFailedException; | |
9 | import org.codehaus.groovy.control.CompilationUnit; | |
10 | import org.codehaus.groovy.control.CompilationUnit.SourceUnitOperation; | |
11 | import org.codehaus.groovy.control.CompilerConfiguration; | |
12 | import org.codehaus.groovy.control.Phases; | |
13 | import org.codehaus.groovy.control.SourceUnit; | |
14 | ||
15 | public class GroovyScriptTestRun { | |
16 | ||
17 | ||
18 | public static class DefaultImportClassLoader extends GroovyClassLoader { | |
19 | public DefaultImportClassLoader(ClassLoader cl){ | |
20 | super(cl); | |
21 | } | |
22 | ||
23 | public CompilationUnit createCompilationUnit(CompilerConfiguration config, CodeSource codeSource) { | |
24 | CompilationUnit cu = super.createCompilationUnit(config, codeSource); | |
25 | cu.addPhaseOperation(new SourceUnitOperation() { | |
26 | public void call(SourceUnit source) throws CompilationFailedException { | |
27 | - | // source.getAST().addImport("ImportedClass",ClassHelper.make("so_22729226.testPackage.ImportedClass")); //working |
27 | + | //source.getAST().addImport("Test",ClassHelper.make("org.junit.Test")); |
28 | source.getAST().addImportPackage("org.junit."); | |
29 | }}, Phases.CONVERSION); | |
30 | ||
31 | return cu; | |
32 | } | |
33 | ||
34 | } | |
35 | ||
36 | public static void main(String[] args) throws InstantiationException, IllegalAccessException{ | |
37 | // GroovyClassLoader loader = new GroovyClassLoader(); | |
38 | GroovyClassLoader loader = new GroovyScriptTestRun.DefaultImportClassLoader( GroovyScriptTestRun.class.getClassLoader()); | |
39 | Class groovyClass = loader.parseClass("class so_22729226_Test { def run(){ print Test.class } }"); | |
40 | System.out.println("Script Class Name ->"+groovyClass.getSimpleName()); | |
41 | GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance(); | |
42 | //must print "interface org.junit.Test" | |
43 | groovyObject.invokeMethod("run", null); | |
44 | } | |
45 | ||
46 | } |