Daniel Keir Haywood created ISIS-2234: -----------------------------------------
Summary: During the render phase, don't populate the execution call graphs with results of mixins being invoked. Key: ISIS-2234 URL: https://issues.apache.org/jira/browse/ISIS-2234 Project: Isis Issue Type: Improvement Reporter: Daniel Keir Haywood Fix For: 2.3.0 This is somewhat similar to ISIS-1656, which is to flush audit/publishing etc at the end of the ACTION phase, rather than the RENDER phase. More broadly stated: RENDERing shouldn't have any side-effects. ~~~ Looking at the code today, we can see that in OneToOneAssociationMixedIn there's a hack: {code:java} @Override public ManagedObject get( final ManagedObject mixedInAdapter, final InteractionInitiatedBy interactionInitiatedBy) { val mixinAdapter = mixinAdapterFor(mixinType, mixedInAdapter); return getPublishingServiceInternal().withPublishingSuppressed( () -> mixinAction.executeInternal( mixinAdapter, mixedInAdapter, Can.empty(), interactionInitiatedBy) ); } {code} which prevents the action invocation in the render phase from doing anything. However, inspection of the internal data structures does currently show that the Interaction executionGraph (push, pop) gets populated. ... the bottom line is that actions don't know which phase they are being executed in. Perhaps the solution might be to include that info in the InteractionContext ??? -- This message was sent by Atlassian Jira (v8.3.4#803005)