diff --git a/src/main/java/com/avaje/ebean/cache/ServerCacheFactory.java b/src/main/java/com/avaje/ebean/cache/ServerCacheFactory.java index 88f5d6083..4c913a729 100644 --- a/src/main/java/com/avaje/ebean/cache/ServerCacheFactory.java +++ b/src/main/java/com/avaje/ebean/cache/ServerCacheFactory.java @@ -21,6 +21,6 @@ public interface ServerCacheFactory { /** * Create the cache for the given type with options. */ - ServerCache createCache(String cacheKey, ServerCacheOptions cacheOptions); + ServerCache createCache(ServerCacheType type, String cacheKey, ServerCacheOptions cacheOptions); } diff --git a/src/main/java/com/avaje/ebeaninternal/server/cache/CachedBeanData.java b/src/main/java/com/avaje/ebeaninternal/server/cache/CachedBeanData.java index 68fe933b4..8bee85e3f 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/cache/CachedBeanData.java +++ b/src/main/java/com/avaje/ebeaninternal/server/cache/CachedBeanData.java @@ -1,17 +1,18 @@ package com.avaje.ebeaninternal.server.cache; +import java.io.Serializable; import java.util.Arrays; /** * Data held in the bean cache for cached beans. */ -public class CachedBeanData { +public class CachedBeanData implements Serializable { private final long whenCreated; private final Object sharableBean; private final boolean[] loaded; private final Object[] data; - + private final boolean naturalKeyUpdate; private final Object naturalKey; private final Object oldNaturalKey; @@ -29,7 +30,7 @@ public class CachedBeanData { public String toString() { return Arrays.toString(data); } - + /** * Return a copy of the property data. */ @@ -48,6 +49,20 @@ public class CachedBeanData { return dest; } + /** + * Return the loaded status for each property. + */ + public boolean[] getLoaded() { + return loaded; + } + + /** + * Return the property values. + */ + public Object[] getData() { + return data; + } + /** * Return when the cached data was created. */ @@ -75,7 +90,7 @@ public class CachedBeanData { public Object getNaturalKey() { return naturalKey; } - + /** * Return the old natural key (its entry should be removed). */ diff --git a/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultCacheHolder.java b/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultCacheHolder.java index 742be5f8f..55e7e4a28 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultCacheHolder.java +++ b/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultCacheHolder.java @@ -4,6 +4,7 @@ import com.avaje.ebean.annotation.CacheTuning; import com.avaje.ebean.cache.ServerCache; import com.avaje.ebean.cache.ServerCacheFactory; import com.avaje.ebean.cache.ServerCacheOptions; +import com.avaje.ebean.cache.ServerCacheType; import java.util.HashMap; import java.util.concurrent.ConcurrentHashMap; @@ -51,7 +52,7 @@ public class DefaultCacheHolder { /** * Return the cache for a given bean type. */ - public ServerCache getCache(String cacheKey) { + public ServerCache getCache(String cacheKey, ServerCacheType type) { ServerCache cache = concMap.get(cacheKey); if (cache != null) { @@ -61,7 +62,7 @@ public class DefaultCacheHolder { cache = synchMap.get(cacheKey); if (cache == null) { ServerCacheOptions options = getCacheOptions(cacheKey); - cache = cacheFactory.createCache(cacheKey, options); + cache = cacheFactory.createCache(type, cacheKey, options); synchMap.put(cacheKey, cache); concMap.put(cacheKey, cache); } diff --git a/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultServerCacheFactory.java b/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultServerCacheFactory.java index 49b933c6b..62c22abbe 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultServerCacheFactory.java +++ b/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultServerCacheFactory.java @@ -4,6 +4,7 @@ import com.avaje.ebean.EbeanServer; import com.avaje.ebean.cache.ServerCache; import com.avaje.ebean.cache.ServerCacheFactory; import com.avaje.ebean.cache.ServerCacheOptions; +import com.avaje.ebean.cache.ServerCacheType; /** @@ -17,7 +18,7 @@ public class DefaultServerCacheFactory implements ServerCacheFactory { this.ebeanServer = ebeanServer; } - public ServerCache createCache(String cacheKey, ServerCacheOptions cacheOptions) { + public ServerCache createCache(ServerCacheType type, String cacheKey, ServerCacheOptions cacheOptions) { ServerCache cache = new DefaultServerCache(cacheKey, cacheOptions); cache.init(ebeanServer); diff --git a/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultServerCacheManager.java b/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultServerCacheManager.java index 088b0d9fd..defde3a77 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultServerCacheManager.java +++ b/src/main/java/com/avaje/ebeaninternal/server/cache/DefaultServerCacheManager.java @@ -5,6 +5,7 @@ import com.avaje.ebean.cache.ServerCache; import com.avaje.ebean.cache.ServerCacheFactory; import com.avaje.ebean.cache.ServerCacheManager; import com.avaje.ebean.cache.ServerCacheOptions; +import com.avaje.ebean.cache.ServerCacheType; import com.avaje.ebeaninternal.api.SpiEbeanServer; @@ -70,33 +71,25 @@ public class DefaultServerCacheManager implements ServerCacheManager { public ServerCache getCollectionIdsCache(Class beanType, String propertyName) { - return collectionIdsCache.getCache(beanType.getName() + "." + propertyName); - } - - public boolean isCollectionIdsCaching(Class beanType) { - return collectionIdsCache.isCaching(beanType.getName()); + return collectionIdsCache.getCache(beanType.getName() + "." + propertyName, ServerCacheType.COLLECTION_IDS); } public ServerCache getNaturalKeyCache(Class beanType) { - return naturalKeyCache.getCache(beanType.getName()); - } - - public boolean isNaturalKeyCaching(Class beanType) { - return naturalKeyCache.isCaching(beanType.getName()); + return naturalKeyCache.getCache(beanType.getName(), ServerCacheType.NATURAL_KEY); } /** * Return the query cache for a given bean type. */ public ServerCache getQueryCache(Class beanType) { - return queryCache.getCache(beanType.getName()); + return queryCache.getCache(beanType.getName(), ServerCacheType.QUERY); } /** * Return the bean cache for a given bean type. */ public ServerCache getBeanCache(Class beanType) { - return beanCache.getCache(beanType.getName()); + return beanCache.getCache(beanType.getName(), ServerCacheType.BEAN); } /** @@ -107,9 +100,4 @@ public class DefaultServerCacheManager implements ServerCacheManager { } - public boolean isQueryCaching(Class beanType) { - return queryCache.isCaching(beanType.getName()); - } - - }