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 14:47:36 UTC
cayenne git commit: CAY-2224 Make cache key generation aware of Query
name and new ColumnSelect query
Repository: cayenne
Updated Branches:
refs/heads/master 4365a8f94 -> 274d192be
CAY-2224 Make cache key generation aware of Query name and new ColumnSelect query
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/274d192b
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/274d192b
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/274d192b
Branch: refs/heads/master
Commit: 274d192be3227ea4c0017612c64ef2cd98d02665
Parents: 4365a8f
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Feb 10 17:47:15 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Feb 10 17:47:15 2017 +0300
----------------------------------------------------------------------
.../java/org/apache/cayenne/query/ColumnSelect.java | 1 +
.../java/org/apache/cayenne/query/FluentSelect.java | 1 +
.../apache/cayenne/query/SelectQueryMetadata.java | 15 +++++++++++++++
3 files changed, 17 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/274d192b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java
index c3cfee0..85c774b 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java
@@ -72,6 +72,7 @@ public class ColumnSelect<T> extends FluentSelect<T, ColumnSelect<T>> {
*/
protected ColumnSelect(ObjectSelect<T> select) {
super();
+ this.name = select.name;
this.entityType = select.entityType;
this.entityName = select.entityName;
this.dbEntityName = select.dbEntityName;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/274d192b/cayenne-server/src/main/java/org/apache/cayenne/query/FluentSelect.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/FluentSelect.java b/cayenne-server/src/main/java/org/apache/cayenne/query/FluentSelect.java
index 1ceeb17..363f8b1 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/FluentSelect.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/FluentSelect.java
@@ -92,6 +92,7 @@ public abstract class FluentSelect<T, S extends FluentSelect<T, S>> extends Indi
throw new CayenneRuntimeException("Undefined root entity of the query");
}
+ replacement.setName(name);
replacement.setQualifier(where);
replacement.addOrderings(orderings);
replacement.setPrefetchTree(prefetches);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/274d192b/cayenne-server/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java b/cayenne-server/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java
index 9519bb6..d4b2929 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java
@@ -72,6 +72,9 @@ class SelectQueryMetadata extends BaseQueryMetadata {
// fetch offset and limit
StringBuilder key = new StringBuilder();
+ if(query.getName() != null) {
+ key.append(query.getName()).append('/');
+ }
ObjEntity entity = getObjEntity();
if (entity != null) {
@@ -80,6 +83,18 @@ class SelectQueryMetadata extends BaseQueryMetadata {
key.append("db:").append(dbEntity.getName());
}
+ if(query.getColumns() != null && !query.getColumns().isEmpty()) {
+ key.append("/");
+ for(Property<?> property : query.getColumns()) {
+ key.append("c:");
+ try {
+ property.getExpression().appendAsString(key);
+ } catch (IOException e) {
+ throw new CayenneRuntimeException("Unexpected IO Exception appending to StringBuilder", e);
+ }
+ }
+ }
+
if (query.getQualifier() != null) {
key.append('/');
try {