On 2010-05-31 16.08, Rickard Öberg wrote:
I had to remove a couple of tests, since the new generated classes
behave a little differently. I do not subclass concrete methods, only
abstract ones, which causes slightly different behaviour when one method
calls another (=no concerns/sideeffects are invoked). Other than that
all tests pass.
Well, that didn't work out well. Turns out pretty much every line of
code in Streamflow assumes that concerns are executed even on in-mixin
calls. Damnit.
So now there's a decision to be made:
Either calls within a mixin will cause concerns to be invoked, or not.
If not, then to force them to be invoked you have to do a @This
injection and then call that instead, to ensure that the call goes
through the proxy.
What makes the most sense? I guess we have to also remember that code
like this will not work if methods are not routed through the composite
within the mixin:
public void bar()
{
foo(null); // Null should not be allowed
}
// someString is not @Optional
public void foo(String someString)
{
}
With the above, the null-check would only be done if the call is made
like so:
@This MyInterface myself;
public void bar()
{
myself.foo(null); // Will throw exception
}
I guess this is pretty strong in favor of always doing subclassing of
methods. But then we need to subclass *every* mixin, not just the
abstract ones.
Thoughts on that?
/Rickard
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev