Convert H2CacheFactory to use Path
Change-Id: I8528d95e2464c4dd0845cdfa5a7b0b1e52902375
This commit is contained in:
		| @@ -37,7 +37,9 @@ import org.eclipse.jgit.lib.Config; | |||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
|  |  | ||||||
| import java.io.File; | import java.io.IOException; | ||||||
|  | import java.nio.file.Files; | ||||||
|  | import java.nio.file.Path; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| import java.util.concurrent.ExecutorService; | import java.util.concurrent.ExecutorService; | ||||||
| @@ -51,7 +53,7 @@ class H2CacheFactory implements PersistentCacheFactory, LifecycleListener { | |||||||
|  |  | ||||||
|   private final DefaultCacheFactory defaultFactory; |   private final DefaultCacheFactory defaultFactory; | ||||||
|   private final Config config; |   private final Config config; | ||||||
|   private final File cacheDir; |   private final Path cacheDir; | ||||||
|   private final List<H2CacheImpl<?, ?>> caches; |   private final List<H2CacheImpl<?, ?>> caches; | ||||||
|   private final DynamicMap<Cache<?, ?>> cacheMap; |   private final DynamicMap<Cache<?, ?>> cacheMap; | ||||||
|   private final ExecutorService executor; |   private final ExecutorService executor; | ||||||
| @@ -65,23 +67,7 @@ class H2CacheFactory implements PersistentCacheFactory, LifecycleListener { | |||||||
|       DynamicMap<Cache<?, ?>> cacheMap) { |       DynamicMap<Cache<?, ?>> cacheMap) { | ||||||
|     defaultFactory = defaultCacheFactory; |     defaultFactory = defaultCacheFactory; | ||||||
|     config = cfg; |     config = cfg; | ||||||
|  |     cacheDir = getCacheDir(site, cfg.getString("cache", null, "directory")); | ||||||
|     File loc = site.resolve(cfg.getString("cache", null, "directory")); |  | ||||||
|     if (loc == null) { |  | ||||||
|       cacheDir = null; |  | ||||||
|     } else if (loc.exists() || loc.mkdirs()) { |  | ||||||
|       if (loc.canWrite()) { |  | ||||||
|         log.info("Enabling disk cache " + loc.getAbsolutePath()); |  | ||||||
|         cacheDir = loc; |  | ||||||
|       } else { |  | ||||||
|         log.warn("Can't write to disk cache: " + loc.getAbsolutePath()); |  | ||||||
|         cacheDir = null; |  | ||||||
|       } |  | ||||||
|     } else { |  | ||||||
|       log.warn("Can't create disk cache: " + loc.getAbsolutePath()); |  | ||||||
|       cacheDir = null; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     caches = Lists.newLinkedList(); |     caches = Lists.newLinkedList(); | ||||||
|     this.cacheMap = cacheMap; |     this.cacheMap = cacheMap; | ||||||
|  |  | ||||||
| @@ -103,6 +89,27 @@ class H2CacheFactory implements PersistentCacheFactory, LifecycleListener { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   private static Path getCacheDir(SitePaths site, String name) { | ||||||
|  |     if (name == null) { | ||||||
|  |       return null; | ||||||
|  |     } | ||||||
|  |     Path loc = site.resolve(name).toPath(); | ||||||
|  |     if (!Files.exists(loc)) { | ||||||
|  |       try { | ||||||
|  |         Files.createDirectories(loc); | ||||||
|  |       } catch (IOException e) { | ||||||
|  |         log.warn("Can't create disk cache: " + loc.toAbsolutePath()); | ||||||
|  |         return null; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     if (!Files.isWritable(loc)) { | ||||||
|  |       log.warn("Can't write to disk cache: " + loc.toAbsolutePath()); | ||||||
|  |       return null; | ||||||
|  |     } | ||||||
|  |     log.info("Enabling disk cache " + loc.toAbsolutePath()); | ||||||
|  |     return loc; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public void start() { |   public void start() { | ||||||
|     if (executor != null) { |     if (executor != null) { | ||||||
| @@ -213,8 +220,7 @@ class H2CacheFactory implements PersistentCacheFactory, LifecycleListener { | |||||||
|       TypeLiteral<K> keyType, |       TypeLiteral<K> keyType, | ||||||
|       long maxSize, |       long maxSize, | ||||||
|       Long expireAfterWrite) { |       Long expireAfterWrite) { | ||||||
|     File db = new File(cacheDir, name).getAbsoluteFile(); |     String url = "jdbc:h2:" + cacheDir.resolve(name).toUri(); | ||||||
|     String url = "jdbc:h2:" + db.toURI().toString(); |  | ||||||
|     return new SqlStore<>(url, keyType, maxSize, |     return new SqlStore<>(url, keyType, maxSize, | ||||||
|         expireAfterWrite == null ? 0 : expireAfterWrite.longValue()); |         expireAfterWrite == null ? 0 : expireAfterWrite.longValue()); | ||||||
|   } |   } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Dave Borowitz
					Dave Borowitz