/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.bytecode.dasnet.support.wicket; import groovy.util.GroovyScriptEngine; import groovy.util.ResourceException; import groovy.util.ScriptException; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import org.apache.wicket.application.IClassResolver; /** * * @author dpanelli */ public class GroovyClassResolver implements IClassResolver { private String baseUrl; public GroovyClassResolver(String baseUrl) { this.baseUrl = baseUrl; } @Override public Class resolveClass(String classFqn) throws ClassNotFoundException { Class loadedClass = null; try { loadedClass = Class.forName(classFqn); } catch (ClassNotFoundException exception) { loadedClass = loadGroovyClass(classFqn); } if (loadedClass == null) { throw new ClassNotFoundException(classFqn); } return loadedClass; } protected Class loadGroovyClass(String fqn) { try { GroovyScriptEngine groovyScriptEngine = new GroovyScriptEngine(baseUrl); return groovyScriptEngine.loadScriptByName(fqn); } catch (IOException ex) { Logger.getLogger(GroovyClassResolver.class.getName()).log(Level.SEVERE, null, ex); throw new RuntimeException(ex); } catch (ResourceException ex) { Logger.getLogger(GroovyClassResolver.class.getName()).log(Level.SEVERE, null, ex); throw new RuntimeException(ex); } catch (ScriptException ex) { Logger.getLogger(GroovyClassResolver.class.getName()).log(Level.SEVERE, null, ex); throw new RuntimeException(ex); } } }