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 <ancars...@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); }