2010-04-26 10 views
2

J'écris un DelegatingMetaClass que je voudrais appliquer à toutes les classes groovy dans mon projet, mais je ne sais pas comment obtenir toutes les classes dans le projet?Comment lister toutes les classes (groovy) dans JVM dans groovy

Voici le code:

/* 
This will work ok, since I know Foo beforehand, but what about classes 
that do not exist yet? 
*/ 
def myMetaClass = new DelegatingMetaClass(Foo.class) 
InvokerHelper.metaRegistry.setMetaClass(Foo.class, myMetaClass)  

/* 
how to do this? 
allGroovyClasses.each{ 
     def myMetaClass = new DelegatingMetaClass(it) 
     InvokerHelper.metaRegistry.setMetaClass(it, myMetaClass) 
     } 
*/ 


class SimpleInterceptor extends DelegatingMetaClass{ 


public SimpleInterceptor(final Class aclass) { 
    super(aclass);  
    initialize(); 
} 

public Object getProperty(Object object, String prop) { 
    println ("I am in a property interceptor!!!") 
    return super.getProperty(object, prop) 
} 

public Object invokeMethod(Object a_object, String a_methodName, Object[] a_arguments) 
{ 
    println ("I am in a method interceptor!!!") 
    return super.invokeMethod(a_object, a_methodName, a_arguments) 
} 

Répondre

1

Il y a un example of how to do this in java, qui devrait également travailler avec groovy. Je pense que c'est une façon schématique de le faire cependant.

Quel est votre objectif?

+0

J'essaie d'utiliser l'interception pour la programmation de style AOP. – Dan