You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2015/01/17 09:05:44 UTC
[2/4] cayenne git commit: CAY-1966 SQLTemplate/SQLSelect positional
parameter binding
CAY-1966 SQLTemplate/SQLSelect positional parameter binding
* incorrect positional params translation from SQLSelect to SQLTemplate
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/60f3f154
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/60f3f154
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/60f3f154
Branch: refs/heads/master
Commit: 60f3f154fae265e971eb6c040bb0508ab86fc2a0
Parents: 44642ea
Author: aadamchik <aa...@apache.org>
Authored: Fri Jan 16 09:19:09 2015 +0300
Committer: aadamchik <aa...@apache.org>
Committed: Fri Jan 16 09:19:09 2015 +0300
----------------------------------------------------------------------
.../org/apache/cayenne/query/SQLSelect.java | 2 +-
.../org/apache/cayenne/query/SQLSelectIT.java | 46 +++++++++++++-------
.../org/apache/cayenne/query/SQLSelectTest.java | 34 +++++++++++++--
3 files changed, 62 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/60f3f154/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
index ebd5d58..754c4b6 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
@@ -243,7 +243,7 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
template.setCacheStrategy(cacheStrategy);
if (positionalParams != null) {
- template.setParamsArray(positionalParams);
+ template.setParamsList(positionalParams);
} else {
template.setParams(params);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/60f3f154/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
index b16c846..c17f153 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
@@ -55,7 +55,7 @@ public class SQLSelectIT extends ServerCase {
}
}
- @Test
+ @Test
public void test_DataRows_DataMapNameRoot() throws Exception {
createArtistsDataSet();
@@ -68,7 +68,7 @@ public class SQLSelectIT extends ServerCase {
assertTrue(result.get(0) instanceof DataRow);
}
- @Test
+ @Test
public void test_DataRows_DefaultRoot() throws Exception {
createArtistsDataSet();
@@ -81,7 +81,7 @@ public class SQLSelectIT extends ServerCase {
assertTrue(result.get(0) instanceof DataRow);
}
- @Test
+ @Test
public void test_DataRows_ClassRoot() throws Exception {
createArtistsDataSet();
@@ -93,7 +93,7 @@ public class SQLSelectIT extends ServerCase {
assertTrue(result.get(0) instanceof Artist);
}
- @Test
+ @Test
public void test_DataRows_ClassRoot_Parameters() throws Exception {
createArtistsDataSet();
@@ -106,7 +106,7 @@ public class SQLSelectIT extends ServerCase {
assertEquals("artist3", a.getArtistName());
}
- @Test
+ @Test
public void test_DataRows_ClassRoot_Bind() throws Exception {
createArtistsDataSet();
@@ -119,7 +119,7 @@ public class SQLSelectIT extends ServerCase {
assertEquals(2, result.size());
}
- @Test
+ @Test
public void test_DataRows_ColumnNameCaps() throws Exception {
SQLSelect<DataRow> q1 = SQLSelect.dataRowQuery("SELECT * FROM ARTIST WHERE ARTIST_NAME = 'artist2'");
@@ -133,7 +133,7 @@ public class SQLSelectIT extends ServerCase {
assertEquals(CapsStrategy.LOWER, r2.getColumnNamesCapitalization());
}
- @Test
+ @Test
public void test_DataRows_FetchLimit() throws Exception {
createArtistsDataSet();
@@ -144,7 +144,7 @@ public class SQLSelectIT extends ServerCase {
assertEquals(5, context.select(q1).size());
}
- @Test
+ @Test
public void test_DataRows_FetchOffset() throws Exception {
createArtistsDataSet();
@@ -155,7 +155,7 @@ public class SQLSelectIT extends ServerCase {
assertEquals(16, context.select(q1).size());
}
- @Test
+ @Test
public void test_Append() throws Exception {
createArtistsDataSet();
@@ -167,7 +167,7 @@ public class SQLSelectIT extends ServerCase {
assertEquals(1, result.size());
}
- @Test
+ @Test
public void test_Select() throws Exception {
createArtistsDataSet();
@@ -178,7 +178,7 @@ public class SQLSelectIT extends ServerCase {
assertEquals(1, result.size());
}
- @Test
+ @Test
public void test_SelectOne() throws Exception {
createArtistsDataSet();
@@ -189,7 +189,7 @@ public class SQLSelectIT extends ServerCase {
assertEquals("artist3", a.getArtistName());
}
- @Test
+ @Test
public void test_SelectLong() throws Exception {
createArtistsDataSet();
@@ -200,7 +200,7 @@ public class SQLSelectIT extends ServerCase {
assertEquals(3l, id);
}
- @Test
+ @Test
public void test_SelectLongArray() throws Exception {
createArtistsDataSet();
@@ -212,7 +212,7 @@ public class SQLSelectIT extends ServerCase {
assertEquals(2l, ids.get(1).longValue());
}
- @Test
+ @Test
public void test_SelectCount() throws Exception {
createArtistsDataSet();
@@ -222,8 +222,8 @@ public class SQLSelectIT extends ServerCase {
assertEquals(20, c);
}
- @Test
- public void testSQLTemplate_PositionalParams() throws Exception {
+ @Test
+ public void test_ParamsArray_Single() throws Exception {
createArtistsDataSet();
@@ -232,4 +232,18 @@ public class SQLSelectIT extends ServerCase {
assertEquals(3l, id.longValue());
}
+
+ @Test
+ public void test_ParamsArray_Multiple() throws Exception {
+
+ createArtistsDataSet();
+
+ List<Long> ids = SQLSelect
+ .scalarQuery(Long.class,
+ "SELECT ARTIST_ID FROM ARTIST WHERE ARTIST_NAME = #bind($a) OR ARTIST_NAME = #bind($b) ORDER BY ARTIST_ID")
+ .paramsArray("artist3", "artist2").select(context);
+
+ assertEquals(2l, ids.get(0).longValue());
+ assertEquals(3l, ids.get(1).longValue());
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/60f3f154/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectTest.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectTest.java
index 88e1b6a..439ff44 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectTest.java
@@ -18,17 +18,21 @@
****************************************************************/
package org.apache.cayenne.query;
+import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.mock;
import java.util.Arrays;
import org.apache.cayenne.DataRow;
+import org.apache.cayenne.map.EntityResolver;
import org.junit.Test;
public class SQLSelectTest {
-
+
@Test
public void testCacheGroups_Collection() {
SQLSelect<DataRow> q = SQLSelect.dataRowQuery("bla");
@@ -56,7 +60,7 @@ public class SQLSelectTest {
assertSame(QueryCacheStrategy.SHARED_CACHE, q.getCacheStrategy());
assertNull(q.getCacheGroups());
}
-
+
@Test
public void testLocalCache() {
SQLSelect<DataRow> q = SQLSelect.dataRowQuery("bla");
@@ -72,7 +76,7 @@ public class SQLSelectTest {
assertSame(QueryCacheStrategy.LOCAL_CACHE, q.getCacheStrategy());
assertNull(q.getCacheGroups());
}
-
+
@Test
public void testSharedCache() {
SQLSelect<DataRow> q = SQLSelect.dataRowQuery("bla");
@@ -88,4 +92,28 @@ public class SQLSelectTest {
assertSame(QueryCacheStrategy.SHARED_CACHE, q.getCacheStrategy());
assertNull(q.getCacheGroups());
}
+
+ @Test
+ public void testCreateReplacementQuery() {
+
+ SQLSelect<DataRow> q = SQLSelect.dataRowQuery("bla");
+ Query replacement = q.createReplacementQuery(mock(EntityResolver.class));
+ assertThat(replacement, instanceOf(SQLTemplate.class));
+ }
+
+ @Test
+ public void testCreateReplacementQuery_ParamsArray_Single() {
+
+ SQLSelect<DataRow> q = SQLSelect.dataRowQuery("bla").paramsArray("a");
+ SQLTemplate replacement = (SQLTemplate) q.createReplacementQuery(mock(EntityResolver.class));
+ assertArrayEquals(new Object[] { "a" }, replacement.getPositionalParams().toArray());
+ }
+
+ @Test
+ public void testCreateReplacementQuery_ParamsArray_Multiple() {
+
+ SQLSelect<DataRow> q = SQLSelect.dataRowQuery("bla").paramsArray("a", "b");
+ SQLTemplate replacement = (SQLTemplate) q.createReplacementQuery(mock(EntityResolver.class));
+ assertArrayEquals(new Object[] { "a", "b" }, replacement.getPositionalParams().toArray());
+ }
}