From 443d35eae23c874ed38305fbe75216339c41beaf Mon Sep 17 00:00:00 2001
From: Henri Tremblay <henri.tremblay@gmail.com>
Date: Thu, 16 Feb 2017 15:08:30 -0500
Subject: [PATCH] Put Ehcache back

---
 pom.xml                                       | 10 ++++++++
 .../samples/petclinic/system/CacheConfig.java | 24 +++++++++++++++----
 src/main/resources/application.properties     |  3 ---
 3 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/pom.xml b/pom.xml
index ca1a4c7..82e78e1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,6 +79,16 @@
       <scope>runtime</scope>
     </dependency>
 
+    <!-- EhCache -->
+    <dependency>
+      <groupId>javax.cache</groupId>
+      <artifactId>cache-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.ehcache</groupId>
+      <artifactId>ehcache</artifactId>
+    </dependency>
+
     <!-- webjars -->
     <dependency>
       <groupId>org.webjars</groupId>
diff --git a/src/main/java/org/springframework/samples/petclinic/system/CacheConfig.java b/src/main/java/org/springframework/samples/petclinic/system/CacheConfig.java
index 8798bfb..4bc23bb 100755
--- a/src/main/java/org/springframework/samples/petclinic/system/CacheConfig.java
+++ b/src/main/java/org/springframework/samples/petclinic/system/CacheConfig.java
@@ -1,14 +1,30 @@
 package org.springframework.samples.petclinic.system;
 
+import javax.cache.configuration.Configuration;
+import javax.cache.configuration.MutableConfiguration;
+
+import org.springframework.boot.autoconfigure.cache.CacheManagerCustomizer;
 import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.context.annotation.Configuration;
+import org.springframework.cache.jcache.JCacheCacheManager;
 import org.springframework.context.annotation.Profile;
 
 /**
- * Cache could be disable in unit test.
+ * Cache could be disabled in unit test.
  */
-@Configuration
+@org.springframework.context.annotation.Configuration
 @EnableCaching
 @Profile("production")
-class CacheConfig {
+class CacheConfig implements CacheManagerCustomizer<JCacheCacheManager> {
+
+    @Override
+    public void customize(JCacheCacheManager cacheManager) {
+        Configuration<Object, Object> cacheConfiguration = createCacheConfiguration();
+        cacheManager.getCacheManager().createCache("vets", cacheConfiguration);
+    }
+
+    private Configuration<Object, Object> createCacheConfiguration() {
+        // Create a cache using infinite heap. A real application will want to use an implementation dependent
+        // configuration that will better fit your needs
+        return new MutableConfiguration<>().setStatisticsEnabled(true);
+    }
 }
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index fb3e513..fb07c6c 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -24,6 +24,3 @@ logging.level.org.springframework=INFO
 
 # Active Spring profiles
 spring.profiles.active=production
-
-# Caching
-spring.cache.cache-names=vets
-- 
GitLab