You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ol...@apache.org on 2012/06/29 14:17:50 UTC
svn commit: r1355338 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/query/NamedQuery.java
test/java/org/apache/cayenne/CayenneContextNamedQueryCachingTest.java
test/resources/multi-tier.map.xml
Author: oltka
Date: Fri Jun 29 12:17:49 2012
New Revision: 1355338
URL: http://svn.apache.org/viewvc?rev=1355338&view=rev
Log:
CAY-1715 Passing parameters to mapped EJBQL queries
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/NamedQuery.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/multi-tier.map.xml
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/NamedQuery.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/NamedQuery.java?rev=1355338&r1=1355337&r2=1355338&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/NamedQuery.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/NamedQuery.java Fri Jun 29 12:17:49 2012
@@ -22,6 +22,7 @@ package org.apache.cayenne.query;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import org.apache.cayenne.CayenneRuntimeException;
@@ -126,6 +127,13 @@ public class NamedQuery extends Indirect
if (query instanceof ParameterizedQuery) {
query = ((ParameterizedQuery) query).createQuery(normalizedParameters());
+ } else if (query instanceof EJBQLQuery) {
+
+ Iterator it = normalizedParameters().entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry pairs = (Map.Entry)it.next();
+ ((EJBQLQuery)query).setParameter((String) pairs.getKey(), pairs.getValue());
+ }
}
return query;
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingTest.java?rev=1355338&r1=1355337&r2=1355338&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingTest.java Fri Jun 29 12:17:49 2012
@@ -104,7 +104,7 @@ public class CayenneContextNamedQueryCac
assertSame(result1, result2);
}
});
-
+
final List<?> result3 = context.performQuery(q2);
assertNotSame(result1, result3);
assertEquals(1, result3.size());
@@ -119,5 +119,15 @@ public class CayenneContextNamedQueryCac
assertSame(result1, result5);
}
});
+
+ }
+
+ public void testLocalCacheEJBQLQueryParameterized() throws Exception {
+
+ createThreeMtTable1sDataSet();
+ NamedQuery query = new NamedQuery("ParameterizedEJBQLMtQuery", Collections.singletonMap("g", "g1"));
+
+ List<?> r1 = context.performQuery(query);
+ assertEquals(1, r1.size());
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/multi-tier.map.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/multi-tier.map.xml?rev=1355338&r1=1355337&r2=1355338&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/multi-tier.map.xml (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/multi-tier.map.xml Fri Jun 29 12:17:49 2012
@@ -242,6 +242,10 @@
<query name="MtQueryWithLocalCache" factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity" root-name="MtTable1">
<property name="cayenne.GenericSelectQuery.cacheStrategy" value="LOCAL_CACHE"/>
</query>
+ <query name="ParameterizedEJBQLMtQuery" factory="org.apache.cayenne.map.EjbqlBuilder">
+ <property name="cayenne.GenericSelectQuery.cacheStrategy" value="LOCAL_CACHE"/>
+ <ejbql><![CDATA[select a from MtTable1 a where a.globalAttribute1 = :g]]></ejbql>
+ </query>
<query name="ParameterizedMtQueryWithLocalCache" factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity" root-name="MtTable1">
<property name="cayenne.GenericSelectQuery.cacheStrategy" value="LOCAL_CACHE"/>
<qualifier><![CDATA[globalAttribute1 = $g]]></qualifier>