Я пытаюсь перехватить все методы run () в groovy скрипте. Моя текущая настройка - IntelliJ с плагином groovy и зависимостью от codehaus groovy -all Ниже приведен метакласс, который я добавил для Script, где я пытаюсь перехватить run (), выполняемую GroovyShell. Поток выполнения кода, который я вижу во время отладки: GroovyMain> GroovyShell> Script. Теперь приведенный ниже MetaClass для класса Script выполняется, когда экземпляр Script инициализируется, отлично. Но по какой-то причине метод run или invoke никогда не запускается, если это не сценарий groovy, который я вызываю из исходного сценария. Я не уверен, что это проблема с classLoaders, скорее всего, я просто не знаю, как это работает.
class ScriptMetaClass extends DelegatingMetaClass {
{
System.out.println(this.getClass().getName() + "STATIC")
}
ScriptMetaClass(MetaClass metaClass) {
super(metaClass)
System.out.println(this.getClass().getName() + "MetaClass")
}
ScriptMetaClass(Class theClass) {
super(theClass)
System.out.println(this.getClass().getName() + "Class")
}
@Override //tested with and without ovveride
def invokeMethod(String name, Object args) {
System.out.println(name)
}
def invokeMethod(String name) {
System.out.println(name)
}
def run(){
System.out.println("RNU METHOD")
}
}