You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ab...@apache.org on 2019/06/28 12:53:53 UTC
[cayenne] 01/02: CAY-2585 Rename scalarQuery and params methods in
SQLSelect
This is an automated email from the ASF dual-hosted git repository.
abulatski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit e617af6c73c9d78f3e96687f453690db63552430
Author: Arseni Bulatski <an...@gmail.com>
AuthorDate: Tue Jun 11 16:20:24 2019 +0300
CAY-2585 Rename scalarQuery and params methods in SQLSelect
---
RELEASE-NOTES.txt | 1 +
UPGRADE.txt | 5 ++
.../java/org/apache/cayenne/query/SQLSelect.java | 73 +++++++++++++++++++++-
.../java/org/apache/cayenne/query/SQLSelectIT.java | 36 +++++------
4 files changed, 94 insertions(+), 21 deletions(-)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 38e5dd1..52d4875 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -34,6 +34,7 @@ CAY-2563 Deprecate old scalarQuery methods in SQLSelect
CAY-2568 Class Generation: Superclass Package setting persistence
CAY-2569 Custom 'Naming Strategy' in Cayenne Modeler
CAY-2570 Use MySQL adapter for latest versions of MariaDB
+CAY-2585 Rename scalarQuery and params methods in SQLSelect
Bug Fixes:
diff --git a/UPGRADE.txt b/UPGRADE.txt
index eb83462..81a87b7 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -18,6 +18,11 @@ UPGRADING TO 4.2.M1
* Per CAY-2563 SQLSelect.scalarQuery(Class<T>, String) and SQLSelect.scalarQuery(Class<T>, String, String) methods
were deprecated.
+* Per CAY-2585 SQLSelect.scalarQuery(String sql), SQLSelect.scalarQuery(String sql, String dataMapName),
+ SQLSelect.scalarQuery(String sql, Class<?> firstType, Class<?>... types),
+ SQLSelect.scalarQuery(String sql, String dataMapName, Class<?> firstType, Class<?>... types) and
+ SQLSelect.params(String name, Object value) were deprecated.
+
UPGRADING TO 4.1.M3
* Per CAY-2514 SERVER_CONTEXTS_SYNC_PROPERTY default value was set to false.
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 c61f3dd..96af190 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
@@ -137,17 +137,31 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
* Creates query that selects scalar value and uses default routing
*
* @since 4.1
+ * @deprecated since 4.2. Use {@link #arrayQuery(String)}
*/
+ @Deprecated
public static SQLSelect<Object[]> scalarQuery(String sql) {
SQLSelect<Object[]> query = new SQLSelect<>(sql);
return query.useScalar();
}
/**
+ * Creates query that selects scalar value and uses default routing
+ *
+ * @since 4.2
+ */
+ public static SQLSelect<Object[]> arrayQuery(String sql) {
+ SQLSelect<Object[]> query = new SQLSelect<>(sql);
+ return query.useScalar();
+ }
+
+ /**
* Creates query that selects scalar values (as Object[]) and uses routing based on the
* provided DataMap name.
* @since 4.1
+ * @deprecated since 4.2. Use {@link #arrayQuery(String, String)}
*/
+ @Deprecated
public static SQLSelect<Object[]> scalarQuery(String sql, String dataMapName) {
SQLSelect<Object[]> query = new SQLSelect<>(sql);
query.dataMapName = dataMapName;
@@ -155,22 +169,66 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
}
/**
+ * Creates query that selects scalar values (as Object[]) and uses routing based on the
+ * provided DataMap name.
+ *
+ * @since 4.2
+ */
+ public static SQLSelect<Object[]> arrayQuery(String sql, String dataMapName) {
+ SQLSelect<Object[]> query = new SQLSelect<>(sql);
+ query.dataMapName = dataMapName;
+ return query.useScalar();
+ }
+
+ /**
* Creates query that selects scalar values (as Object[]) and uses default routing
*
* @since 4.1
+ * @deprecated since 4.2. Use {@link #arrayQuery(String, Class, Class...)}
*/
+ @Deprecated
public static SQLSelect<Object[]> scalarQuery(String sql, Class<?> firstType, Class<?>... types) {
SQLSelect<Object[]> query = new SQLSelect<>(sql);
return query.resultColumnsTypes(firstType).resultColumnsTypes(types).useScalar();
}
/**
+ * Creates query that selects scalar values (as Object[]) and uses default routing
+ *
+ * @since 4.2
+ */
+ public static SQLSelect<Object[]> arrayQuery(String sql, Class<?> firstType, Class<?>... types) {
+ SQLSelect<Object[]> query = new SQLSelect<>(sql);
+ return query.resultColumnsTypes(firstType).resultColumnsTypes(types).useScalar();
+ }
+
+ /**
* Creates query that selects scalar values (as Object[]) and uses routing based on the
* provided DataMap name.
*
* @since 4.1
+ * @deprecated since 4.2. Use {@link #arrayQuery(String, String, Class, Class...)}
+ */
+ @Deprecated
+ public static SQLSelect<Object[]> scalarQuery(String sql,
+ String dataMapName,
+ Class<?> firstType,
+ Class<?>... types) {
+ SQLSelect<Object[]> query = new SQLSelect<>(sql);
+ query.dataMapName = dataMapName;
+ return query.resultColumnsTypes(firstType).resultColumnsTypes(types).useScalar();
+ }
+
+ /**
+ * Creates query that selects scalar values (as Object[]) and uses routing based on the
+ * provided DataMap name.
+ *
+ * @since 4.2
*/
- public static SQLSelect<Object[]> scalarQuery(String sql, String dataMapName, Class<?> firstType, Class<?>... types) {
+ public static SQLSelect<Object[]> arrayQuery(String sql,
+ String dataMapName,
+ Class<?> firstType,
+ Class<?>... types) {
SQLSelect<Object[]> query = new SQLSelect<>(sql);
query.dataMapName = dataMapName;
return query.resultColumnsTypes(firstType).resultColumnsTypes(types).useScalar();
@@ -259,11 +317,24 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
return this;
}
+ /**
+ * @deprecated since 4.2
+ * Use {@link #param(String, Object)}
+ */
+ @Deprecated
public SQLSelect<T> params(String name, Object value) {
params(Collections.singletonMap(name, value));
return this;
}
+ /**
+ * @since 4.2
+ */
+ public SQLSelect<T> param(String name, Object value) {
+ params(Collections.singletonMap(name, value));
+ return this;
+ }
+
@SuppressWarnings({ "rawtypes", "unchecked" })
public SQLSelect<T> params(Map<String, ?> parameters) {
if (this.params == null) {
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 1e53b55..4185bb7 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
@@ -30,7 +30,6 @@ import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.ResultBatchIterator;
import org.apache.cayenne.ResultIterator;
-import org.apache.cayenne.ResultIteratorCallback;
import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.test.jdbc.DBHelper;
@@ -151,7 +150,7 @@ public class SQLSelectIT extends ServerCase {
public void testObjectArrayWithDefaultTypesReturnAndDirectives() throws Exception {
createArtistDataSet();
- List<Object[]> result = SQLSelect.scalarQuery("SELECT #result('ARTIST_ID' 'java.lang.Long'), #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST_CT")
+ List<Object[]> result = SQLSelect.arrayQuery("SELECT #result('ARTIST_ID' 'java.lang.Long'), #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST_CT")
.select(context);
assertEquals(2, result.size());
@@ -165,7 +164,7 @@ public class SQLSelectIT extends ServerCase {
public void testObjectArrayReturnAndDirectives() throws Exception {
createArtistDataSet();
- SQLSelect.scalarQuery("SELECT #result('ARTIST_ID' 'java.lang.Long'), #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST_CT",
+ SQLSelect.arrayQuery("SELECT #result('ARTIST_ID' 'java.lang.Long'), #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST_CT",
Integer.class, String.class).select(context);
}
@@ -173,7 +172,7 @@ public class SQLSelectIT extends ServerCase {
public void testObjectArrayWithOneObjectDefaultTypesReturnAndDirectives() throws Exception {
createArtistDataSet();
- List<Object[]> result = SQLSelect.scalarQuery("SELECT #result('ARTIST_ID' 'java.lang.Long') FROM ARTIST_CT")
+ List<Object[]> result = SQLSelect.arrayQuery("SELECT #result('ARTIST_ID' 'java.lang.Long') FROM ARTIST_CT")
.select(context);
assertEquals(2, result.size());
@@ -186,7 +185,7 @@ public class SQLSelectIT extends ServerCase {
public void test_ObjectArrayQueryWithDefaultTypes() throws Exception {
createPaintingsDataSet();
- List<Object[]> result = SQLSelect.scalarQuery("SELECT PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE FROM PAINTING")
+ List<Object[]> result = SQLSelect.arrayQuery("SELECT PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE FROM PAINTING")
.select(context);
assertEquals(20, result.size());
@@ -197,7 +196,7 @@ public class SQLSelectIT extends ServerCase {
public void test_ObjectQueryWithDefaultType() throws Exception {
createPaintingsDataSet();
- List<Object[]> result = SQLSelect.scalarQuery("SELECT PAINTING_ID FROM PAINTING")
+ List<Object[]> result = SQLSelect.arrayQuery("SELECT PAINTING_ID FROM PAINTING")
.select(context);
assertEquals(20, result.size());
assertTrue(result.get(0) instanceof Object[]);
@@ -208,7 +207,7 @@ public class SQLSelectIT extends ServerCase {
public void test_ObjectArrayQueryException() throws Exception {
createPaintingsDataSet();
- SQLSelect<Object[]> query = SQLSelect.scalarQuery("SELECT PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE FROM PAINTING", Integer.class, String.class);
+ SQLSelect<Object[]> query = SQLSelect.arrayQuery("SELECT PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE FROM PAINTING", Integer.class, String.class);
context.performQuery(query);
}
@@ -226,7 +225,7 @@ public class SQLSelectIT extends ServerCase {
public void testObjectArrayWithCustomType() throws SQLException {
createArtistDataSet();
- List<Object[]> results = SQLSelect.scalarQuery("SELECT * FROM ARTIST_CT",
+ List<Object[]> results = SQLSelect.arrayQuery("SELECT * FROM ARTIST_CT",
Integer.class, String.class, LocalDateTime.class).select(context);
assertEquals(2, results.size());
@@ -241,7 +240,7 @@ public class SQLSelectIT extends ServerCase {
SQLSelect<Painting> q1 = SQLSelect.query(Painting.class,
"SELECT * FROM PAINTING WHERE PAINTING_TITLE = #bind($a)");
- q1.params("a", "painting3").columnNameCaps(CapsStrategy.UPPER);
+ q1.param("a", "painting3").columnNameCaps(CapsStrategy.UPPER);
assertFalse(q1.isFetchingDataRows());
Painting a = context.selectOne(q1);
@@ -255,7 +254,7 @@ public class SQLSelectIT extends ServerCase {
SQLSelect<Painting> q1 = SQLSelect.query(Painting.class,
"SELECT * FROM PAINTING WHERE PAINTING_TITLE = #bind($a) OR PAINTING_TITLE = #bind($b)")
.columnNameCaps(CapsStrategy.UPPER);
- q1.params("a", "painting3").params("b", "painting4");
+ q1.param("a", "painting3").param("b", "painting4");
List<Painting> result = context.select(q1);
assertEquals(2, result.size());
@@ -299,7 +298,7 @@ public class SQLSelectIT extends ServerCase {
createPaintingsDataSet();
SQLSelect<Painting> q1 = SQLSelect.query(Painting.class, "SELECT * FROM PAINTING")
- .append(" WHERE PAINTING_TITLE = #bind($a)").params("a", "painting3")
+ .append(" WHERE PAINTING_TITLE = #bind($a)").param("a", "painting3")
.columnNameCaps(CapsStrategy.UPPER);
List<Painting> result = context.select(q1);
@@ -312,7 +311,7 @@ public class SQLSelectIT extends ServerCase {
List<Painting> result = SQLSelect
.query(Painting.class, "SELECT * FROM PAINTING WHERE PAINTING_TITLE = #bind($a)")
- .params("a", "painting3").columnNameCaps(CapsStrategy.UPPER).select(context);
+ .param("a", "painting3").columnNameCaps(CapsStrategy.UPPER).select(context);
assertEquals(1, result.size());
}
@@ -322,7 +321,7 @@ public class SQLSelectIT extends ServerCase {
createPaintingsDataSet();
Painting a = SQLSelect.query(Painting.class, "SELECT * FROM PAINTING WHERE PAINTING_TITLE = #bind($a)")
- .params("a", "painting3").columnNameCaps(CapsStrategy.UPPER).selectOne(context);
+ .param("a", "painting3").columnNameCaps(CapsStrategy.UPPER).selectOne(context);
assertEquals("painting3", a.getPaintingTitle());
}
@@ -355,12 +354,9 @@ public class SQLSelectIT extends ServerCase {
final int[] count = new int[1];
SQLSelect.query(Painting.class, "SELECT * FROM PAINTING").columnNameCaps(CapsStrategy.UPPER)
- .iterate(context, new ResultIteratorCallback<Painting>() {
- @Override
- public void next(Painting object) {
- assertNotNull(object.getPaintingTitle());
- count[0]++;
- }
+ .iterate(context, object -> {
+ assertNotNull(object.getPaintingTitle());
+ count[0]++;
});
assertEquals(20, count[0]);
@@ -406,7 +402,7 @@ public class SQLSelectIT extends ServerCase {
long id = SQLSelect
.scalarQuery( "SELECT PAINTING_ID FROM PAINTING WHERE PAINTING_TITLE = #bind($a)",
Integer.class)
- .params("a", "painting3").selectOne(context);
+ .param("a", "painting3").selectOne(context);
assertEquals(3l, id);
}