/** * Returns the array with request method action -> route mappings * for the passed servlet request. * * @param \AppserverIo\Psr\Servlet\ServletRequestInterface $servletRequest The request instance * * @return array The request method action -> route mappings for the passed request method */ public function getActionMappingsForServletRequest(ServletRequestInterface $servletRequest) { // load the servlet request method $requestMethod = $servletRequest->getMethod(); // load the action mappings $actionMappings = $this->getActionMappings(); // query whether we've action mappings for the request method or not if (isset($actionMappings[$requestMethod])) { return $actionMappings[$requestMethod]; } // nothing found? Method must not be allowed then throw new DispatchException(sprintf('Method %s not allowed', $requestMethod), 405); }
/** * Delegation method for specific Http methods. * * @param \AppserverIo\Psr\Servlet\ServletRequestInterface $servletRequest The request instance * @param \AppserverIo\Psr\Servlet\ServletResponseInterface $servletResponse The response instance * * @return void * @throws \AppserverIo\Psr\Servlet\ServletException Is thrown if the request method is not available */ public function service(ServletRequestInterface $servletRequest, ServletResponseInterface $servletResponse) { // pre-initialize response $servletResponse->addHeader(Protocol::HEADER_X_POWERED_BY, get_class($this)); // check the request method to invoke the appropriate method switch ($servletRequest->getMethod()) { case Protocol::METHOD_CONNECT: $this->doConnect($servletRequest, $servletResponse); break; case Protocol::METHOD_DELETE: $this->doDelete($servletRequest, $servletResponse); break; case Protocol::METHOD_GET: $this->doGet($servletRequest, $servletResponse); break; case Protocol::METHOD_HEAD: $this->doHead($servletRequest, $servletResponse); break; case Protocol::METHOD_OPTIONS: $this->doOptions($servletRequest, $servletResponse); break; case Protocol::METHOD_POST: $this->doPost($servletRequest, $servletResponse); break; case Protocol::METHOD_PUT: $this->doPut($servletRequest, $servletResponse); break; case Protocol::METHOD_TRACE: $this->doTrace($servletRequest, $servletResponse); break; case Protocol::METHOD_PATCH: $this->doPatch($servletRequest, $servletResponse); break; default: throw new ServletException(sprintf('%s is not implemented yet.', $servletRequest->getMethod())); } }