This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch past-M2 in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit a0be19ae4e3e390cf18ba1afce3afc4f6a573584 Author: Andrus Adamchik <[email protected]> AuthorDate: Sat May 30 18:56:31 2026 -0400 Turning SQLStatement into an immutable record --- .../velocity/VelocitySQLTemplateProcessorTest.java | 84 +++++++++++----------- .../VelocitySQLTemplateProcessor_ChainTest.java | 28 ++++---- .../VelocitySQLTemplateProcessor_SelectTest.java | 46 ++++++------ .../apache/cayenne/access/jdbc/SQLStatement.java | 59 +-------------- .../cayenne/access/jdbc/SQLTemplateAction.java | 16 ++--- .../dba/frontbase/FrontBaseTemplateAction.java | 4 +- .../dba/oracle/Oracle8SQLTemplateAction.java | 6 +- .../dba/oracle/OracleSQLTemplateAction.java | 2 +- .../dba/sqlite/SQLiteSQLTemplateAction.java | 6 +- .../cayenne/access/jdbc/SQLStatementTest.java | 18 ++--- .../template/CayenneSQLTemplateProcessorTest.java | 84 +++++++++++----------- 11 files changed, 145 insertions(+), 208 deletions(-) diff --git a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessorTest.java b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessorTest.java index 5695d207d..38b892900 100644 --- a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessorTest.java +++ b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessorTest.java @@ -51,8 +51,8 @@ public class VelocitySQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.<String, Object> emptyMap()); - assertEquals(sqlTemplate, compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals(sqlTemplate, compiled.sql()); + assertEquals(0, compiled.bindings().length); } @Test @@ -61,8 +61,8 @@ public class VelocitySQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.<String, Object> emptyMap()); - assertEquals(sqlTemplate, compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals(sqlTemplate, compiled.sql()); + assertEquals(0, compiled.bindings().length); } @Test @@ -72,10 +72,10 @@ public class VelocitySQLTemplateProcessorTest { Map<String, Object> map = Collections.<String, Object> singletonMap("a", "VALUE_OF_A"); SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE VALUE_OF_A", compiled.getSql()); + assertEquals("SELECT * FROM ME WHERE VALUE_OF_A", compiled.sql()); // bindings are not populated, since no "bind" macro is used. - assertEquals(0, compiled.getBindings().length); + assertEquals(0, compiled.bindings().length); } @Test @@ -85,10 +85,10 @@ public class VelocitySQLTemplateProcessorTest { Map<String, Object> map = Collections.<String, Object> singletonMap("a", "VALUE_OF_A"); SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN1 = ? AND COLUMN2 = ?", compiled.getSql()); - assertEquals(2, compiled.getBindings().length); - assertBindingValue("VALUE_OF_A", compiled.getBindings()[0]); - assertBindingValue(null, compiled.getBindings()[1]); + assertEquals("SELECT * FROM ME WHERE COLUMN1 = ? AND COLUMN2 = ?", compiled.sql()); + assertEquals(2, compiled.bindings().length); + assertBindingValue("VALUE_OF_A", compiled.bindings()[0]); + assertBindingValue(null, compiled.bindings()[1]); } @Test @@ -98,8 +98,8 @@ public class VelocitySQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals(1, compiled.getBindings().length); - assertBindingType(Types.VARCHAR, compiled.getBindings()[0]); + assertEquals(1, compiled.bindings().length); + assertBindingType(Types.VARCHAR, compiled.bindings()[0]); } @Test @@ -109,8 +109,8 @@ public class VelocitySQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals(1, compiled.getBindings().length); - assertBindingType(Types.INTEGER, compiled.getBindings()[0]); + assertEquals(1, compiled.bindings().length); + assertBindingType(Types.INTEGER, compiled.bindings()[0]); } @Test @@ -119,16 +119,16 @@ public class VelocitySQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.<String, Object> emptyMap()); - assertEquals("SELECT * FROM ME WHERE COLUMN IS NULL", compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals("SELECT * FROM ME WHERE COLUMN IS NULL", compiled.sql()); + assertEquals(0, compiled.bindings().length); Map<String, Object> map = Collections.<String, Object> singletonMap("a", "VALUE_OF_A"); compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN = ?", compiled.getSql()); - assertEquals(1, compiled.getBindings().length); - assertBindingValue("VALUE_OF_A", compiled.getBindings()[0]); + assertEquals("SELECT * FROM ME WHERE COLUMN = ?", compiled.sql()); + assertEquals(1, compiled.bindings().length); + assertBindingValue("VALUE_OF_A", compiled.bindings()[0]); } @Test @@ -137,16 +137,16 @@ public class VelocitySQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.<String, Object> emptyMap()); - assertEquals("SELECT * FROM ME WHERE COLUMN IS NOT NULL", compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals("SELECT * FROM ME WHERE COLUMN IS NOT NULL", compiled.sql()); + assertEquals(0, compiled.bindings().length); Map<String, Object> map = Collections.<String, Object> singletonMap("a", "VALUE_OF_A"); compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN <> ?", compiled.getSql()); - assertEquals(1, compiled.getBindings().length); - assertBindingValue("VALUE_OF_A", compiled.getBindings()[0]); + assertEquals("SELECT * FROM ME WHERE COLUMN <> ?", compiled.sql()); + assertEquals(1, compiled.bindings().length); + assertBindingValue("VALUE_OF_A", compiled.bindings()[0]); } @Test @@ -160,9 +160,9 @@ public class VelocitySQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN1 = ?", compiled.getSql()); - assertEquals(1, compiled.getBindings().length); - assertBindingValue(5, compiled.getBindings()[0]); + assertEquals("SELECT * FROM ME WHERE COLUMN1 = ?", compiled.sql()); + assertEquals(1, compiled.bindings().length); + assertBindingValue(5, compiled.bindings()[0]); } @Test @@ -182,10 +182,10 @@ public class VelocitySQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN1 <> ? AND COLUMN2 <> ?", compiled.getSql()); - assertEquals(2, compiled.getBindings().length); - assertBindingValue(3, compiled.getBindings()[0]); - assertBindingValue("aaa", compiled.getBindings()[1]); + assertEquals("SELECT * FROM ME WHERE COLUMN1 <> ? AND COLUMN2 <> ?", compiled.sql()); + assertEquals(2, compiled.bindings().length); + assertBindingValue(3, compiled.bindings()[0]); + assertBindingValue("aaa", compiled.bindings()[1]); } @Test @@ -196,14 +196,14 @@ public class VelocitySQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN1 > ?", compiled.getSql()); - assertEquals(1, compiled.getBindings().length); - assertBindingValue("VALUE_OF_A", compiled.getBindings()[0]); + assertEquals("SELECT * FROM ME WHERE COLUMN1 > ?", compiled.sql()); + assertEquals(1, compiled.bindings().length); + assertBindingValue("VALUE_OF_A", compiled.bindings()[0]); compiled = processor.processTemplate(sqlTemplate, Collections.<String, Object> emptyMap()); - assertEquals("SELECT * FROM ME ", compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals("SELECT * FROM ME ", compiled.sql()); + assertEquals(0, compiled.bindings().length); } @Test @@ -213,20 +213,20 @@ public class VelocitySQLTemplateProcessorTest { Map<String, Object> map = Collections.<String, Object> singletonMap("list", Arrays.asList("a", "b", "c")); SQLStatement compiled = new VelocitySQLTemplateProcessor().processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN IN (?,?,?)", compiled.getSql()); - assertEquals(3, compiled.getBindings().length); + assertEquals("SELECT * FROM ME WHERE COLUMN IN (?,?,?)", compiled.sql()); + assertEquals(3, compiled.bindings().length); compiled = processor.processTemplate(sqlTemplate, map); - assertBindingValue("a", compiled.getBindings()[0]); - assertBindingValue("b", compiled.getBindings()[1]); - assertBindingValue("c", compiled.getBindings()[2]); + assertBindingValue("a", compiled.bindings()[0]); + assertBindingValue("b", compiled.bindings()[1]); + assertBindingValue("c", compiled.bindings()[2]); } @Test public void unknownDirective() throws Exception { String sqlTemplate = "SELECT #from(1) FROM a"; SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.emptyMap()); - assertEquals("SELECT #from(1) FROM a", compiled.getSql()); + assertEquals("SELECT #from(1) FROM a", compiled.sql()); } private void assertBindingValue(Object expectedValue, Object binding) { diff --git a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessor_ChainTest.java b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessor_ChainTest.java index 3e5894437..74debae27 100644 --- a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessor_ChainTest.java +++ b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessor_ChainTest.java @@ -45,18 +45,18 @@ public class VelocitySQLTemplateProcessor_ChainTest { SQLStatement compiled = processor.processTemplate("#chain(' AND ') #end", Collections.<String, Object> emptyMap()); - assertEquals("", compiled.getSql()); + assertEquals("", compiled.sql()); compiled = processor.processTemplate("#chain(' AND ') garbage #end", Collections.<String, Object> emptyMap()); - assertEquals("", compiled.getSql()); + assertEquals("", compiled.sql()); compiled = processor.processTemplate("#chain(' AND ' 'PREFIX') #end", Collections.<String, Object> emptyMap()); - assertEquals("", compiled.getSql()); + assertEquals("", compiled.sql()); compiled = processor.processTemplate("#chain(' AND ' 'PREFIX') garbage #end", Collections.<String, Object> emptyMap()); - assertEquals("", compiled.getSql()); + assertEquals("", compiled.sql()); } @Test @@ -69,7 +69,7 @@ public class VelocitySQLTemplateProcessor_ChainTest { map.put("c", "[C]"); SQLStatement compiled = processor.processTemplate(template, map); - assertEquals("[A] OR [B] OR [C]", compiled.getSql()); + assertEquals("[A] OR [B] OR [C]", compiled.sql()); } @Test @@ -83,7 +83,7 @@ public class VelocitySQLTemplateProcessor_ChainTest { map.put("c", "[C]"); SQLStatement compiled = processor.processTemplate(template, map); - assertEquals("WHERE [A] OR [B] OR [C]", compiled.getSql()); + assertEquals("WHERE [A] OR [B] OR [C]", compiled.sql()); } @Test @@ -96,7 +96,7 @@ public class VelocitySQLTemplateProcessor_ChainTest { map.put("c", "[C]"); SQLStatement compiled = processor.processTemplate(template, map); - assertEquals("WHERE [A] OR [C]", compiled.getSql()); + assertEquals("WHERE [A] OR [C]", compiled.sql()); } @Test @@ -109,7 +109,7 @@ public class VelocitySQLTemplateProcessor_ChainTest { map.put("c", "[C]"); SQLStatement compiled = processor.processTemplate(template, map); - assertEquals("WHERE [B] OR [C]", compiled.getSql()); + assertEquals("WHERE [B] OR [C]", compiled.sql()); } @Test @@ -122,7 +122,7 @@ public class VelocitySQLTemplateProcessor_ChainTest { map.put("b", "[B]"); SQLStatement compiled = processor.processTemplate(template, map); - assertEquals("WHERE [A] OR [B]", compiled.getSql()); + assertEquals("WHERE [A] OR [B]", compiled.sql()); } @Test @@ -135,7 +135,7 @@ public class VelocitySQLTemplateProcessor_ChainTest { map.put("c", "[C]"); SQLStatement compiled = processor.processTemplate(template, map); - assertEquals("WHERE [A] some other stuff OR [C]", compiled.getSql()); + assertEquals("WHERE [A] some other stuff OR [C]", compiled.sql()); } @Test @@ -143,7 +143,7 @@ public class VelocitySQLTemplateProcessor_ChainTest { String template = "#chain(' OR ' 'WHERE ')" + "#chunk()C1#end" + "#chunk()C2#end" + "#chunk()C3#end" + "#end"; SQLStatement compiled = processor.processTemplate(template, Collections.<String, Object> emptyMap()); - assertEquals("WHERE C1 OR C2 OR C3", compiled.getSql()); + assertEquals("WHERE C1 OR C2 OR C3", compiled.sql()); } @Test @@ -152,7 +152,7 @@ public class VelocitySQLTemplateProcessor_ChainTest { + "#end"; SQLStatement compiled = processor.processTemplate(template, Collections.<String, Object> emptyMap()); - assertEquals("", compiled.getSql()); + assertEquals("", compiled.sql()); } @Test @@ -165,7 +165,7 @@ public class VelocitySQLTemplateProcessor_ChainTest { map.put("b", 0); SQLStatement compiled = processor.processTemplate(template, map); - assertEquals("WHERE [A] OR [B]", compiled.getSql()); + assertEquals("WHERE [A] OR [B]", compiled.sql()); } @Test @@ -178,7 +178,7 @@ public class VelocitySQLTemplateProcessor_ChainTest { map.put("b", 0); SQLStatement compiled = processor.processTemplate(template, map); - assertEquals("WHERE false OR 0", compiled.getSql()); + assertEquals("WHERE false OR 0", compiled.sql()); } } diff --git a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessor_SelectTest.java b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessor_SelectTest.java index 5c88a1f14..c90149924 100644 --- a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessor_SelectTest.java +++ b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateProcessor_SelectTest.java @@ -44,9 +44,9 @@ public class VelocitySQLTemplateProcessor_SelectTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.<String, Object> emptyMap()); - assertEquals(sqlTemplate, compiled.getSql()); - assertEquals(0, compiled.getBindings().length); - assertEquals(0, compiled.getResultColumns().length); + assertEquals(sqlTemplate, compiled.sql()); + assertEquals(0, compiled.bindings().length); + assertEquals(0, compiled.resultColumns().length); } @Test @@ -55,11 +55,11 @@ public class VelocitySQLTemplateProcessor_SelectTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.<String, Object> emptyMap()); - assertEquals("SELECT A FROM ME", compiled.getSql()); - assertEquals(0, compiled.getBindings().length); - assertEquals(1, compiled.getResultColumns().length); - assertEquals("A", compiled.getResultColumns()[0].getName()); - assertNull(compiled.getResultColumns()[0].getJavaClass()); + assertEquals("SELECT A FROM ME", compiled.sql()); + assertEquals(0, compiled.bindings().length); + assertEquals(1, compiled.resultColumns().length); + assertEquals("A", compiled.resultColumns()[0].getName()); + assertNull(compiled.resultColumns()[0].getJavaClass()); } @Test @@ -68,12 +68,12 @@ public class VelocitySQLTemplateProcessor_SelectTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.<String, Object> emptyMap()); - assertEquals("SELECT A FROM ME", compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals("SELECT A FROM ME", compiled.sql()); + assertEquals(0, compiled.bindings().length); - assertEquals(1, compiled.getResultColumns().length); - assertEquals("A", compiled.getResultColumns()[0].getName()); - assertEquals("java.lang.String", compiled.getResultColumns()[0].getJavaClass()); + assertEquals(1, compiled.resultColumns().length); + assertEquals("A", compiled.resultColumns()[0].getName()); + assertEquals("java.lang.String", compiled.resultColumns()[0].getJavaClass()); } @Test @@ -82,11 +82,11 @@ public class VelocitySQLTemplateProcessor_SelectTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.<String, Object> emptyMap()); - assertEquals("SELECT A AS B FROM ME", compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals("SELECT A AS B FROM ME", compiled.sql()); + assertEquals(0, compiled.bindings().length); - assertEquals(1, compiled.getResultColumns().length); - ColumnDescriptor column = compiled.getResultColumns()[0]; + assertEquals(1, compiled.resultColumns().length); + ColumnDescriptor column = compiled.resultColumns()[0]; assertEquals("A", column.getName()); assertEquals("B", column.getDataRowKey()); assertEquals("java.lang.String", column.getJavaClass()); @@ -98,12 +98,12 @@ public class VelocitySQLTemplateProcessor_SelectTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.<String, Object> emptyMap()); - assertEquals("SELECT A, B, C FROM ME", compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals("SELECT A, B, C FROM ME", compiled.sql()); + assertEquals(0, compiled.bindings().length); - assertEquals(3, compiled.getResultColumns().length); - assertEquals("A", compiled.getResultColumns()[0].getName()); - assertEquals("B", compiled.getResultColumns()[1].getName()); - assertEquals("C", compiled.getResultColumns()[2].getName()); + assertEquals(3, compiled.resultColumns().length); + assertEquals("A", compiled.resultColumns()[0].getName()); + assertEquals("B", compiled.resultColumns()[1].getName()); + assertEquals("C", compiled.resultColumns()[2].getName()); } } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLStatement.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLStatement.java index 5c0ed6e5c..1cf46f90b 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLStatement.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLStatement.java @@ -22,62 +22,9 @@ package org.apache.cayenne.access.jdbc; import org.apache.cayenne.access.translator.ParameterBinding; /** - * A PreparedStatement descriptor containing a String of SQL and an array of parameters. - * SQLStatement is essentially a "compiled" version of any single query. - * + * A translated form of a Query used to generated PreparedStatements. + * * @since 1.1 */ -public class SQLStatement { - - protected String sql; - protected ParameterBinding[] bindings; - protected ColumnDescriptor[] resultColumns; - - public SQLStatement() { - } - - public SQLStatement(String sql, ParameterBinding[] bindings) { - this(sql, null, bindings); - } - - /** - * @since 1.2 - */ - public SQLStatement(String sql, ColumnDescriptor[] resultColumns, - ParameterBinding[] bindings) { - - setSql(sql); - setBindings(bindings); - setResultColumns(resultColumns); - } - - /** - * @since 1.2 - */ - public ColumnDescriptor[] getResultColumns() { - return resultColumns; - } - - /** - * @since 1.2 - */ - public void setResultColumns(ColumnDescriptor[] descriptors) { - resultColumns = descriptors; - } - - public ParameterBinding[] getBindings() { - return bindings; - } - - public String getSql() { - return sql; - } - - public void setBindings(ParameterBinding[] bindings) { - this.bindings = bindings; - } - - public void setSql(String string) { - sql = string; - } +public record SQLStatement(String sql, ColumnDescriptor[] resultColumns, ParameterBinding[] bindings) { } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java index acfcfdd12..40cc7cba3 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java @@ -142,9 +142,9 @@ public class SQLTemplateAction implements SQLAction { SQLStatement compiled = dataNode.getSqlTemplateProcessor().processTemplate(template, query.getPositionalParams()); - bindExtendedTypes(compiled.getBindings()); + bindExtendedTypes(compiled.bindings()); if (loggable) { - dataNode.getJdbcEventLogger().logQuery(compiled.getSql(), compiled.getBindings()); + dataNode.getJdbcEventLogger().logQuery(compiled.sql(), compiled.bindings()); } execute(connection, callback, compiled, counts); @@ -172,9 +172,9 @@ public class SQLTemplateAction implements SQLAction { for (int i = 0; i < batchSize; i++) { Map<String, ?> nextParameters = it.next(); SQLStatement compiled = dataNode.getSqlTemplateProcessor().processTemplate(template, nextParameters); - bindExtendedTypes(compiled.getBindings()); + bindExtendedTypes(compiled.bindings()); if (loggable) { - dataNode.getJdbcEventLogger().logQuery(compiled.getSql(), compiled.getBindings()); + dataNode.getJdbcEventLogger().logQuery(compiled.sql(), compiled.bindings()); } execute(connection, callback, compiled, counts); @@ -188,10 +188,10 @@ public class SQLTemplateAction implements SQLAction { long t1 = System.currentTimeMillis(); boolean iteratedResult = callback.isIteratedResult(); int generatedKeys = query.isReturnGeneratedKeys() ? Statement.RETURN_GENERATED_KEYS : Statement.NO_GENERATED_KEYS; - PreparedStatement statement = connection.prepareStatement(compiled.getSql(), generatedKeys); + PreparedStatement statement = connection.prepareStatement(compiled.sql(), generatedKeys); try { - bind(statement, compiled.getBindings()); + bind(statement, compiled.bindings()); // process a mix of results boolean isResultSet = statement.execute(); @@ -302,11 +302,11 @@ public class SQLTemplateAction implements SQLAction { */ private ColumnDescriptor[] createColumnDescriptors(SQLStatement compiled) { // SQLTemplate #result columns take precedence over other ways to determine the type - if (compiled.getResultColumns().length > 0) { + if (compiled.resultColumns().length > 0) { if(query.getResultColumnsTypes() != null) { throw new CayenneRuntimeException("Caused by setting return types by directives and by parameters in query."); } else { - return compiled.getResultColumns(); + return compiled.resultColumns(); } } diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseTemplateAction.java b/cayenne/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseTemplateAction.java index 5e3b7ebba..6c484aab3 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseTemplateAction.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseTemplateAction.java @@ -47,10 +47,10 @@ public class FrontBaseTemplateAction extends SQLTemplateAction { long t1 = System.currentTimeMillis(); boolean iteratedResult = callback.isIteratedResult(); - PreparedStatement statement = connection.prepareStatement(compiled.getSql()); + PreparedStatement statement = connection.prepareStatement(compiled.sql()); try { - bind(statement, compiled.getBindings()); + bind(statement, compiled.bindings()); // process a mix of results boolean isResultSet = statement.execute(); diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SQLTemplateAction.java b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SQLTemplateAction.java index 1c01dabd7..178125fca 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SQLTemplateAction.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SQLTemplateAction.java @@ -52,15 +52,15 @@ class Oracle8SQLTemplateAction extends SQLTemplateAction { protected void execute(Connection connection, OperationObserver callback, SQLStatement compiled, Collection updateCounts) throws SQLException, Exception { - String sql = compiled.getSql().trim(); + String sql = compiled.sql().trim(); boolean select = sql.length() > "SELECT".length() && sql.substring(0, "SELECT".length()).equalsIgnoreCase("SELECT"); long t1 = System.currentTimeMillis(); boolean iteratedResult = callback.isIteratedResult(); - PreparedStatement statement = connection.prepareStatement(compiled.getSql()); + PreparedStatement statement = connection.prepareStatement(compiled.sql()); try { - bind(statement, compiled.getBindings()); + bind(statement, compiled.bindings()); // start - code different from super if (select) { diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OracleSQLTemplateAction.java b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OracleSQLTemplateAction.java index 31db00278..79d8053e0 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OracleSQLTemplateAction.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OracleSQLTemplateAction.java @@ -51,7 +51,7 @@ class OracleSQLTemplateAction extends SQLTemplateAction { // Oracle NUMBER // columns... - if (compiled.getResultColumns().length == 0) { + if (compiled.resultColumns().length == 0) { resultSet = new OracleResultSetWrapper(resultSet); } diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteSQLTemplateAction.java b/cayenne/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteSQLTemplateAction.java index e02fd8184..505a8ff2e 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteSQLTemplateAction.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteSQLTemplateAction.java @@ -51,15 +51,15 @@ class SQLiteSQLTemplateAction extends SQLTemplateAction { SQLStatement compiled, Collection<Number> updateCounts) throws SQLException, Exception { - String sql = compiled.getSql().trim(); + String sql = compiled.sql().trim(); boolean select = sql.length() > "SELECT".length() && sql.substring(0, "SELECT".length()).equalsIgnoreCase("SELECT"); long t1 = System.currentTimeMillis(); boolean iteratedResult = callback.isIteratedResult(); - PreparedStatement statement = connection.prepareStatement(compiled.getSql()); + PreparedStatement statement = connection.prepareStatement(compiled.sql()); try { - bind(statement, compiled.getBindings()); + bind(statement, compiled.bindings()); // start - code different from super if (select) { diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLStatementTest.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLStatementTest.java index 60b704444..17b45bcd9 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLStatementTest.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLStatementTest.java @@ -33,19 +33,9 @@ public class SQLStatementTest { @Test public void constructor() throws Exception { ParameterBinding[] bindings = new ParameterBinding[0]; - SQLStatement statement = new SQLStatement("abc", bindings); - assertEquals("abc", statement.getSql()); - assertSame(bindings, statement.getBindings()); - } - - @Test - public void sql() throws Exception { - SQLStatement statement = new SQLStatement(); - statement.setSql("abc"); - assertEquals("abc", statement.getSql()); - statement.setSql("xyz"); - assertEquals("xyz", statement.getSql()); - statement.setSql(null); - assertNull(statement.getSql()); + SQLStatement statement = new SQLStatement("abc", null, bindings); + assertEquals("abc", statement.sql()); + assertSame(bindings, statement.bindings()); + assertNull(statement.resultColumns()); } } diff --git a/cayenne/src/test/java/org/apache/cayenne/template/CayenneSQLTemplateProcessorTest.java b/cayenne/src/test/java/org/apache/cayenne/template/CayenneSQLTemplateProcessorTest.java index 97aa7b505..9c20d5879 100644 --- a/cayenne/src/test/java/org/apache/cayenne/template/CayenneSQLTemplateProcessorTest.java +++ b/cayenne/src/test/java/org/apache/cayenne/template/CayenneSQLTemplateProcessorTest.java @@ -50,8 +50,8 @@ public class CayenneSQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.emptyMap()); - assertEquals(sqlTemplate, compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals(sqlTemplate, compiled.sql()); + assertEquals(0, compiled.bindings().length); } @Test @@ -60,8 +60,8 @@ public class CayenneSQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.emptyMap()); - assertEquals(sqlTemplate, compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals(sqlTemplate, compiled.sql()); + assertEquals(0, compiled.bindings().length); } @Test @@ -71,10 +71,10 @@ public class CayenneSQLTemplateProcessorTest { Map<String, Object> map = Collections.singletonMap("a", "VALUE_OF_A"); SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE VALUE_OF_A", compiled.getSql()); + assertEquals("SELECT * FROM ME WHERE VALUE_OF_A", compiled.sql()); // bindings are not populated, since no "bind" macro is used. - assertEquals(0, compiled.getBindings().length); + assertEquals(0, compiled.bindings().length); } @Test @@ -84,10 +84,10 @@ public class CayenneSQLTemplateProcessorTest { Map<String, Object> map = Collections.singletonMap("a", "VALUE_OF_A"); SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN1 = ? AND COLUMN2 = ?", compiled.getSql()); - assertEquals(2, compiled.getBindings().length); - assertBindingValue("VALUE_OF_A", compiled.getBindings()[0]); - assertBindingValue(null, compiled.getBindings()[1]); + assertEquals("SELECT * FROM ME WHERE COLUMN1 = ? AND COLUMN2 = ?", compiled.sql()); + assertEquals(2, compiled.bindings().length); + assertBindingValue("VALUE_OF_A", compiled.bindings()[0]); + assertBindingValue(null, compiled.bindings()[1]); } @Test @@ -97,8 +97,8 @@ public class CayenneSQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals(1, compiled.getBindings().length); - assertBindingType(Types.VARCHAR, compiled.getBindings()[0]); + assertEquals(1, compiled.bindings().length); + assertBindingType(Types.VARCHAR, compiled.bindings()[0]); } @Test @@ -108,8 +108,8 @@ public class CayenneSQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals(1, compiled.getBindings().length); - assertBindingType(Types.INTEGER, compiled.getBindings()[0]); + assertEquals(1, compiled.bindings().length); + assertBindingType(Types.INTEGER, compiled.bindings()[0]); } @Test @@ -118,16 +118,16 @@ public class CayenneSQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.emptyMap()); - assertEquals("SELECT * FROM ME WHERE COLUMN IS NULL", compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals("SELECT * FROM ME WHERE COLUMN IS NULL", compiled.sql()); + assertEquals(0, compiled.bindings().length); Map<String, Object> map = Collections.singletonMap("a", "VALUE_OF_A"); compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN = ?", compiled.getSql()); - assertEquals(1, compiled.getBindings().length); - assertBindingValue("VALUE_OF_A", compiled.getBindings()[0]); + assertEquals("SELECT * FROM ME WHERE COLUMN = ?", compiled.sql()); + assertEquals(1, compiled.bindings().length); + assertBindingValue("VALUE_OF_A", compiled.bindings()[0]); } @Test @@ -136,16 +136,16 @@ public class CayenneSQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.emptyMap()); - assertEquals("SELECT * FROM ME WHERE COLUMN IS NOT NULL", compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals("SELECT * FROM ME WHERE COLUMN IS NOT NULL", compiled.sql()); + assertEquals(0, compiled.bindings().length); Map<String, Object> map = Collections.singletonMap("a", "VALUE_OF_A"); compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN <> ?", compiled.getSql()); - assertEquals(1, compiled.getBindings().length); - assertBindingValue("VALUE_OF_A", compiled.getBindings()[0]); + assertEquals("SELECT * FROM ME WHERE COLUMN <> ?", compiled.sql()); + assertEquals(1, compiled.bindings().length); + assertBindingValue("VALUE_OF_A", compiled.bindings()[0]); } @Test @@ -159,9 +159,9 @@ public class CayenneSQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN1 = ?", compiled.getSql()); - assertEquals(1, compiled.getBindings().length); - assertBindingValue(5, compiled.getBindings()[0]); + assertEquals("SELECT * FROM ME WHERE COLUMN1 = ?", compiled.sql()); + assertEquals(1, compiled.bindings().length); + assertBindingValue(5, compiled.bindings()[0]); } @Test @@ -181,10 +181,10 @@ public class CayenneSQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN1 <> ? AND COLUMN2 <> ?", compiled.getSql()); - assertEquals(2, compiled.getBindings().length); - assertBindingValue(3, compiled.getBindings()[0]); - assertBindingValue("aaa", compiled.getBindings()[1]); + assertEquals("SELECT * FROM ME WHERE COLUMN1 <> ? AND COLUMN2 <> ?", compiled.sql()); + assertEquals(2, compiled.bindings().length); + assertBindingValue(3, compiled.bindings()[0]); + assertBindingValue("aaa", compiled.bindings()[1]); } @Test @@ -195,14 +195,14 @@ public class CayenneSQLTemplateProcessorTest { SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN1 > ?", compiled.getSql()); - assertEquals(1, compiled.getBindings().length); - assertBindingValue("VALUE_OF_A", compiled.getBindings()[0]); + assertEquals("SELECT * FROM ME WHERE COLUMN1 > ?", compiled.sql()); + assertEquals(1, compiled.bindings().length); + assertBindingValue("VALUE_OF_A", compiled.bindings()[0]); compiled = processor.processTemplate(sqlTemplate, Collections.emptyMap()); - assertEquals("SELECT * FROM ME ", compiled.getSql()); - assertEquals(0, compiled.getBindings().length); + assertEquals("SELECT * FROM ME ", compiled.sql()); + assertEquals(0, compiled.bindings().length); } @Test @@ -212,18 +212,18 @@ public class CayenneSQLTemplateProcessorTest { Map<String, Object> map = Collections.singletonMap("list", Arrays.asList("a", "b", "c")); SQLStatement compiled = processor.processTemplate(sqlTemplate, map); - assertEquals("SELECT * FROM ME WHERE COLUMN IN (?,?,?)", compiled.getSql()); - assertEquals(3, compiled.getBindings().length); - assertBindingValue("a", compiled.getBindings()[0]); - assertBindingValue("b", compiled.getBindings()[1]); - assertBindingValue("c", compiled.getBindings()[2]); + assertEquals("SELECT * FROM ME WHERE COLUMN IN (?,?,?)", compiled.sql()); + assertEquals(3, compiled.bindings().length); + assertBindingValue("a", compiled.bindings()[0]); + assertBindingValue("b", compiled.bindings()[1]); + assertBindingValue("c", compiled.bindings()[2]); } @Test public void unknownDirective() throws Exception { String sqlTemplate = "SELECT #from(1) FROM a"; SQLStatement compiled = processor.processTemplate(sqlTemplate, Collections.emptyMap()); - assertEquals("SELECT FROM a", compiled.getSql()); + assertEquals("SELECT FROM a", compiled.sql()); } private void assertBindingValue(Object expectedValue, Object binding) {
