From ab3dec11254e084094b5626f16498a64bdf00f0d Mon Sep 17 00:00:00 2001
From: Guilhem N <egetick@gmail.com>
Date: Wed, 30 Nov 2016 16:52:13 +0100
Subject: [PATCH] Test .{_format} removal

---
 ApiDocGenerator.php                           | 16 +++++++++++++++-
 Tests/Functional/Controller/ApiController.php |  2 +-
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/ApiDocGenerator.php b/ApiDocGenerator.php
index f3ba3cf..a631155 100644
--- a/ApiDocGenerator.php
+++ b/ApiDocGenerator.php
@@ -13,18 +13,21 @@ namespace EXSyst\Bundle\ApiDocBundle;
 
 use EXSyst\Bundle\ApiDocBundle\Describer\DescriberInterface;
 use EXSyst\Component\Swagger\Swagger;
+use Psr\Cache\CacheItemPoolInterface;
 
 final class ApiDocGenerator
 {
     private $swagger;
     private $describers;
+    private $cacheItemPool;
 
     /**
      * @param DescriberInterface[] $describers
      */
-    public function __construct(array $describers)
+    public function __construct(array $describers, CacheItemPoolInterface $cacheItemPool = null)
     {
         $this->describers = $describers;
+        $this->cacheItemPool = $cacheItemPool;
     }
 
     public function generate(): Swagger
@@ -33,11 +36,22 @@ final class ApiDocGenerator
             return $this->swagger;
         }
 
+        if ($this->cacheItemPool) {
+            $item = $this->cacheItemPool->getItem('swagger_doc');
+            if ($item->isHit()) {
+                return $this->swagger = $item->get();
+            }
+        }
+
         $this->swagger = new Swagger();
         foreach ($this->describers as $describer) {
             $describer->describe($this->swagger);
         }
 
+        if (isset($item)) {
+            $this->cacheItemPool->save($item->set($this->swagger));
+        }
+
         return $this->swagger;
     }
 }
diff --git a/Tests/Functional/Controller/ApiController.php b/Tests/Functional/Controller/ApiController.php
index b814b11..8142aa1 100644
--- a/Tests/Functional/Controller/ApiController.php
+++ b/Tests/Functional/Controller/ApiController.php
@@ -29,7 +29,7 @@ class ApiController
     }
 
     /**
-     * @Route("/fosrest", methods={"POST"})
+     * @Route("/fosrest.{_format}", methods={"POST"})
      * @QueryParam(name="foo")
      * @RequestParam(name="bar")
      */