/**
  * {@inheritdoc}
  */
 protected function build()
 {
     // Prepare and serialize the request
     $this->request = $this->getRequestSerializer()->prepare($this);
     // If no response parser is set, add the default parser if a model matching the responseClass is found
     if (!$this->responseParser) {
         $this->responseParser = $this->operation->getResponseType() == OperationInterface::TYPE_MODEL && $this->get(self::RESPONSE_PROCESSING) == self::TYPE_MODEL ? OperationResponseParser::getInstance() : DefaultResponseParser::getInstance();
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function build()
 {
     // By default, JSON commands with AWS require no response model processing
     if ($this->operation->getResponseType() == OperationInterface::TYPE_MODEL && $this->get(self::RESPONSE_PROCESSING) == self::TYPE_MODEL) {
         $this->responseParser = $this->get('command.model_processing') ? OperationResponseParser::getInstance() : NoTranslationOperationResponseParser::getInstance();
     } else {
         $this->responseParser = DefaultResponseParser::getInstance();
     }
     parent::build();
     // Ensure that the body of the request ALWAYS includes some JSON. By default, this is an empty object.
     if (!$this->request->getBody()) {
         $this->request->setBody('{}');
     }
     // Never send the Expect header when interacting with a JSON query service
     $this->request->removeHeader('Expect');
 }
 /**
  * Create the result of the command after the request has been completed.
  * Override this method in subclasses to customize this behavior
  */
 protected function process()
 {
     $this->result = $this[self::RESPONSE_PROCESSING] != self::TYPE_RAW ? DefaultResponseParser::getInstance()->parse($this) : $this->request->getResponse();
 }