Esempio n. 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;
 }
Esempio n. 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 null;
 }
Esempio n. 3
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;
 }
 /**
  * @test
  */
 public function shouldCreateWithSuggestionsOnIdentityAsModel()
 {
     $request = new Capture(new Identity('theId', \stdClass::class));
     $exception = RequestNotSupportedException::create($request);
     $this->assertInstanceOf(RequestNotSupportedException::class, $exception);
     $this->assertEquals('Request Capture{model: Identity} is not supported. Make sure the storage extension for "stdClass" is registered to the gateway. Make sure the storage find method returns an instance by id "theId". Make sure the gateway supports the requests and there is an action which supports this request (The method returns true). There may be a bug, so look for a related issue on the issue tracker.', $exception->getMessage());
 }
 /**
  * @test
  */
 public function shouldCreateWithObjectRequest()
 {
     $exception = RequestNotSupportedException::create(new \stdClass());
     $this->assertInstanceOf('Payum\\Core\\Exception\\RequestNotSupportedException', $exception);
     $this->assertEquals('Request stdClass is not supported.', $exception->getMessage());
 }