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
The following commit(s) were added to refs/heads/past-M2 by this push:
new 7374630d4 Straighten SQL translator flow...
7374630d4 is described below
commit 7374630d4195877e9521849e932c47169a9b6a96
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sat May 30 21:13:19 2026 -0400
Straighten SQL translator flow...
cleanup
---
.../velocity/VelocitySQLTemplateTranslator.java | 10 +++---
.../VelocitySQLTemplateTranslatorTest.java | 28 +++++++--------
.../VelocitySQLTemplateTranslator_ChainTest.java | 24 ++++++-------
.../VelocitySQLTemplateTranslator_SelectTest.java | 12 +++----
.../cayenne/access/jdbc/SQLTemplateAction.java | 13 +++----
.../sqltemplate/CayenneSQLTemplateTranslator.java | 9 +++--
.../sqltemplate/SQLTemplateTranslator.java | 6 ++--
.../sqltemplate/TranslatedSQL.java} | 8 +++--
.../dba/frontbase/FrontBaseTemplateAction.java | 4 +--
.../dba/oracle/Oracle8SQLTemplateAction.java | 4 +--
.../dba/oracle/OracleSQLTemplateAction.java | 8 ++---
.../dba/sqlite/SQLiteSQLTemplateAction.java | 4 +--
.../cayenne/access/jdbc/SQLStatementTest.java | 41 ----------------------
.../CayenneSQLTemplateTranslatorTest.java | 29 +++++++--------
14 files changed, 79 insertions(+), 121 deletions(-)
diff --git
a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator.java
b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator.java
index 04d66a65e..704a0d6a0 100644
---
a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator.java
+++
b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.velocity;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.jdbc.ColumnDescriptor;
-import org.apache.cayenne.access.jdbc.SQLStatement;
+import org.apache.cayenne.access.translator.sqltemplate.TranslatedSQL;
import org.apache.cayenne.access.translator.sqltemplate.SQLTemplateTranslator;
import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.exp.ExpressionException;
@@ -123,7 +123,7 @@ public class VelocitySQLTemplateTranslator implements
SQLTemplateTranslator {
* as a "helper" variable and SQLStatement object as "statement"
variable.
*/
@Override
- public SQLStatement translate(String template, Map<String, ?>
parameters) {
+ public TranslatedSQL translate(String template, Map<String, ?>
parameters) {
// have to make a copy of parameter map since we are gonna
modify it..
Map<String, Object> internalParameters = (parameters != null &&
!parameters.isEmpty()) ? new HashMap<>(
parameters) : new HashMap<String, Object>(5);
@@ -133,7 +133,7 @@ public class VelocitySQLTemplateTranslator implements
SQLTemplateTranslator {
}
@Override
- public SQLStatement translate(String template, List<Object>
positionalParameters) {
+ public TranslatedSQL translate(String template, List<Object>
positionalParameters) {
SimpleNode parsedTemplate = parse(template);
@@ -146,7 +146,7 @@ public class VelocitySQLTemplateTranslator implements
SQLTemplateTranslator {
return translate(template, parsedTemplate, internalParameters);
}
- SQLStatement translate(String template, SimpleNode parsedTemplate,
Map<String, Object> parameters) {
+ TranslatedSQL translate(String template, SimpleNode parsedTemplate,
Map<String, Object> parameters) {
List<ParameterBinding> bindings = new ArrayList<>();
List<ColumnDescriptor> results = new ArrayList<>();
parameters.put(BINDINGS_LIST_KEY, bindings);
@@ -166,7 +166,7 @@ public class VelocitySQLTemplateTranslator implements
SQLTemplateTranslator {
ColumnDescriptor[] resultsArray = new
ColumnDescriptor[results.size()];
results.toArray(resultsArray);
- return new SQLStatement(sql, resultsArray, bindingsArray);
+ return new TranslatedSQL(sql, resultsArray, bindingsArray);
}
String buildStatement(VelocityContext context, String template,
SimpleNode parsedTemplate) throws Exception {
diff --git
a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslatorTest.java
b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslatorTest.java
index 69507f9ae..f3daaf396 100644
---
a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslatorTest.java
+++
b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslatorTest.java
@@ -31,7 +31,7 @@ import java.util.Map;
import org.apache.cayenne.GenericPersistentObject;
import org.apache.cayenne.ObjectId;
import org.apache.cayenne.Persistent;
-import org.apache.cayenne.access.jdbc.SQLStatement;
+import org.apache.cayenne.access.translator.sqltemplate.TranslatedSQL;
import org.apache.cayenne.access.translator.ParameterBinding;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -49,7 +49,7 @@ public class VelocitySQLTemplateTranslatorTest {
public void processTemplateUnchanged1() throws Exception {
String sqlTemplate = "SELECT * FROM ME";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
assertEquals(sqlTemplate, compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -59,7 +59,7 @@ public class VelocitySQLTemplateTranslatorTest {
public void processTemplateUnchanged2() throws Exception {
String sqlTemplate = "SELECT a.b as XYZ FROM $SYSTEM_TABLE";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
assertEquals(sqlTemplate, compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -70,7 +70,7 @@ public class VelocitySQLTemplateTranslatorTest {
String sqlTemplate = "SELECT * FROM ME WHERE $a";
Map<String, Object> map = Collections.<String, Object>
singletonMap("a", "VALUE_OF_A");
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE VALUE_OF_A",
compiled.sql());
@@ -83,7 +83,7 @@ public class VelocitySQLTemplateTranslatorTest {
String sqlTemplate = "SELECT * FROM ME WHERE "
+ "COLUMN1 = #bind($a 'VARCHAR') AND COLUMN2 =
#bind($b 'INTEGER')";
Map<String, Object> map = Collections.<String, Object>
singletonMap("a", "VALUE_OF_A");
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE COLUMN1 = ? AND COLUMN2 =
?", compiled.sql());
assertEquals(2, compiled.bindings().length);
@@ -96,7 +96,7 @@ public class VelocitySQLTemplateTranslatorTest {
String sqlTemplate = "SELECT * FROM ME WHERE COLUMN1 =
#bind($a)";
Map<String, Object> map = Collections.<String, Object>
singletonMap("a", "VALUE_OF_A");
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals(1, compiled.bindings().length);
assertBindingType(Types.VARCHAR, compiled.bindings()[0]);
@@ -107,7 +107,7 @@ public class VelocitySQLTemplateTranslatorTest {
String sqlTemplate = "SELECT * FROM ME WHERE COLUMN1 =
#bind($a)";
Map<String, Object> map = Collections.<String, Object>
singletonMap("a", 4);
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals(1, compiled.bindings().length);
assertBindingType(Types.INTEGER, compiled.bindings()[0]);
@@ -117,7 +117,7 @@ public class VelocitySQLTemplateTranslatorTest {
public void processTemplateBindEqual() throws Exception {
String sqlTemplate = "SELECT * FROM ME WHERE COLUMN
#bindEqual($a 'VARCHAR')";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
assertEquals("SELECT * FROM ME WHERE COLUMN IS NULL",
compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -135,7 +135,7 @@ public class VelocitySQLTemplateTranslatorTest {
public void processTemplateBindNotEqual() throws Exception {
String sqlTemplate = "SELECT * FROM ME WHERE COLUMN
#bindNotEqual($a 'VARCHAR')";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
assertEquals("SELECT * FROM ME WHERE COLUMN IS NOT NULL",
compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -158,7 +158,7 @@ public class VelocitySQLTemplateTranslatorTest {
Map<String, Object> map = Collections.<String, Object>
singletonMap("a", persistent);
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE COLUMN1 = ?",
compiled.sql());
assertEquals(1, compiled.bindings().length);
@@ -180,7 +180,7 @@ public class VelocitySQLTemplateTranslatorTest {
Map<String, Object> map = Collections.<String, Object>
singletonMap("a", persistent);
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE COLUMN1 <> ? AND COLUMN2
<> ?", compiled.sql());
assertEquals(2, compiled.bindings().length);
@@ -194,7 +194,7 @@ public class VelocitySQLTemplateTranslatorTest {
Map<String, Object> map = Collections.<String, Object>
singletonMap("a", "VALUE_OF_A");
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE COLUMN1 > ?",
compiled.sql());
assertEquals(1, compiled.bindings().length);
@@ -211,7 +211,7 @@ public class VelocitySQLTemplateTranslatorTest {
String sqlTemplate = "SELECT * FROM ME WHERE COLUMN IN
(#bind($list 'VARCHAR'))";
Map<String, Object> map = Collections.<String, Object>
singletonMap("list", Arrays.asList("a", "b", "c"));
- SQLStatement compiled = new
VelocitySQLTemplateTranslator().translate(sqlTemplate, map);
+ TranslatedSQL compiled = new
VelocitySQLTemplateTranslator().translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE COLUMN IN (?,?,?)",
compiled.sql());
assertEquals(3, compiled.bindings().length);
@@ -225,7 +225,7 @@ public class VelocitySQLTemplateTranslatorTest {
@Test
public void unknownDirective() throws Exception {
String sqlTemplate = "SELECT #from(1) FROM a";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
assertEquals("SELECT #from(1) FROM a", compiled.sql());
}
diff --git
a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_ChainTest.java
b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_ChainTest.java
index 8084950b8..a8b707e64 100644
---
a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_ChainTest.java
+++
b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_ChainTest.java
@@ -25,7 +25,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-import org.apache.cayenne.access.jdbc.SQLStatement;
+import org.apache.cayenne.access.translator.sqltemplate.TranslatedSQL;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -43,7 +43,7 @@ public class VelocitySQLTemplateTranslator_ChainTest {
// whatever is inside the chain, it should render as empty if
there
// is no chunks...
- SQLStatement compiled = processor.translate("#chain(' AND ')
#end",
+ TranslatedSQL compiled = processor.translate("#chain(' AND ')
#end",
Collections.<String, Object> emptyMap());
assertEquals("", compiled.sql());
@@ -68,7 +68,7 @@ public class VelocitySQLTemplateTranslator_ChainTest {
map.put("b", "[B]");
map.put("c", "[C]");
- SQLStatement compiled = processor.translate(template, map);
+ TranslatedSQL compiled = processor.translate(template, map);
assertEquals("[A] OR [B] OR [C]", compiled.sql());
}
@@ -82,7 +82,7 @@ public class VelocitySQLTemplateTranslator_ChainTest {
map.put("b", "[B]");
map.put("c", "[C]");
- SQLStatement compiled = processor.translate(template, map);
+ TranslatedSQL compiled = processor.translate(template, map);
assertEquals("WHERE [A] OR [B] OR [C]", compiled.sql());
}
@@ -95,7 +95,7 @@ public class VelocitySQLTemplateTranslator_ChainTest {
map.put("a", "[A]");
map.put("c", "[C]");
- SQLStatement compiled = processor.translate(template, map);
+ TranslatedSQL compiled = processor.translate(template, map);
assertEquals("WHERE [A] OR [C]", compiled.sql());
}
@@ -108,7 +108,7 @@ public class VelocitySQLTemplateTranslator_ChainTest {
map.put("b", "[B]");
map.put("c", "[C]");
- SQLStatement compiled = processor.translate(template, map);
+ TranslatedSQL compiled = processor.translate(template, map);
assertEquals("WHERE [B] OR [C]", compiled.sql());
}
@@ -121,7 +121,7 @@ public class VelocitySQLTemplateTranslator_ChainTest {
map.put("a", "[A]");
map.put("b", "[B]");
- SQLStatement compiled = processor.translate(template, map);
+ TranslatedSQL compiled = processor.translate(template, map);
assertEquals("WHERE [A] OR [B]", compiled.sql());
}
@@ -134,7 +134,7 @@ public class VelocitySQLTemplateTranslator_ChainTest {
map.put("a", "[A]");
map.put("c", "[C]");
- SQLStatement compiled = processor.translate(template, map);
+ TranslatedSQL compiled = processor.translate(template, map);
assertEquals("WHERE [A] some other stuff OR [C]",
compiled.sql());
}
@@ -142,7 +142,7 @@ public class VelocitySQLTemplateTranslator_ChainTest {
public void processTemplateChainUnconditionalChunks() throws Exception {
String template = "#chain(' OR ' 'WHERE ')" + "#chunk()C1#end"
+ "#chunk()C2#end" + "#chunk()C3#end" + "#end";
- SQLStatement compiled = processor.translate(template,
Collections.<String, Object> emptyMap());
+ TranslatedSQL compiled = processor.translate(template,
Collections.<String, Object> emptyMap());
assertEquals("WHERE C1 OR C2 OR C3", compiled.sql());
}
@@ -151,7 +151,7 @@ public class VelocitySQLTemplateTranslator_ChainTest {
String template = "#chain(' OR ' 'WHERE ')" +
"#chunk($a)$a#end" + "#chunk($b)$b#end" + "#chunk($c)$c#end"
+ "#end";
- SQLStatement compiled = processor.translate(template,
Collections.<String, Object> emptyMap());
+ TranslatedSQL compiled = processor.translate(template,
Collections.<String, Object> emptyMap());
assertEquals("", compiled.sql());
}
@@ -164,7 +164,7 @@ public class VelocitySQLTemplateTranslator_ChainTest {
map.put("a", false);
map.put("b", 0);
- SQLStatement compiled = processor.translate(template, map);
+ TranslatedSQL compiled = processor.translate(template, map);
assertEquals("WHERE [A] OR [B]", compiled.sql());
}
@@ -177,7 +177,7 @@ public class VelocitySQLTemplateTranslator_ChainTest {
map.put("a", false);
map.put("b", 0);
- SQLStatement compiled = processor.translate(template, map);
+ TranslatedSQL compiled = processor.translate(template, map);
assertEquals("WHERE false OR 0", compiled.sql());
}
diff --git
a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_SelectTest.java
b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_SelectTest.java
index 6507ca2e7..cc7369be1 100644
---
a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_SelectTest.java
+++
b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_SelectTest.java
@@ -25,7 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import java.util.Collections;
import org.apache.cayenne.access.jdbc.ColumnDescriptor;
-import org.apache.cayenne.access.jdbc.SQLStatement;
+import org.apache.cayenne.access.translator.sqltemplate.TranslatedSQL;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -42,7 +42,7 @@ public class VelocitySQLTemplateTranslator_SelectTest {
public void processTemplateUnchanged() throws Exception {
String sqlTemplate = "SELECT * FROM ME";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
assertEquals(sqlTemplate, compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -53,7 +53,7 @@ public class VelocitySQLTemplateTranslator_SelectTest {
public void processSelectTemplate1() throws Exception {
String sqlTemplate = "SELECT #result('A') FROM ME";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
assertEquals("SELECT A FROM ME", compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -66,7 +66,7 @@ public class VelocitySQLTemplateTranslator_SelectTest {
public void processSelectTemplate2() throws Exception {
String sqlTemplate = "SELECT #result('A' 'String') FROM ME";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
assertEquals("SELECT A FROM ME", compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -80,7 +80,7 @@ public class VelocitySQLTemplateTranslator_SelectTest {
public void processSelectTemplate3() throws Exception {
String sqlTemplate = "SELECT #result('A' 'String' 'B') FROM ME";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
assertEquals("SELECT A AS B FROM ME", compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -96,7 +96,7 @@ public class VelocitySQLTemplateTranslator_SelectTest {
public void processSelectTemplate4() throws Exception {
String sqlTemplate = "SELECT #result('A'), #result('B'),
#result('C') FROM ME";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.<String, Object> emptyMap());
assertEquals("SELECT A, B, C FROM ME", compiled.sql());
assertEquals(0, compiled.bindings().length);
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 b33946421..444c14e13 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
@@ -25,6 +25,7 @@ import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.OperationObserver;
import org.apache.cayenne.access.jdbc.reader.RowReader;
import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.sqltemplate.TranslatedSQL;
import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.access.types.ExtendedTypeMap;
import org.apache.cayenne.dba.DbAdapter;
@@ -139,7 +140,7 @@ public class SQLTemplateAction implements SQLAction {
private void runWithPositionalParameters(Connection connection,
OperationObserver callback, String template,
Collection<Number> counts, boolean loggable) throws Exception {
- SQLStatement compiled =
dataNode.getSqlTemplateTranslator().translate(template,
+ TranslatedSQL compiled =
dataNode.getSqlTemplateTranslator().translate(template,
query.getPositionalParams());
bindExtendedTypes(compiled.bindings());
@@ -171,7 +172,7 @@ public class SQLTemplateAction implements SQLAction {
for (int i = 0; i < batchSize; i++) {
Map<String, ?> nextParameters = it.next();
- SQLStatement compiled =
dataNode.getSqlTemplateTranslator().translate(template, nextParameters);
+ TranslatedSQL compiled =
dataNode.getSqlTemplateTranslator().translate(template, nextParameters);
bindExtendedTypes(compiled.bindings());
if (loggable) {
dataNode.getJdbcEventLogger().logQuery(compiled.sql(), compiled.bindings());
@@ -182,7 +183,7 @@ public class SQLTemplateAction implements SQLAction {
}
- protected void execute(Connection connection, OperationObserver
callback, SQLStatement compiled,
+ protected void execute(Connection connection, OperationObserver
callback, TranslatedSQL compiled,
Collection<Number>
updateCounts) throws Exception {
long t1 = System.currentTimeMillis();
@@ -247,7 +248,7 @@ public class SQLTemplateAction implements SQLAction {
}
@SuppressWarnings({ "unchecked", "rawtypes" })
- protected void processSelectResult(SQLStatement compiled, Connection
connection, Statement statement,
+ protected void processSelectResult(TranslatedSQL compiled, Connection
connection, Statement statement,
ResultSet resultSet, OperationObserver callback, final long startTime) throws
Exception {
boolean iteratedResult = callback.isIteratedResult();
@@ -300,7 +301,7 @@ public class SQLTemplateAction implements SQLAction {
/**
* Creates column descriptors based on compiled statement and query
metadata
*/
- private ColumnDescriptor[] createColumnDescriptors(SQLStatement
compiled) {
+ private ColumnDescriptor[] createColumnDescriptors(TranslatedSQL
compiled) {
// SQLTemplate #result columns take precedence over other ways
to determine the type
if (compiled.resultColumns().length > 0) {
if(query.getResultColumnsTypes() != null) {
@@ -328,7 +329,7 @@ public class SQLTemplateAction implements SQLAction {
/**
* @since 3.0
*/
- protected RowDescriptorBuilder
configureRowDescriptorBuilder(SQLStatement compiled, ResultSet resultSet)
+ protected RowDescriptorBuilder
configureRowDescriptorBuilder(TranslatedSQL compiled, ResultSet resultSet)
throws SQLException {
RowDescriptorBuilder builder = new RowDescriptorBuilder()
.setResultSet(resultSet)
diff --git
a/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/CayenneSQLTemplateTranslator.java
b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/CayenneSQLTemplateTranslator.java
index f2136e351..1710a0550 100644
---
a/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/CayenneSQLTemplateTranslator.java
+++
b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/CayenneSQLTemplateTranslator.java
@@ -20,7 +20,6 @@
package org.apache.cayenne.access.translator.sqltemplate;
import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.access.jdbc.SQLStatement;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.access.translator.sqltemplate.parser.Node;
import org.apache.cayenne.access.translator.sqltemplate.parser.ParseException;
@@ -51,13 +50,13 @@ public class CayenneSQLTemplateTranslator implements
SQLTemplateTranslator {
}
@Override
- public SQLStatement translate(String template, Map<String, ?> parameters) {
+ public TranslatedSQL translate(String template, Map<String, ?> parameters)
{
Context context = contextFactory.createContext(parameters);
return process(template, context);
}
@Override
- public SQLStatement translate(String template, List<Object>
positionalParameters) {
+ public TranslatedSQL translate(String template, List<Object>
positionalParameters) {
Map<String, Object> parameters = new HashMap<>();
int i=0;
for(Object param : positionalParameters) {
@@ -67,7 +66,7 @@ public class CayenneSQLTemplateTranslator implements
SQLTemplateTranslator {
return process(template, context);
}
- protected SQLStatement process(String template, Context context) {
+ protected TranslatedSQL process(String template, Context context) {
Node node = templateCache.get(template);
if(node == null) {
SQLTemplateParser parser = parserPool.get();
@@ -85,6 +84,6 @@ public class CayenneSQLTemplateTranslator implements
SQLTemplateTranslator {
node.evaluate(context);
- return new SQLStatement(context.buildTemplate(),
context.getColumnDescriptors(), context.getParameterBindings());
+ return new TranslatedSQL(context.buildTemplate(),
context.getColumnDescriptors(), context.getParameterBindings());
}
}
diff --git
a/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/SQLTemplateTranslator.java
b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/SQLTemplateTranslator.java
index 41eda201f..70a7df95f 100644
---
a/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/SQLTemplateTranslator.java
+++
b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/SQLTemplateTranslator.java
@@ -18,8 +18,6 @@
****************************************************************/
package org.apache.cayenne.access.translator.sqltemplate;
-import org.apache.cayenne.access.jdbc.SQLStatement;
-
import java.util.List;
import java.util.Map;
@@ -34,7 +32,7 @@ public interface SQLTemplateTranslator {
*
* @since 5.0
*/
- SQLStatement translate(String template, Map<String, ?> parameters);
+ TranslatedSQL translate(String template, Map<String, ?> parameters);
/**
* Builds and returns a SQLStatement based on SQL template String and a
list
@@ -42,5 +40,5 @@ public interface SQLTemplateTranslator {
*
* @since 5.0
*/
- SQLStatement translate(String template, List<Object>
positionalParameters);
+ TranslatedSQL translate(String template, List<Object>
positionalParameters);
}
diff --git
a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLStatement.java
b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/TranslatedSQL.java
similarity index 82%
rename from
cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLStatement.java
rename to
cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/TranslatedSQL.java
index 1cf46f90b..94e0b6e85 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLStatement.java
+++
b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/TranslatedSQL.java
@@ -17,8 +17,9 @@
* under the License.
****************************************************************/
-package org.apache.cayenne.access.jdbc;
+package org.apache.cayenne.access.translator.sqltemplate;
+import org.apache.cayenne.access.jdbc.ColumnDescriptor;
import org.apache.cayenne.access.translator.ParameterBinding;
/**
@@ -26,5 +27,8 @@ import org.apache.cayenne.access.translator.ParameterBinding;
*
* @since 1.1
*/
-public record SQLStatement(String sql, ColumnDescriptor[] resultColumns,
ParameterBinding[] bindings) {
+public record TranslatedSQL(
+ String sql,
+ ColumnDescriptor[] resultColumns,
+ ParameterBinding[] bindings) {
}
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 6c484aab3..99d1f41b8 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
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.frontbase;
import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.OperationObserver;
-import org.apache.cayenne.access.jdbc.SQLStatement;
+import org.apache.cayenne.access.translator.sqltemplate.TranslatedSQL;
import org.apache.cayenne.access.jdbc.SQLTemplateAction;
import org.apache.cayenne.query.SQLTemplate;
@@ -42,7 +42,7 @@ public class FrontBaseTemplateAction extends
SQLTemplateAction {
}
@Override
- protected void execute(Connection connection, OperationObserver callback,
SQLStatement compiled,
+ protected void execute(Connection connection, OperationObserver callback,
TranslatedSQL compiled,
Collection<Number> updateCounts) throws SQLException,
Exception {
long t1 = System.currentTimeMillis();
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 5413906de..4999bfc9b 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
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.oracle;
import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.OperationObserver;
-import org.apache.cayenne.access.jdbc.SQLStatement;
+import org.apache.cayenne.access.translator.sqltemplate.TranslatedSQL;
import org.apache.cayenne.access.jdbc.SQLTemplateAction;
import org.apache.cayenne.query.SQLTemplate;
@@ -48,7 +48,7 @@ class Oracle8SQLTemplateAction extends SQLTemplateAction {
* not work in Oracle 8.* drivers.
*/
@Override
- protected void execute(Connection connection, OperationObserver callback,
SQLStatement compiled,
+ protected void execute(Connection connection, OperationObserver callback,
TranslatedSQL compiled,
Collection<Number> updateCounts) throws Exception {
String sql = compiled.sql().trim();
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 79d8053e0..cb8c39c46 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
@@ -26,7 +26,7 @@ import java.sql.Statement;
import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.OperationObserver;
import org.apache.cayenne.access.jdbc.RowDescriptorBuilder;
-import org.apache.cayenne.access.jdbc.SQLStatement;
+import org.apache.cayenne.access.translator.sqltemplate.TranslatedSQL;
import org.apache.cayenne.access.jdbc.SQLTemplateAction;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.query.SQLTemplate;
@@ -44,8 +44,8 @@ class OracleSQLTemplateAction extends SQLTemplateAction {
}
@Override
- protected void processSelectResult(SQLStatement compiled, Connection
connection, Statement statement,
- ResultSet resultSet, OperationObserver callback, long
startTime) throws Exception {
+ protected void processSelectResult(TranslatedSQL compiled, Connection
connection, Statement statement,
+
ResultSet resultSet, OperationObserver callback, long startTime) throws
Exception {
// wrap ResultSet to distinguish between Integer and BigDecimal
for
// Oracle NUMBER
@@ -62,7 +62,7 @@ class OracleSQLTemplateAction extends SQLTemplateAction {
* @since 3.0
*/
@Override
- protected RowDescriptorBuilder
configureRowDescriptorBuilder(SQLStatement compiled, ResultSet resultSet)
+ protected RowDescriptorBuilder
configureRowDescriptorBuilder(TranslatedSQL compiled, ResultSet resultSet)
throws SQLException {
RowDescriptorBuilder builder =
super.configureRowDescriptorBuilder(compiled, 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 21b1997ed..e9024a442 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
@@ -20,7 +20,7 @@ package org.apache.cayenne.dba.sqlite;
import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.OperationObserver;
-import org.apache.cayenne.access.jdbc.SQLStatement;
+import org.apache.cayenne.access.translator.sqltemplate.TranslatedSQL;
import org.apache.cayenne.access.jdbc.SQLTemplateAction;
import org.apache.cayenne.query.SQLTemplate;
@@ -47,7 +47,7 @@ class SQLiteSQLTemplateAction extends SQLTemplateAction {
protected void execute(
Connection connection,
OperationObserver callback,
- SQLStatement compiled,
+ TranslatedSQL compiled,
Collection<Number> updateCounts) throws Exception {
String sql = compiled.sql().trim();
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
deleted file mode 100644
index 17b45bcd9..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLStatementTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ****************************************************************/
-
-package org.apache.cayenne.access.jdbc;
-
-import org.apache.cayenne.access.translator.ParameterBinding;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertSame;
-
-/**
- */
-public class SQLStatementTest {
-
- @Test
- public void constructor() throws Exception {
- ParameterBinding[] bindings = new ParameterBinding[0];
- 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/access/translator/sqltemplate/CayenneSQLTemplateTranslatorTest.java
b/cayenne/src/test/java/org/apache/cayenne/access/translator/sqltemplate/CayenneSQLTemplateTranslatorTest.java
index 2fd952c0d..0097bb7f8 100644
---
a/cayenne/src/test/java/org/apache/cayenne/access/translator/sqltemplate/CayenneSQLTemplateTranslatorTest.java
+++
b/cayenne/src/test/java/org/apache/cayenne/access/translator/sqltemplate/CayenneSQLTemplateTranslatorTest.java
@@ -28,10 +28,7 @@ import java.util.Map;
import org.apache.cayenne.GenericPersistentObject;
import org.apache.cayenne.ObjectId;
import org.apache.cayenne.Persistent;
-import org.apache.cayenne.access.jdbc.SQLStatement;
import org.apache.cayenne.access.translator.ParameterBinding;
-import
org.apache.cayenne.access.translator.sqltemplate.CayenneSQLTemplateTranslator;
-import
org.apache.cayenne.access.translator.sqltemplate.DefaultTemplateContextFactory;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -50,7 +47,7 @@ public class CayenneSQLTemplateTranslatorTest {
public void processTemplateUnchanged1() throws Exception {
String sqlTemplate = "SELECT * FROM ME";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
assertEquals(sqlTemplate, compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -60,7 +57,7 @@ public class CayenneSQLTemplateTranslatorTest {
public void processTemplateUnchanged2() throws Exception {
String sqlTemplate = "SELECT a.b as XYZ FROM $SYSTEM_TABLE";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
assertEquals(sqlTemplate, compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -71,7 +68,7 @@ public class CayenneSQLTemplateTranslatorTest {
String sqlTemplate = "SELECT * FROM ME WHERE $a";
Map<String, Object> map = Collections.singletonMap("a", "VALUE_OF_A");
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE VALUE_OF_A", compiled.sql());
@@ -84,7 +81,7 @@ public class CayenneSQLTemplateTranslatorTest {
String sqlTemplate = "SELECT * FROM ME WHERE "
+ "COLUMN1 = #bind($a 'VARCHAR') AND COLUMN2 = #bind($b
'INTEGER')";
Map<String, Object> map = Collections.singletonMap("a", "VALUE_OF_A");
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE COLUMN1 = ? AND COLUMN2 = ?",
compiled.sql());
assertEquals(2, compiled.bindings().length);
@@ -97,7 +94,7 @@ public class CayenneSQLTemplateTranslatorTest {
String sqlTemplate = "SELECT * FROM ME WHERE COLUMN1 = #bind($a)";
Map<String, Object> map = Collections.singletonMap("a", "VALUE_OF_A");
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals(1, compiled.bindings().length);
assertBindingType(Types.VARCHAR, compiled.bindings()[0]);
@@ -108,7 +105,7 @@ public class CayenneSQLTemplateTranslatorTest {
String sqlTemplate = "SELECT * FROM ME WHERE COLUMN1 = #bind($a)";
Map<String, Object> map = Collections.singletonMap("a", 4);
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals(1, compiled.bindings().length);
assertBindingType(Types.INTEGER, compiled.bindings()[0]);
@@ -118,7 +115,7 @@ public class CayenneSQLTemplateTranslatorTest {
public void processTemplateBindEqual() throws Exception {
String sqlTemplate = "SELECT * FROM ME WHERE COLUMN #bindEqual($a
'VARCHAR')";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
assertEquals("SELECT * FROM ME WHERE COLUMN IS NULL", compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -136,7 +133,7 @@ public class CayenneSQLTemplateTranslatorTest {
public void processTemplateBindNotEqual() throws Exception {
String sqlTemplate = "SELECT * FROM ME WHERE COLUMN #bindNotEqual($a
'VARCHAR')";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
assertEquals("SELECT * FROM ME WHERE COLUMN IS NOT NULL",
compiled.sql());
assertEquals(0, compiled.bindings().length);
@@ -159,7 +156,7 @@ public class CayenneSQLTemplateTranslatorTest {
Map<String, Object> map = Collections.singletonMap("a", persistent);
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE COLUMN1 = ?", compiled.sql());
assertEquals(1, compiled.bindings().length);
@@ -181,7 +178,7 @@ public class CayenneSQLTemplateTranslatorTest {
Map<String, Object> map = Collections.singletonMap("a", persistent);
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE COLUMN1 <> ? AND COLUMN2 <> ?",
compiled.sql());
assertEquals(2, compiled.bindings().length);
@@ -195,7 +192,7 @@ public class CayenneSQLTemplateTranslatorTest {
Map<String, Object> map = Collections.singletonMap("a", "VALUE_OF_A");
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE COLUMN1 > ?", compiled.sql());
assertEquals(1, compiled.bindings().length);
@@ -212,7 +209,7 @@ public class CayenneSQLTemplateTranslatorTest {
String sqlTemplate = "SELECT * FROM ME WHERE COLUMN IN (#bind($list
'VARCHAR'))";
Map<String, Object> map = Collections.singletonMap("list",
Arrays.asList("a", "b", "c"));
- SQLStatement compiled = processor.translate(sqlTemplate, map);
+ TranslatedSQL compiled = processor.translate(sqlTemplate, map);
assertEquals("SELECT * FROM ME WHERE COLUMN IN (?,?,?)",
compiled.sql());
assertEquals(3, compiled.bindings().length);
@@ -224,7 +221,7 @@ public class CayenneSQLTemplateTranslatorTest {
@Test
public void unknownDirective() throws Exception {
String sqlTemplate = "SELECT #from(1) FROM a";
- SQLStatement compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
+ TranslatedSQL compiled = processor.translate(sqlTemplate,
Collections.emptyMap());
assertEquals("SELECT FROM a", compiled.sql());
}