Hi there,
at Apache Syncope we are currently working to support dynamically loaded Groovy
classes as standard classes.
Essentially, there are some defined Java interfaces, and we allow users to
upload their Groovy implementations which are stored as strings in our internal
database.
When one of available implementations is requested, we do something as follows:
private static final GroovyClassLoader GROOVY_CLASSLOADER = new
GroovyClassLoader();
@SuppressWarnings("unchecked")
private static <T> T buildGroovy(final String classBody) throws
InstantiationException, IllegalAccessException {
Class<?> clazz = GROOVY_CLASSLOADER.parseClass(classBody);
return (T) ApplicationContextProvider.getBeanFactory().
createBean(clazz, AbstractBeanDefinition.AUTOWIRE_BY_TYPE,
false);
}
I am happy to say that this works just fine.
Now I was wondering what is the best approach to cache such information, to
avoid Groovy parsing the class source text at every execution request.
Could you provide any pointer? Thanks!
Regards.