/** * {@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; }
/** * {@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 shouldCallOnExecuteForAllExtensionsInCollection() { $expectedContext = $this->createContextMock(); $extensionFirst = $this->createExtensionMock(); $extensionFirst->expects($this->once())->method('onExecute')->with($this->identicalTo($expectedContext)); $extensionSecond = $this->createExtensionMock(); $extensionSecond->expects($this->once())->method('onExecute')->with($expectedContext); $collection = new ExtensionCollection(); $collection->addExtension($extensionFirst); $collection->addExtension($extensionSecond); $result = $collection->onExecute($expectedContext); $this->assertNull($result); }
/** * @test */ public function shouldCallOnExecuteForAllExtensionsInCollection() { $expectedRequest = new \stdClass(); $expectedAction = $this->getMock('Payum\\Core\\Action\\ActionInterface'); $extensionFirst = $this->createExtensionMock(); $extensionFirst->expects($this->once())->method('onExecute')->with($this->identicalTo($expectedRequest), $this->identicalTo($expectedAction)); $extensionSecond = $this->createExtensionMock(); $extensionSecond->expects($this->once())->method('onExecute')->with($this->identicalTo($expectedRequest), $this->identicalTo($expectedAction)); $collection = new ExtensionCollection(); $collection->addExtension($extensionFirst); $collection->addExtension($extensionSecond); $result = $collection->onExecute($expectedRequest, $expectedAction); $this->assertNull($result); }
/** * {@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; }