Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package so_22729226;
- import groovy.lang.GroovyClassLoader;
- import groovy.lang.GroovyObject;
- import java.security.CodeSource;
- import org.codehaus.groovy.control.CompilationFailedException;
- import org.codehaus.groovy.control.CompilationUnit;
- import org.codehaus.groovy.control.CompilationUnit.SourceUnitOperation;
- import org.codehaus.groovy.control.CompilerConfiguration;
- import org.codehaus.groovy.control.Phases;
- import org.codehaus.groovy.control.SourceUnit;
- public class GroovyScriptTestRun {
- public static class DefaultImportClassLoader extends GroovyClassLoader {
- public DefaultImportClassLoader(ClassLoader cl){
- super(cl);
- }
- public CompilationUnit createCompilationUnit(CompilerConfiguration config, CodeSource codeSource) {
- CompilationUnit cu = super.createCompilationUnit(config, codeSource);
- cu.addPhaseOperation(new SourceUnitOperation() {
- public void call(SourceUnit source) throws CompilationFailedException {
- //source.getAST().addImport("Test",ClassHelper.make("org.junit.Test"));
- source.getAST().addImportPackage("org.junit.");
- }}, Phases.CONVERSION);
- return cu;
- }
- }
- public static void main(String[] args) throws InstantiationException, IllegalAccessException{
- // GroovyClassLoader loader = new GroovyClassLoader();
- GroovyClassLoader loader = new GroovyScriptTestRun.DefaultImportClassLoader( GroovyScriptTestRun.class.getClassLoader());
- Class groovyClass = loader.parseClass("class so_22729226_Test { def run(){ print Test.class } }");
- System.out.println("Script Class Name ->"+groovyClass.getSimpleName());
- GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
- //must print "interface org.junit.Test"
- groovyObject.invokeMethod("run", null);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement