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 <[email protected]> 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