Defines a custom command in which the command metadata (in other words, command type and parameter definitions) are mutable. That is, there are setters defined in this class that allow for command type and parameter definitions to be modified.
Of course, a custom command is worthless unless there is a command service on the server side that can process the command. That is to say, the command type and parameter definitions must be acceptable to the command service where the command is issued.
It is generally not a good thing to allow users of commands to be able to modify command types and parameter definitions as this could make the command inoperable (which is why this capability does not exist in the base superclass}. However, this capability may be needed for specialized clients.
Note that modifications to a custom command have no effect on previous executions of the command. While this may seem obvious, a less obvious effect is that a command whose {@link AbstractCommand#isCommandInResponse()} was true
at the time of execution will be stored in the resulting {@link CommandResponse} - changing that flag tofalse
after the fact will not alter that previous command response.
@author John Mazzitelli