You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Daniel Keir Haywood (Jira)" <ji...@apache.org> on 2020/01/01 13:51:00 UTC

[jira] [Created] (ISIS-2234) During the render phase, don't populate the execution call graphs with results of mixins being invoked.

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)