First of all, a brief hello - I have been following the project for some time, and like where you are trying to go with it! Qi4j is enjoyable to use. That said, I hit a small snag..
I have a side effect (code for which does not add much to the example..)
A role interface..
@SideEffects(ExampleSideEffect.class)
interface Turn extends TransientComposite {
}
...and a mixin.
class TurnMixin implements Turn {
}
In a setup like this, I am finding the content of the mixin is executed twice. A glance inside the runtime shows two SampleSideEffect declarations. It appears to be inheriting from the Turn role, and the TurnMixin implementation of the role?
For now, declaring a separate TurnTransient interface (with the @SideEffects annotation) prevents the duplicate occurrence. Perhaps that is best practice anyway - the examples are mixed on which style is preferred.
Regardless, this behaviour seems counter-intuitive. If you consider it a bug, do you want a failing test added somewhere?