Beispiel #1
0
 /**
  * {@inheritDoc}
  */
 public function execute($request, $catchReply = false)
 {
     $context = new Context($this, $request, $this->stack);
     array_push($this->stack, $context);
     try {
         $this->extensions->onPreExecute($context);
         if (false == $context->getAction()) {
             if (false == ($action = $this->findActionSupported($context->getRequest()))) {
                 throw RequestNotSupportedException::create($context->getRequest());
             }
             $context->setAction($action);
         }
         $this->extensions->onExecute($context);
         $context->getAction()->execute($request);
         $this->extensions->onPostExecute($context);
         array_pop($this->stack);
     } catch (ReplyInterface $reply) {
         $context->setReply($reply);
         $this->extensions->onPostExecute($context);
         array_pop($this->stack);
         if ($catchReply && $context->getReply()) {
             return $context->getReply();
         }
         if ($context->getReply()) {
             throw $context->getReply();
         }
     } catch (\Exception $e) {
         $context->setException($e);
         $this->onPostExecuteWithException($context);
     }
     return;
 }
Beispiel #2
0
    /**
     * {@inheritDoc}
     */
    public function execute($request, $catchReply = false)
    {
        $action = null;
        try {
            $this->extensions->onPreExecute($request);

            if (false == $action = $this->findActionSupported($request)) {
                throw RequestNotSupportedException::create($request);
            }

            $this->extensions->onExecute($request, $action);

            $action->execute($request);

            $this->extensions->onPostExecute($request, $action);
        } catch (ReplyInterface $reply) {
            $reply =
                $this->extensions->onReply($reply, $request, $action) ?:
                $reply
            ;

            if ($catchReply) {
                return $reply;
            }

            throw $reply;
        } catch (\Exception $e) {
            $this->extensions->onException($e, $request, $action ?: null);

            throw $e;
        }

        return;
    }
 /**
  * @test
  */
 public function shouldCallOnPreExecuteForAllExtensionsInCollection()
 {
     $expectedRequest = new \stdClass();
     $extensionFirst = $this->createExtensionMock();
     $extensionFirst->expects($this->once())->method('onPreExecute')->with($this->identicalTo($expectedRequest));
     $extensionSecond = $this->createExtensionMock();
     $extensionSecond->expects($this->once())->method('onPreExecute')->with($this->identicalTo($expectedRequest));
     $collection = new ExtensionCollection();
     $collection->addExtension($extensionFirst);
     $collection->addExtension($extensionSecond);
     $result = $collection->onPreExecute($expectedRequest);
     $this->assertNull($result);
 }
Beispiel #4
0
 /**
  * {@inheritDoc}
  */
 public function execute($request, $catchInteractive = false)
 {
     $action = null;
     try {
         $this->extensions->onPreExecute($request);
         if (false == ($action = $this->findActionSupported($request))) {
             throw RequestNotSupportedException::create($request);
         }
         $this->extensions->onExecute($request, $action);
         $action->execute($request);
         $this->extensions->onPostExecute($request, $action);
     } catch (InteractiveRequestInterface $interactiveRequest) {
         $interactiveRequest = $this->extensions->onInteractiveRequest($interactiveRequest, $request, $action) ?: $interactiveRequest;
         if ($catchInteractive) {
             return $interactiveRequest;
         }
         throw $interactiveRequest;
     } catch (\Exception $e) {
         $this->extensions->onException($e, $request, $action ?: null);
         throw $e;
     }
     return null;
 }