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);
 	}