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 {