Well I've also tried with propertyMissing and methodMissing and they don't work either:
class MyClass{} a = new MyClass() @Category(MyClass) class MyCategory { def missingMethod(String name, def args) { "missingMethod" } def propertyMissing(String name) { "propertyMissing" } def test() { "works" } } use(MyCategory) { assert "works" == a.test() // assert "propertyMissing" == a.property1 // MissingPropertyException assert "missingMethod" == a.method1() // MissingMethodException } The missingMethod is not callled on a.method1() . Am I using the right syntax? Best regards/Rubén On Thu, Dec 7, 2017 at 1:11 PM, Jochen Theodorou <blackd...@gmx.org> wrote: > > > Am 07.12.2017 um 10:31 schrieb Ruben Laguna: >> >> In the Groovy in Action book, chapter 8.4.5 says "Category method >> names can well take the form of property accessors (pretending >> property access), operator methods, and GroovyObject methods. MOP hook >> methods cannot be added through a category class. This is a >> restriction as of Groovy 2.4. The feature may become available in >> later versions." >> >> It interpreted this as meaning that I can add getProperty, >> getMetaClass, invokeMethod to a class using categories but not >> methodMissing or propertyMissing. > > > "MOP hook methods" means here getProperty, getMetaClass, invokeMethod and > setProperty. MEaning you cannot override those using a category. > methodMissing and propertyMissing should work > > bye Jochen -- /Rubén