diff --git a/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheDriverFs.java b/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheDriverFs.java index 4d3d787b..361e8a1c 100644 --- a/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheDriverFs.java +++ b/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheDriverFs.java @@ -32,6 +32,7 @@ @Singleton @AutoBind +@SuppressWarnings("PMD.TooManyMethods") public class CacheDriverFs implements CacheDriver { private static final Logger LOGGER = LoggerFactory.getLogger(CacheDriverFs.class); @@ -137,18 +138,20 @@ private T read(String key, String validator, Class clazz) { } } - private synchronized void write(String key, String validator, Object value, int ttl) { + private void write(String key, String validator, Object value, int ttl) { Path entry = keyPath(key); try { byte[] serialized = serialize(value); - Files.createDirectories(entry); - Files.write(entry.resolve(validator), serialized); - if (ttl > 0) { - long expires = Instant.now().toEpochMilli() + (ttl * 1000L); - Files.writeString(entry.resolve(TTL), Long.toString(expires)); - } else { - Files.deleteIfExists(entry.resolve(TTL)); + synchronized (this) { + Files.createDirectories(entry); + Files.write(entry.resolve(validator), serialized); + if (ttl > 0) { + long expires = Instant.now().toEpochMilli() + (ttl * 1000L); + Files.writeString(entry.resolve(TTL), Long.toString(expires)); + } else { + Files.deleteIfExists(entry.resolve(TTL)); + } } } catch (IOException e) { // ignore @@ -175,11 +178,13 @@ private T deserialize(byte[] value, Class clazz) throws IOException { return valueEncoding.getMapper(FORMAT.SMILE).readValue(value, clazz); } - private synchronized void delete(String key) { - try (Stream entries = Files.walk(keyPath(key))) { - entries.sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); - } catch (IOException e) { - // ignore + private void delete(String key) { + synchronized (this) { + try (Stream entries = Files.walk(keyPath(key))) { + entries.sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } catch (IOException e) { + // ignore + } } } diff --git a/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheDriverMem.java b/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheDriverMem.java index c8b604dc..dcf1934f 100644 --- a/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheDriverMem.java +++ b/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheDriverMem.java @@ -22,6 +22,7 @@ @Singleton @AutoBind +@SuppressWarnings("PMD.TooManyMethods") public class CacheDriverMem implements CacheDriver { private static final Logger LOGGER = LoggerFactory.getLogger(CacheDriverMem.class); @@ -101,12 +102,16 @@ public void del(String key) { delete(key); } - private synchronized void set(String key, Map entry) { - cache.put(key, entry); + private void set(String key, Map entry) { + synchronized (cache) { + cache.put(key, entry); + } } - private synchronized void delete(String key) { - cache.remove(key); + private void delete(String key) { + synchronized (cache) { + cache.remove(key); + } } private void checkExpired(String key) { diff --git a/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheImpl.java b/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheImpl.java index 9e9b649c..5ae1fa43 100644 --- a/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheImpl.java +++ b/xtraplatform-cache/src/main/java/de/ii/xtraplatform/cache/app/CacheImpl.java @@ -9,7 +9,6 @@ import com.github.azahnen.dagger.annotations.AutoBind; import dagger.Lazy; -import de.ii.xtraplatform.base.domain.AppContext; import de.ii.xtraplatform.base.domain.AppLifeCycle; import de.ii.xtraplatform.cache.domain.Cache; import de.ii.xtraplatform.cache.domain.CacheDriver; @@ -33,8 +32,7 @@ public class CacheImpl implements Cache, AppLifeCycle { private CacheDriver driver; @Inject - public CacheImpl(AppContext appContext, Lazy> drivers) { - // TODO appContext.getConfiguration().getCache(); + public CacheImpl(Lazy> drivers) { this.drivers = drivers; }