You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Dan Haywood (JIRA)" <ji...@apache.org> on 2018/02/08 08:59:00 UTC

[jira] [Created] (ISIS-1860) CommandReification.DISABLED is broken / incorrectly documented.

Dan Haywood created ISIS-1860:
---------------------------------

             Summary: CommandReification.DISABLED is broken / incorrectly documented.
                 Key: ISIS-1860
                 URL: https://issues.apache.org/jira/browse/ISIS-1860
             Project: Isis
          Issue Type: Documentation
    Affects Versions: 1.16.0
            Reporter: Dan Haywood
             Fix For: 1.16.1


Don't intend to change the implementation, but what I observe is that setting commandReification=DISABLED does not necessarily prevent a command from being persisted.  All it does is prevent a CommandFacet from being installed on the corresponding action or property in the metamodel.

A Command object is always created by CommandContext.  If there is a CommandService implementation, then it delegates to that to act as the factory of the Command.  So reification always occurs.

If an action invocation or property edit causes objects to be modified, then the Command#setPersistHint(...) is set to true.  And, if there is no command facet, then the CommandServiceJdo will default the Command#setPersistence(...) to PERSIST_IF_HINTED.

The net result is that if commandReification is DISABLED, then commands are still persisted if they cause any objects to be dirtied.  

To prevent commands being persisted, instead use @Action(commandPersistence=NOT_PERSISTED), and make sure that @Action(command=ENABLED).

 

object is updated with a persist hint.  In the case of the incode platform's Command module, the CommandService#complete(Command) is called, its implementation will 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)