You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/02/10 13:27:54 UTC
cayenne git commit: QueryCacheEntryFactory type-safety: it now
returns List instead of plain Object
Repository: cayenne
Updated Branches:
refs/heads/master 478ebac32 -> 00551aa28
QueryCacheEntryFactory type-safety: it now returns List instead of plain Object
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/00551aa2
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/00551aa2
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/00551aa2
Branch: refs/heads/master
Commit: 00551aa28efcd29f49ff66594f4e3d7e6debad34
Parents: 478ebac
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Feb 10 16:19:15 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Feb 10 16:19:15 2017 +0300
----------------------------------------------------------------------
.../apache/cayenne/CayenneContextQueryAction.java | 3 ++-
.../cayenne/access/DataDomainQueryAction.java | 4 ++--
.../apache/cayenne/cache/EhCacheQueryCache.java | 14 ++++----------
.../org/apache/cayenne/cache/MapQueryCache.java | 18 +++++-------------
.../cayenne/cache/QueryCacheEntryFactory.java | 4 +++-
.../cayenne/util/ObjectContextQueryAction.java | 7 +++----
.../cayenne/cache/EhCacheQueryCacheTest.java | 6 +++---
.../cache/EhCacheQueryCache_WithConfigTest.java | 2 +-
8 files changed, 23 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/00551aa2/cayenne-server/src/main/java/org/apache/cayenne/CayenneContextQueryAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/CayenneContextQueryAction.java b/cayenne-server/src/main/java/org/apache/cayenne/CayenneContextQueryAction.java
index 2ce289f..e0b693c 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/CayenneContextQueryAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/CayenneContextQueryAction.java
@@ -21,6 +21,7 @@ package org.apache.cayenne;
import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
import org.apache.cayenne.cache.QueryCacheEntryFactory;
import org.apache.cayenne.map.EntityResolver;
@@ -61,7 +62,7 @@ class CayenneContextQueryAction extends ObjectContextQueryAction {
protected QueryCacheEntryFactory getCacheObjectFactory() {
return new QueryCacheEntryFactory() {
- public Object createObject() {
+ public List createObject() {
if (interceptPaginatedQuery() != DONE) {
runQuery();
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/00551aa2/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java
index 5e9e8bb..933d616 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java
@@ -404,7 +404,7 @@ class DataDomainQueryAction implements QueryRouter, OperationObserver {
} else {
// on cache-refresh request, fetch without blocking and fill the
// cache
- queryCache.put(metadata, (List) factory.createObject());
+ queryCache.put(metadata, factory.createObject());
}
return DONE;
@@ -414,7 +414,7 @@ class DataDomainQueryAction implements QueryRouter, OperationObserver {
return new QueryCacheEntryFactory() {
@Override
- public Object createObject() {
+ public List createObject() {
runQueryInTransaction();
List list = response.firstList();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/00551aa2/cayenne-server/src/main/java/org/apache/cayenne/cache/EhCacheQueryCache.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/cache/EhCacheQueryCache.java b/cayenne-server/src/main/java/org/apache/cayenne/cache/EhCacheQueryCache.java
index 0bd5b6c..4dfa1dd 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/cache/EhCacheQueryCache.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/cache/EhCacheQueryCache.java
@@ -120,19 +120,13 @@ public class EhCacheQueryCache implements QueryCache {
// if not succeeded in reading again putting
// object to the cache ourselves
- Object object = factory.createObject();
- if (!(object instanceof List)) {
- if (object == null) {
- throw new CayenneRuntimeException("Null object created: " + metadata.getCacheKey());
- } else {
- throw new CayenneRuntimeException("Invalid query result, expected List, got "
- + object.getClass().getName());
- }
+ List object = factory.createObject();
+ if (object == null) {
+ throw new CayenneRuntimeException("Null object created: " + metadata.getCacheKey());
}
cache.put(new Element(key, object));
-
- return (List) object;
+ return object;
} finally {
cache.releaseWriteLockOnKey(key);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/00551aa2/cayenne-server/src/main/java/org/apache/cayenne/cache/MapQueryCache.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/cache/MapQueryCache.java b/cayenne-server/src/main/java/org/apache/cayenne/cache/MapQueryCache.java
index 82f4ffa..de74b13 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/cache/MapQueryCache.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/cache/MapQueryCache.java
@@ -43,6 +43,7 @@ public class MapQueryCache implements QueryCache, Serializable {
this(DEFAULT_CACHE_SIZE);
}
+ @SuppressWarnings("unchecked")
public MapQueryCache(int maxSize) {
this.map = new LRUMap(maxSize);
}
@@ -72,21 +73,12 @@ public class MapQueryCache implements QueryCache, Serializable {
public List get(QueryMetadata metadata, QueryCacheEntryFactory factory) {
List result = get(metadata);
if (result == null) {
- Object newObject = factory.createObject();
-
- if (!(newObject instanceof List)) {
- if (newObject == null) {
- throw new CayenneRuntimeException("Null on cache rebuilding: "
- + metadata.getCacheKey());
- }
- else {
- throw new CayenneRuntimeException(
- "Invalid query result, expected List, got "
- + newObject.getClass().getName());
- }
+ List newObject = factory.createObject();
+ if (newObject == null) {
+ throw new CayenneRuntimeException("Null on cache rebuilding: " + metadata.getCacheKey());
}
- result = (List) newObject;
+ result = newObject;
put(metadata, result);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/00551aa2/cayenne-server/src/main/java/org/apache/cayenne/cache/QueryCacheEntryFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/cache/QueryCacheEntryFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/cache/QueryCacheEntryFactory.java
index 0e7dedb..8f74a1e 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/cache/QueryCacheEntryFactory.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/cache/QueryCacheEntryFactory.java
@@ -18,6 +18,8 @@
****************************************************************/
package org.apache.cayenne.cache;
+import java.util.List;
+
/**
* A factory that is used by the cache to rebuild expired entries.
*
@@ -29,5 +31,5 @@ public interface QueryCacheEntryFactory {
* Provides a fresh value of the cache entry. Normally this operation would perform a
* database query. This operation must not return null.
*/
- Object createObject();
+ List createObject();
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/00551aa2/cayenne-server/src/main/java/org/apache/cayenne/util/ObjectContextQueryAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/util/ObjectContextQueryAction.java b/cayenne-server/src/main/java/org/apache/cayenne/util/ObjectContextQueryAction.java
index 41f4a54..0db049b 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/util/ObjectContextQueryAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/util/ObjectContextQueryAction.java
@@ -348,10 +348,9 @@ public abstract class ObjectContextQueryAction {
if (response == null) {
response = new ListResponse(cachedResults);
}
- }
- else {
+ } else {
// on cache-refresh request, fetch without blocking and fill the cache
- queryCache.put(metadata, (List) factory.createObject());
+ queryCache.put(metadata, factory.createObject());
}
return DONE;
@@ -370,7 +369,7 @@ public abstract class ObjectContextQueryAction {
protected QueryCacheEntryFactory getCacheObjectFactory() {
return new QueryCacheEntryFactory() {
- public Object createObject() {
+ public List createObject() {
executePostCache();
return response.firstList();
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/00551aa2/cayenne-server/src/test/java/org/apache/cayenne/cache/EhCacheQueryCacheTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/cache/EhCacheQueryCacheTest.java b/cayenne-server/src/test/java/org/apache/cayenne/cache/EhCacheQueryCacheTest.java
index e487dd7..eda8ee2 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/cache/EhCacheQueryCacheTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/cache/EhCacheQueryCacheTest.java
@@ -67,7 +67,7 @@ public class EhCacheQueryCacheTest {
EhCacheQueryCache cache = new EhCacheQueryCache(cacheManager);
- Object[] lists = new Object[] { new ArrayList<Object>(), new ArrayList<Object>(), new ArrayList<Object>() };
+ ArrayList[] lists = new ArrayList[] { new ArrayList<>(), new ArrayList<>(), new ArrayList<>() };
QueryCacheEntryFactory factory = mock(QueryCacheEntryFactory.class);
when(factory.createObject()).thenReturn(lists[0], lists[1], lists[2]);
@@ -88,7 +88,7 @@ public class EhCacheQueryCacheTest {
EhCacheQueryCache cache = new EhCacheQueryCache(cacheManager);
- Object[] lists = new Object[] { new ArrayList<Object>(), new ArrayList<Object>(), new ArrayList<Object>() };
+ ArrayList[] lists = new ArrayList[] { new ArrayList<>(), new ArrayList<>(), new ArrayList<>() };
QueryCacheEntryFactory factory = mock(QueryCacheEntryFactory.class);
when(factory.createObject()).thenReturn(lists[0], lists[1], lists[2]);
@@ -110,7 +110,7 @@ public class EhCacheQueryCacheTest {
EhCacheQueryCache cache = new EhCacheQueryCache(cacheManager);
- Object[] lists = new Object[] { new ArrayList<Object>(), new ArrayList<Object>(), new ArrayList<Object>() };
+ ArrayList[] lists = new ArrayList[] { new ArrayList<>(), new ArrayList<>(), new ArrayList<>() };
QueryCacheEntryFactory factory = mock(QueryCacheEntryFactory.class);
when(factory.createObject()).thenReturn(lists[0], lists[1], lists[2]);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/00551aa2/cayenne-server/src/test/java/org/apache/cayenne/cache/EhCacheQueryCache_WithConfigTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/cache/EhCacheQueryCache_WithConfigTest.java b/cayenne-server/src/test/java/org/apache/cayenne/cache/EhCacheQueryCache_WithConfigTest.java
index 964abd0..48569a9 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/cache/EhCacheQueryCache_WithConfigTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/cache/EhCacheQueryCache_WithConfigTest.java
@@ -55,7 +55,7 @@ public class EhCacheQueryCache_WithConfigTest {
EhCacheQueryCache cache = new EhCacheQueryCache(cacheManager);
- Object[] lists = new Object[] { new ArrayList<Object>(), new ArrayList<Object>(), new ArrayList<Object>() };
+ ArrayList[] lists = new ArrayList[] { new ArrayList<>(), new ArrayList<>(), new ArrayList<>() };
QueryCacheEntryFactory factory = mock(QueryCacheEntryFactory.class);
when(factory.createObject()).thenReturn(lists[0], lists[1], lists[2]);