/**
  * Redirects the request to another action and / or controller.
  *
  * @param string $actionName Name of the action to forward to
  * @param string $controllerName Unqualified object name of the controller to forward to. If not specified, the current controller is used.
  * @param string $packageKey Key of the package containing the controller to forward to. If not specified, the current package is assumed.
  * @param array $arguments Array of arguments for the target action
  * @param integer $delay (optional) The delay in seconds. Default is no delay.
  * @param integer $statusCode (optional) The HTTP status code for the redirect. Default is "303 See Other"
  * @param string $format The format to use for the redirect URI
  * @return void
  * @throws \TYPO3\Flow\Mvc\Exception\StopActionException
  * @see forward()
  * @api
  */
 protected function redirect($actionName, $controllerName = NULL, $packageKey = NULL, array $arguments = NULL, $delay = 0, $statusCode = 303, $format = NULL)
 {
     if ($this->mediaType === 'application/json') {
         // render all arguments
         if (!empty($arguments)) {
             foreach ($arguments as $key => $value) {
                 $this->view->assign($key, $value);
             }
         }
         // get uri (like AbstractController->redirect())
         // do we need/want the uri?
         if ($packageKey !== NULL && strpos($packageKey, '\\') !== FALSE) {
             list($packageKey, $subpackageKey) = explode('\\', $packageKey, 2);
         } else {
             $subpackageKey = NULL;
         }
         $this->uriBuilder->reset();
         if ($format === NULL) {
             $this->uriBuilder->setFormat($this->request->getFormat());
         } else {
             $this->uriBuilder->setFormat($format);
         }
         $uri = $this->uriBuilder->setCreateAbsoluteUri(TRUE)->uriFor($actionName, $arguments, $controllerName, $packageKey, $subpackageKey);
         $this->view->assign('see', $uri);
     } else {
         parent::redirect($actionName, $controllerName, $packageKey, $arguments, $delay, $statusCode, $format);
     }
 }
 /**
  * Implementation of the arguments initialization in the action controller:
  * Automatically registers arguments of the current action
  *
  * Don't override this method - use initializeAction() instead.
  *
  * @return void
  * @throws \TYPO3\Flow\Mvc\Exception\InvalidArgumentTypeException
  * @see initializeArguments()
  */
 public function initializeActionMethodArguments()
 {
     \TYPO3\Flow\Mvc\Controller\RestController::initializeActionMethodArguments();
 }
 /**
  * Initializes the view before invoking an action method.
  *
  * Override this method to solve assign variables common for all actions
  * or prepare the view in another way before the action is called.
  *
  * @param ViewInterface $view The view to be initialized
  * @return void
  * @api
  */
 protected function initializeView(ViewInterface $view)
 {
     parent::initializeView($view);
     if (!is_null($this->view) && $this->view instanceof JsonView && $this->request->getFormat() === 'json') {
         $this->view->setOption('contentTypeHeader', current($this->supportedMediaTypes));
     }
 }