# Class IdAShellCmdAbstractCR<C extends IdACommandType<R>, R extends IdAResponseType>

java.lang.Object
com.io7m.idstore.shell.admin.internal.IdAShellCmdAbstract
com.io7m.idstore.shell.admin.internal.IdAShellCmdAbstractCR<C,R>

Type Parameters:
  `C` - The command type
  `R` - The response type

All Implemented Interfaces:
  `IdAShellCmdType, com.io7m.quarrel.core.QCommandOrGroupType, com.io7m.quarrel.core.QCommandType`

Direct Known Subclasses:
  `IdAShellCmdAdminBanCreate, IdAShellCmdAdminBanDelete, IdAShellCmdAdminBanGet, IdAShellCmdAdminCreate, IdAShellCmdAdminEmailAdd, IdAShellCmdAdminEmailRemove, IdAShellCmdAdminGet, IdAShellCmdAdminGetByEmail, IdAShellCmdAdminMaintenanceModeSet, IdAShellCmdAdminSearchBegin, IdAShellCmdAdminSearchByEmailBegin, IdAShellCmdAdminSearchByEmailNext, IdAShellCmdAdminSearchByEmailPrevious, IdAShellCmdAdminSearchNext, IdAShellCmdAdminSearchPrevious, IdAShellCmdAdminUpdatePasswordExpiration, IdAShellCmdAuditSearchBegin, IdAShellCmdAuditSearchNext, IdAShellCmdAuditSearchPrevious, IdAShellCmdMailTest, IdAShellCmdSelf, IdAShellCmdUserBanCreate, IdAShellCmdUserBanDelete, IdAShellCmdUserBanGet, IdAShellCmdUserCreate, IdAShellCmdUserEmailAdd, IdAShellCmdUserEmailRemove, IdAShellCmdUserGet, IdAShellCmdUserGetByEmail, IdAShellCmdUserLoginHistory, IdAShellCmdUserSearchBegin, IdAShellCmdUserSearchByEmailBegin, IdAShellCmdUserSearchByEmailNext, IdAShellCmdUserSearchByEmailPrevious, IdAShellCmdUserSearchNext, IdAShellCmdUserSearchPrevious, IdAShellCmdUserUpdatePasswordExpiration`

public abstract class IdAShellCmdAbstractCR<C extends IdACommandType<R>, R extends IdAResponseType> extends IdAShellCmdAbstract
The abstract command implementation.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `IdAShellCmdAbstractCR(com.io7m.repetoir.core.RPServiceDirectoryType inServices, com.io7m.quarrel.core.QCommandMetadata inMetadata, Class<C> inCommandClass, Class<R> inResponseClass)`
  The abstract command implementation.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected abstract C`
  `onCreateCommand(com.io7m.quarrel.core.QCommandContextType context)`
  `final com.io7m.quarrel.core.QCommandStatus`
  `onExecute(com.io7m.quarrel.core.QCommandContextType context)`
  `protected abstract void`
  `onFormatResponse(com.io7m.quarrel.core.QCommandContextType context, R response)`

  ### Methods inherited from class IdAShellCmdAbstract

  `client, completer, formatter, metadata, options, services, terminal, toString`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface com.io7m.quarrel.core.QCommandOrGroupType

  `isHidden`

  ### Methods inherited from interface com.io7m.quarrel.core.QCommandType

  `onListNamedParameters, onListPositionalParameters`

- ## Constructor Details

  - ### IdAShellCmdAbstractCR

    protected IdAShellCmdAbstractCR(com.io7m.repetoir.core.RPServiceDirectoryType inServices, com.io7m.quarrel.core.QCommandMetadata inMetadata, Class<C> inCommandClass, Class<R> inResponseClass)
    The abstract command implementation.
    Parameters:
      `inServices` - The services
      `inMetadata` - The command metadata
      `inCommandClass` - The command type
      `inResponseClass` - The response type

- ## Method Details

  - ### onCreateCommand

    protected abstract C onCreateCommand(com.io7m.quarrel.core.QCommandContextType context) throws Exception
    Throws:
      `Exception`

  - ### onFormatResponse

    protected abstract void onFormatResponse(com.io7m.quarrel.core.QCommandContextType context, R response) throws Exception
    Throws:
      `Exception`

  - ### onExecute

    public final com.io7m.quarrel.core.QCommandStatus onExecute(com.io7m.quarrel.core.QCommandContextType context) throws Exception
    Throws:
      `Exception`