Page History
Table of Contents |
---|
Goal
- To define new (more logical?) structure of where commands are implemented and defined.
- Allow easier use of commands by the App developers.
- Remove command pooling.
- Get rid of the Commons Chain library (see Greg's comment).
Further (future) goals:
- Better documentation (list of commands with description, and for each command a list of parameters).
The Previous Status
The above class diagram represents the distribution of the command classes into the (basic) packages in the releases up to 4.5.
Implementation
The command classes related to the activation (marked green on the above image) were moved to the Activation module (package i.m.module.activation.commands
), the rest was moved to the Core module, to the i.m.commands.impl
package.
The CommandsManager
class was extended with a method executeCommand(String catalog, String command, Map<String,Object> parameters)
, that allows to run commands without need to handle Context etc. The UI classes (actions etc.) should use command by calling this method (i.e. this will be the preferred method, but not the only one).
Command Definitions Reorganisation
The commands are still defined in particular modules, as described in http://documentation.magnolia-cms.com/technical-guide/commands.html - but the catalogs are now additive, i.e. it is possible to define a catalog in one module, and add a new command to the catalog in another module. Anyway, it is still forbidden to have two command of the same name in the catalog - if such situation happens, the CommandsManager
will produce RuntimeException
on its initialisation.
...
Old path | New path | Note |
---|---|---|
/modules/adminInterface/commands/default/activate | /modules/activation/commands/default/activate | |
/modules/adminInterface/commands/default/deactivate | /modules/activation/ commands/default/deactivate | |
/modules/adminInterface/commands/website/activate | /modules/ui-pages-app/commands/website/activate | Composite command, composed of 'version' and 'default-activate' command. |
/modules/adminInterface/commands/website/delete | /modules/ui-pages-app/commands/website/delete | |
/modules/dms/commands/dms/activate | /modules/dam-app-assets/commands/dms/activate | Composite command, composed of 'version' and 'default-activate' command. |
/modules/dms/commands/dms/delete | /modules/dam-app-assets/commands/dms/delete |
Remove Command Pooling
The pooling capabilities were removed from the MgnlCommand
base class, and the CommandsManager
has been changed to create new instance for each getCommand()
or executeCommand()
call.
Command base action
info.magnolia.ui.model.action.CommandActionBase
and its definition counterpart CommandActionDefinition
allows for easy use of commands by the App developers by handling much of the boilerplate code they would otherwise need to write.
...