You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2016/03/05 09:21:49 UTC
[1/6] cayenne git commit: CAY-2050 Refactoring: ParameterBinding to
contain ExtendedType property
Repository: cayenne
Updated Branches:
refs/heads/master 3579ecf57 -> 08fbf1e08
CAY-2050 Refactoring: ParameterBinding to contain ExtendedType property
* missing ExtendedType assignment
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/08fbf1e0
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/08fbf1e0
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/08fbf1e0
Branch: refs/heads/master
Commit: 08fbf1e08c8034121c648dda3231dba58ac8599c
Parents: 5bff2d5
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sat Mar 5 07:59:21 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sat Mar 5 09:14:31 2016 +0100
----------------------------------------------------------------------
.../java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/08fbf1e0/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
index 645aa46..e24806c 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
@@ -353,8 +353,9 @@ public class SQLTemplateAction implements SQLAction {
for (int i = 0; i < len; i++) {
ExtendedType extendedType = getAdapter().getExtendedTypes().getDefaultType();
if (bindings[i].getValue() != null) {
- getAdapter().getExtendedTypes().getRegisteredType(bindings[i].getValue().getClass());
+ extendedType = getAdapter().getExtendedTypes().getRegisteredType(bindings[i].getValue().getClass());
}
+
ParameterBinding binding = new ParameterBinding(extendedType);
binding.setType(bindings[i].getJdbcType());
binding.setStatementPosition(i + 1);
[4/6] cayenne git commit: CAY-2050 Refactoring: ParameterBinding to
contain ExtendedType property - switch to new api
Posted by aa...@apache.org.
CAY-2050 Refactoring: ParameterBinding to contain ExtendedType property - switch to new api
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/bfb4747d
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/bfb4747d
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/bfb4747d
Branch: refs/heads/master
Commit: bfb4747d5cd0022ea1d59ba493cde38272094c9c
Parents: 3579ecf
Author: Alexei Grigoriev <ag...@objectstyle.com>
Authored: Wed Jan 27 17:16:49 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sat Mar 5 09:14:31 2016 +0100
----------------------------------------------------------------------
.../apache/cayenne/access/jdbc/BatchAction.java | 15 ++--
.../cayenne/access/jdbc/SQLTemplateAction.java | 19 +---
.../cayenne/access/jdbc/SelectAction.java | 15 ++--
.../access/translator/ParameterBinding.java | 9 ++
.../translator/ProcedureParameterBinding.java | 66 ++++++++++++++
.../procedure/ProcedureTranslator.java | 21 +++--
.../org/apache/cayenne/dba/AutoAdapter.java | 26 ++++--
.../java/org/apache/cayenne/dba/DbAdapter.java | 18 +++-
.../org/apache/cayenne/dba/JdbcAdapter.java | 93 ++++++++++++++------
.../org/apache/cayenne/dba/db2/DB2Adapter.java | 15 ++--
.../apache/cayenne/dba/derby/DerbyAdapter.java | 13 ++-
.../cayenne/dba/ingres/IngresAdapter.java | 51 +++++------
.../apache/cayenne/dba/mysql/MySQLAdapter.java | 34 +++----
.../dba/oracle/Oracle8LOBBatchAction.java | 37 ++++----
.../cayenne/dba/oracle/OracleAdapter.java | 10 ++-
.../cayenne/dba/postgres/PostgresAdapter.java | 6 +-
.../cayenne/dba/sqlite/SQLiteAdapter.java | 5 +-
.../cayenne/dba/sybase/SybaseAdapter.java | 19 ++--
.../cayenne/access/ReturnTypesMappingIT.java | 7 +-
19 files changed, 295 insertions(+), 184 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
index faff51c..fa0065f 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
@@ -19,14 +19,6 @@
package org.apache.cayenne.access.jdbc;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Collection;
-import java.util.Collections;
-
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.ResultIterator;
import org.apache.cayenne.access.DataNode;
@@ -44,6 +36,10 @@ import org.apache.cayenne.query.BatchQuery;
import org.apache.cayenne.query.BatchQueryRow;
import org.apache.cayenne.query.InsertBatchQuery;
+import java.sql.*;
+import java.util.Collection;
+import java.util.Collections;
+
/**
* @since 1.2
*/
@@ -58,8 +54,7 @@ public class BatchAction extends BaseSQLAction {
for (ParameterBinding b : bindings) {
if (!b.isExcluded()) {
- adapter.bindParameter(statement, b.getValue(), b.getStatementPosition(), b.getAttribute().getType(), b
- .getAttribute().getScale());
+ adapter.bindParameter(statement, b);
}
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
index 97a1067..b309ba3 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
@@ -19,19 +19,6 @@
package org.apache.cayenne.access.jdbc;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.ResultIterator;
@@ -51,6 +38,9 @@ import org.apache.cayenne.query.SQLTemplate;
import org.apache.cayenne.util.Util;
import org.apache.commons.collections.IteratorUtils;
+import java.sql.*;
+import java.util.*;
+
/**
* Implements a strategy for execution of SQLTemplates.
*
@@ -349,8 +339,7 @@ public class SQLTemplateAction implements SQLAction {
if (bindings.length > 0) {
int len = bindings.length;
for (int i = 0; i < len; i++) {
- dataNode.getAdapter().bindParameter(preparedStatement, bindings[i].getValue(), i + 1,
- bindings[i].getJdbcType(), bindings[i].getScale());
+ dataNode.getAdapter().bindParameter(preparedStatement, bindings[i], i + 1);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
index f5ff8d1..16a9893 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
@@ -19,12 +19,6 @@
package org.apache.cayenne.access.jdbc;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.List;
-
import org.apache.cayenne.DataRow;
import org.apache.cayenne.ResultIterator;
import org.apache.cayenne.access.DataNode;
@@ -39,6 +33,12 @@ import org.apache.cayenne.query.PrefetchTreeNode;
import org.apache.cayenne.query.QueryMetadata;
import org.apache.cayenne.query.SelectQuery;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.List;
+
/**
* A SQLAction that handles SelectQuery execution.
*
@@ -62,8 +62,7 @@ public class SelectAction extends BaseSQLAction {
if (b.getAttribute() == null) {
statement.setObject(b.getStatementPosition(), b.getValue());
} else {
- adapter.bindParameter(statement, b.getValue(), b.getStatementPosition(), b.getAttribute().getType(), b
- .getAttribute().getScale());
+ adapter.bindParameter(statement, b);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
index 336dd3b..fb5bbcb 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
@@ -34,6 +34,7 @@ public class ParameterBinding {
private Object value;
private int statementPosition;
private ExtendedType extendedType;
+ private Integer type;
public ParameterBinding(DbAttribute attribute, ExtendedType extendedType) {
this.attribute = attribute;
@@ -85,4 +86,12 @@ public class ParameterBinding {
this.statementPosition = statementPosition;
this.value = value;
}
+
+ public Integer getType() {
+ return type != null ? type : attribute.getType();
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java
new file mode 100644
index 0000000..e1a72ed
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java
@@ -0,0 +1,66 @@
+/*****************************************************************
+ * 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
+ *
+ * http://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.translator;
+
+import org.apache.cayenne.access.types.ExtendedType;
+import org.apache.cayenne.map.ProcedureParameter;
+
+/**
+ * Describes a PreparedStatement parameter binding mapped to a CallableStatment.
+ *
+ * @since 4.0
+ */
+public class ProcedureParameterBinding {
+ public ProcedureParameterBinding(ProcedureParameter param) {
+ this.param = param;
+ }
+
+ private final ProcedureParameter param;
+ private Object value;
+ private int statementPosition;
+ private ExtendedType extendedType;
+
+ public ProcedureParameter getParam() {
+ return param;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+ public int getStatementPosition() {
+ return statementPosition;
+ }
+
+ public void setStatementPosition(int statementPosition) {
+ this.statementPosition = statementPosition;
+ }
+
+ public ExtendedType getExtendedType() {
+ return extendedType;
+ }
+
+ public void setExtendedType(ExtendedType extendedType) {
+ this.extendedType = extendedType;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
index 12d291e..f6021f2 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
@@ -19,13 +19,7 @@
package org.apache.cayenne.access.translator.procedure;
-import java.sql.CallableStatement;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
+import org.apache.cayenne.access.translator.ProcedureParameterBinding;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.log.JdbcEventLogger;
import org.apache.cayenne.log.NoopJdbcEventLogger;
@@ -34,6 +28,13 @@ import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.ProcedureParameter;
import org.apache.cayenne.query.ProcedureQuery;
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
/**
* Stored procedure query translator.
*/
@@ -230,8 +231,10 @@ public class ProcedureTranslator {
Object val,
int pos) throws Exception {
- int type = param.getType();
- adapter.bindParameter(stmt, val, pos, type, param.getPrecision());
+ ProcedureParameterBinding binding = new ProcedureParameterBinding(param);
+ binding.setValue(val);
+ binding.setStatementPosition(pos);
+ adapter.bindParameter(stmt, binding);
}
/**
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
index 0976763..8df16f1 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
@@ -19,12 +19,11 @@
package org.apache.cayenne.dba;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.util.Collection;
-
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.access.jdbc.SQLParameterBinding;
+import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.ProcedureParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
@@ -41,6 +40,11 @@ import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.SQLAction;
import org.apache.cayenne.query.SelectQuery;
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.Collection;
+
/**
* A DbAdapter that automatically detects the kind of database it is running on
* and instantiates an appropriate DB-specific adapter, delegating all
@@ -199,9 +203,19 @@ public class AutoAdapter implements DbAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int precision)
+ public void bindParameter(PreparedStatement statement, ParameterBinding parameterBinding)
throws SQLException, Exception {
- getAdapter().bindParameter(statement, object, pos, sqlType, precision);
+ getAdapter().bindParameter(statement, parameterBinding);
+ }
+
+ @Override
+ public void bindParameter(PreparedStatement statement, SQLParameterBinding parameterBinding, int position) throws SQLException, Exception {
+ getAdapter().bindParameter(statement, parameterBinding, position);
+ }
+
+ @Override
+ public void bindParameter(CallableStatement statement, ProcedureParameterBinding binding) throws SQLException, Exception {
+ getAdapter().bindParameter(statement, binding);
}
@Override
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
index b71a741..6cf4eb0 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
@@ -19,6 +19,9 @@
package org.apache.cayenne.dba;
import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.access.jdbc.SQLParameterBinding;
+import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.ProcedureParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
@@ -33,6 +36,7 @@ import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.SQLAction;
import org.apache.cayenne.query.SelectQuery;
+import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Collection;
@@ -167,7 +171,19 @@ public interface DbAdapter {
/**
* Binds an object value to PreparedStatement's numbered parameter.
*/
- void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int scale)
+ void bindParameter(PreparedStatement statement, ParameterBinding parameterBinding)
+ throws SQLException, Exception;
+
+ /**
+ * Binds an object value to PreparedStatement's numbered parameter.
+ */
+ void bindParameter(PreparedStatement statement, SQLParameterBinding parameterBinding, int position)
+ throws SQLException, Exception;
+
+ /**
+ * Binds an object value to CallableStatement's numbered parameter.
+ */
+ void bindParameter(CallableStatement statement, ProcedureParameterBinding binding)
throws SQLException, Exception;
/**
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
index 243d3f7..773f069 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
@@ -21,6 +21,9 @@ package org.apache.cayenne.dba;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.access.jdbc.SQLParameterBinding;
+import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.ProcedureParameterBinding;
import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.JdbcEJBQLTranslatorFactory;
@@ -49,6 +52,7 @@ import org.apache.cayenne.resource.ResourceLocator;
import org.apache.cayenne.util.Util;
import java.net.URL;
+import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
@@ -79,7 +83,7 @@ public class JdbcAdapter implements DbAdapter {
/**
* @since 3.1
* @deprecated since 4.0 BatchQueryBuilderfactory is attached to the
- * DataNode.
+ * DataNode.
*/
@Inject
protected BatchTranslatorFactory batchQueryBuilderFactory;
@@ -91,10 +95,10 @@ public class JdbcAdapter implements DbAdapter {
* Creates new JdbcAdapter with a set of default parameters.
*/
public JdbcAdapter(@Inject RuntimeProperties runtimeProperties,
- @Inject(Constants.SERVER_DEFAULT_TYPES_LIST) List<ExtendedType> defaultExtendedTypes,
- @Inject(Constants.SERVER_USER_TYPES_LIST) List<ExtendedType> userExtendedTypes,
- @Inject(Constants.SERVER_TYPE_FACTORIES_LIST) List<ExtendedTypeFactory> extendedTypeFactories,
- @Inject(Constants.SERVER_RESOURCE_LOCATOR) ResourceLocator resourceLocator) {
+ @Inject(Constants.SERVER_DEFAULT_TYPES_LIST) List<ExtendedType> defaultExtendedTypes,
+ @Inject(Constants.SERVER_USER_TYPES_LIST) List<ExtendedType> userExtendedTypes,
+ @Inject(Constants.SERVER_TYPE_FACTORIES_LIST) List<ExtendedTypeFactory> extendedTypeFactories,
+ @Inject(Constants.SERVER_RESOURCE_LOCATOR) ResourceLocator resourceLocator) {
// init defaults
this.setSupportsBatchUpdates(false);
@@ -113,7 +117,7 @@ public class JdbcAdapter implements DbAdapter {
/**
* Returns default separator - a semicolon.
- *
+ *
* @since 1.0.4
*/
@Override
@@ -137,7 +141,7 @@ public class JdbcAdapter implements DbAdapter {
* well. Resource lookup is recursive, so that if DbAdapter is a subclass of
* another adapter, parent adapter package is searched as a failover.
* </p>
- *
+ *
* @since 3.0
*/
protected URL findResource(String name) {
@@ -172,7 +176,7 @@ public class JdbcAdapter implements DbAdapter {
* @since 3.1
*/
protected void initExtendedTypes(List<ExtendedType> defaultExtendedTypes, List<ExtendedType> userExtendedTypes,
- List<ExtendedTypeFactory> extendedTypeFactories) {
+ List<ExtendedTypeFactory> extendedTypeFactories) {
for (ExtendedType type : defaultExtendedTypes) {
extendedTypes.registerType(type);
}
@@ -201,7 +205,7 @@ public class JdbcAdapter implements DbAdapter {
* Creates and returns an {@link EJBQLTranslatorFactory} used to generate
* visitors for EJBQL to SQL translations. This method should be overriden
* by subclasses that need to customize EJBQL generation.
- *
+ *
* @since 3.0
*/
protected EJBQLTranslatorFactory createEJBQLTranslatorFactory() {
@@ -220,7 +224,7 @@ public class JdbcAdapter implements DbAdapter {
/**
* Sets new primary key generator.
- *
+ *
* @since 1.1
*/
public void setPkGenerator(PkGenerator pkGenerator) {
@@ -229,7 +233,7 @@ public class JdbcAdapter implements DbAdapter {
/**
* Returns true.
- *
+ *
* @since 1.1
*/
@Override
@@ -257,7 +261,7 @@ public class JdbcAdapter implements DbAdapter {
/**
* Returns true if supplied type can have a length attribute as a part of
* column definition
- *
+ *
* @since 4.0
*/
public boolean typeSupportsLength(int type) {
@@ -267,11 +271,11 @@ public class JdbcAdapter implements DbAdapter {
/**
* Returns true if supplied type can have a length attribute as a part of
* column definition
- *
+ * <p/>
* TODO: this is a static method only to support the deprecated method
* {@link TypesMapping#supportsLength(int)} When the deprecated method is
* removed this body should be moved in to {@link #typeSupportsLength(int)}
- *
+ *
* @deprecated
*/
static boolean supportsLength(int type) {
@@ -360,7 +364,7 @@ public class JdbcAdapter implements DbAdapter {
/**
* Appends SQL for column creation to CREATE TABLE buffer.
- *
+ *
* @since 1.2
*/
@Override
@@ -405,7 +409,7 @@ public class JdbcAdapter implements DbAdapter {
/**
* Returns a DDL string to create a unique constraint over a set of columns.
- *
+ *
* @since 1.1
*/
@Override
@@ -525,7 +529,7 @@ public class JdbcAdapter implements DbAdapter {
/**
* Uses JdbcActionBuilder to create the right action.
- *
+ *
* @since 1.2
*/
@Override
@@ -539,14 +543,47 @@ public class JdbcAdapter implements DbAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int scale)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
- if (object == null) {
- statement.setNull(pos, sqlType);
+ if (binding.getValue() == null) {
+ statement.setNull(binding.getStatementPosition(), binding.getType());
} else {
- ExtendedType typeProcessor = getExtendedTypes().getRegisteredType(object.getClass());
- typeProcessor.setJdbcObject(statement, object, pos, sqlType, scale);
+ ExtendedType typeProcessor = getExtendedTypes().getRegisteredType(binding.getValue().getClass());
+ typeProcessor.setJdbcObject(statement
+ , binding.getValue()
+ , binding.getStatementPosition()
+ , binding.getType()
+ , binding.getAttribute().getScale());
+ }
+ }
+
+ @Override
+ public void bindParameter(PreparedStatement statement, SQLParameterBinding binding, int position) throws
+ SQLException, Exception {
+ if (binding.getValue() == null) {
+ statement.setNull(position, binding.getJdbcType());
+ } else {
+ ExtendedType typeProcessor = getExtendedTypes().getRegisteredType(binding.getValue().getClass());
+ typeProcessor.setJdbcObject(statement
+ , binding.getValue()
+ , position
+ , binding.getJdbcType()
+ , binding.getScale());
+ }
+ }
+
+ @Override
+ public void bindParameter(CallableStatement statement, ProcedureParameterBinding binding) throws SQLException, Exception {
+ if (binding.getValue() == null) {
+ statement.setNull(binding.getStatementPosition(), binding.getParam().getType());
+ } else {
+ ExtendedType typeProcessor = getExtendedTypes().getRegisteredType(binding.getValue().getClass());
+ typeProcessor.setJdbcObject(statement
+ , binding.getValue()
+ , binding.getStatementPosition()
+ , binding.getParam().getType()
+ , binding.getParam().getPrecision());
}
}
@@ -579,7 +616,7 @@ public class JdbcAdapter implements DbAdapter {
* normally initialized in constructor by calling
* {@link #createEJBQLTranslatorFactory()}, and can be changed later by
* calling {@link #setEjbqlTranslatorFactory(EJBQLTranslatorFactory)}.
- *
+ *
* @since 3.0
*/
public EJBQLTranslatorFactory getEjbqlTranslatorFactory() {
@@ -591,7 +628,7 @@ public class JdbcAdapter implements DbAdapter {
* normally initialized in constructor by calling
* {@link #createEJBQLTranslatorFactory()}, so users would only override it
* if they need to customize EJBQL translation.
- *
+ *
* @since 3.0
*/
public void setEjbqlTranslatorFactory(EJBQLTranslatorFactory ejbqlTranslatorFactory) {
@@ -606,8 +643,8 @@ public class JdbcAdapter implements DbAdapter {
}
/**
- * @since 4.0
* @return
+ * @since 4.0
*/
protected QuotingStrategy createQuotingStrategy() {
return new DefaultQuotingStrategy("\"", "\"");
@@ -632,7 +669,7 @@ public class JdbcAdapter implements DbAdapter {
/**
* @since 3.1
* @deprecated since 4.0 BatchQueryBuilderfactory is attached to the
- * DataNode.
+ * DataNode.
*/
@Deprecated
public BatchTranslatorFactory getBatchQueryBuilderFactory() {
@@ -642,7 +679,7 @@ public class JdbcAdapter implements DbAdapter {
/**
* @since 3.1
* @deprecated since 4.0 BatchQueryBuilderfactory is attached to the
- * DataNode.
+ * DataNode.
*/
@Deprecated
public void setBatchQueryBuilderFactory(BatchTranslatorFactory batchQueryBuilderFactory) {
@@ -651,7 +688,7 @@ public class JdbcAdapter implements DbAdapter {
/**
* Simply returns this, as JdbcAdapter is not a wrapper.
- *
+ *
* @since 4.0
*/
@Override
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
index 5064fd1..35efb99 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.dba.db2;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
import org.apache.cayenne.access.types.BooleanType;
@@ -233,17 +234,13 @@ public class DB2Adapter extends JdbcAdapter {
@Override
public void bindParameter(
- PreparedStatement statement,
- Object object,
- int pos,
- int sqlType,
- int precision) throws SQLException, Exception {
-
- if (object == null && (sqlType == 0 || sqlType == Types.BOOLEAN)) {
- statement.setNull(pos, Types.VARCHAR);
+ PreparedStatement statement, ParameterBinding binding) throws SQLException, Exception {
+
+ if (binding.getValue() == null && (binding.getAttribute().getType() == 0 || binding.getAttribute().getType() == Types.BOOLEAN)) {
+ statement.setNull(binding.getStatementPosition(), Types.VARCHAR);
}
else {
- super.bindParameter(statement, object, pos, sqlType, precision);
+ super.bindParameter(statement, binding);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
index dca2dc6..c9c5a0d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
@@ -20,6 +20,7 @@
package org.apache.cayenne.dba.derby;
import org.apache.cayenne.CayenneRuntimeException;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.JdbcEJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
@@ -191,15 +192,13 @@ public class DerbyAdapter extends JdbcAdapter {
@Override
public void bindParameter(
PreparedStatement statement,
- Object object,
- int pos,
- int sqlType,
- int precision) throws SQLException, Exception {
+ ParameterBinding binding) throws SQLException, Exception {
- if (object == null && sqlType == 0) {
- statement.setNull(pos, Types.VARCHAR);
+ if (binding.getValue() == null && binding.getAttribute().getType() == 0) {
+ statement.setNull(binding.getStatementPosition(), Types.VARCHAR);
} else {
- super.bindParameter(statement, object, pos, convertNTypes(sqlType), precision);
+ binding.setType(convertNTypes(binding.getType()));
+ super.bindParameter(statement, binding);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
index 886cf20..5da2682 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
@@ -1,26 +1,27 @@
/*****************************************************************
- * 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
- *
- * http://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.
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.dba.ingres;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
import org.apache.cayenne.access.translator.select.SelectTranslator;
@@ -51,7 +52,7 @@ import java.util.List;
* DbAdapter implementation for <a
* href="http://opensource.ca.com/projects/ingres/">Ingres</a>. Sample
* connection settings to use with Ingres are shown below:
- *
+ *
* <pre>
* ingres.jdbc.username = test
* ingres.jdbc.password = secret
@@ -64,10 +65,10 @@ public class IngresAdapter extends JdbcAdapter {
public static final String TRIM_FUNCTION = "TRIM";
public IngresAdapter(@Inject RuntimeProperties runtimeProperties,
- @Inject(Constants.SERVER_DEFAULT_TYPES_LIST) List<ExtendedType> defaultExtendedTypes,
- @Inject(Constants.SERVER_USER_TYPES_LIST) List<ExtendedType> userExtendedTypes,
- @Inject(Constants.SERVER_TYPE_FACTORIES_LIST) List<ExtendedTypeFactory> extendedTypeFactories,
- @Inject(Constants.SERVER_RESOURCE_LOCATOR) ResourceLocator resourceLocator) {
+ @Inject(Constants.SERVER_DEFAULT_TYPES_LIST) List<ExtendedType> defaultExtendedTypes,
+ @Inject(Constants.SERVER_USER_TYPES_LIST) List<ExtendedType> userExtendedTypes,
+ @Inject(Constants.SERVER_TYPE_FACTORIES_LIST) List<ExtendedTypeFactory> extendedTypeFactories,
+ @Inject(Constants.SERVER_RESOURCE_LOCATOR) ResourceLocator resourceLocator) {
super(runtimeProperties, defaultExtendedTypes, userExtendedTypes, extendedTypeFactories, resourceLocator);
setSupportsUniqueConstraints(true);
setSupportsGeneratedKeys(true);
@@ -109,13 +110,13 @@ public class IngresAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int scale)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
- if (object == null && (sqlType == Types.BOOLEAN || sqlType == Types.BIT)) {
- statement.setNull(pos, Types.VARCHAR);
+ if (binding.getValue() == null && (binding.getAttribute().getType() == Types.BOOLEAN || binding.getAttribute().getType() == Types.BIT)) {
+ statement.setNull(binding.getStatementPosition(), Types.VARCHAR);
} else {
- super.bindParameter(statement, object, pos, sqlType, scale);
+ super.bindParameter(statement, binding);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
index 188f859..961f653 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
@@ -19,36 +19,18 @@
package org.apache.cayenne.dba.mysql;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.JdbcEJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
import org.apache.cayenne.access.translator.select.SelectTranslator;
-import org.apache.cayenne.access.types.ByteArrayType;
-import org.apache.cayenne.access.types.CharType;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.access.types.ExtendedTypeFactory;
-import org.apache.cayenne.access.types.ExtendedTypeMap;
+import org.apache.cayenne.access.types.*;
import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.RuntimeProperties;
-import org.apache.cayenne.dba.DefaultQuotingStrategy;
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.dba.PkGenerator;
-import org.apache.cayenne.dba.QuotingStrategy;
-import org.apache.cayenne.dba.TypesMapping;
+import org.apache.cayenne.dba.*;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -60,6 +42,11 @@ import org.apache.cayenne.query.SQLAction;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.resource.ResourceLocator;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.*;
+
/**
* DbAdapter implementation for <a href="http://www.mysql.com">MySQL RDBMS</a>.
* <h3>
@@ -215,9 +202,10 @@ public class MySQLAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int scale)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
- super.bindParameter(statement, object, pos, mapNTypes(sqlType), scale);
+ binding.setType(mapNTypes(binding.getType()));
+ super.bindParameter(statement, binding);
}
private int mapNTypes(int sqlType) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
index 8c6a7fb..3b0c829 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
@@ -19,19 +19,6 @@
package org.apache.cayenne.dba.oracle;
-import java.io.OutputStream;
-import java.io.Writer;
-import java.lang.reflect.Method;
-import java.sql.Blob;
-import java.sql.Clob;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Types;
-import java.util.Collections;
-import java.util.List;
-
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.OperationObserver;
@@ -39,13 +26,16 @@ import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.log.JdbcEventLogger;
import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.query.BatchQuery;
-import org.apache.cayenne.query.BatchQueryRow;
-import org.apache.cayenne.query.InsertBatchQuery;
-import org.apache.cayenne.query.SQLAction;
-import org.apache.cayenne.query.UpdateBatchQuery;
+import org.apache.cayenne.query.*;
import org.apache.cayenne.util.Util;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.lang.reflect.Method;
+import java.sql.*;
+import java.util.Collections;
+import java.util.List;
+
/**
* @since 3.0
*/
@@ -59,8 +49,9 @@ class Oracle8LOBBatchAction implements SQLAction {
throws SQLException, Exception {
for (ParameterBinding b : bindings) {
- adapter.bindParameter(statement, b.getValue(), b.getStatementPosition(), b.getAttribute().getType(), b
- .getAttribute().getScale());
+ ParameterBinding binding = new ParameterBinding(b.getAttribute(), adapter.getExtendedTypes()
+ .getRegisteredType(b.getValue().getClass()));
+ adapter.bindParameter(statement, binding);
}
}
@@ -150,7 +141,11 @@ class Oracle8LOBBatchAction implements SQLAction {
Object value = qualifierValues.get(i);
DbAttribute attribute = qualifierAttributes.get(i);
- adapter.bindParameter(selectStatement, value, i + 1, attribute.getType(), attribute.getScale());
+ ParameterBinding binding = new ParameterBinding(attribute, adapter.getExtendedTypes()
+ .getRegisteredType(value.getClass()));
+ binding.setStatementPosition(i + 1);
+ binding.setValue(value);
+ adapter.bindParameter(selectStatement,binding);
}
try (ResultSet result = selectStatement.executeQuery();) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
index b0c6afa..24f06b8 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.dba.oracle;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
@@ -230,17 +231,18 @@ public class OracleAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int scale)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
// Oracle doesn't support BOOLEAN even when binding NULL, so have to
// intercept
// NULL Boolean here, as super doesn't pass it through ExtendedType...
- if (object == null && sqlType == Types.BOOLEAN) {
+ if (binding.getValue() == null && binding.getAttribute().getType() == Types.BOOLEAN) {
ExtendedType typeProcessor = getExtendedTypes().getRegisteredType(Boolean.class);
- typeProcessor.setJdbcObject(statement, object, pos, sqlType, scale);
+ typeProcessor.setJdbcObject(statement, binding.getValue(), binding.getStatementPosition(), binding
+ .getAttribute().getType(),binding.getAttribute().getScale());
} else {
- super.bindParameter(statement, object, pos, sqlType, scale);
+ super.bindParameter(statement, binding);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
index ee45df1..e4c7eff 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.dba.postgres;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
import org.apache.cayenne.access.translator.select.SelectTranslator;
@@ -130,9 +131,10 @@ public class PostgresAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int scale)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
- super.bindParameter(statement, object, pos, mapNTypes(sqlType), scale);
+ binding.setType(mapNTypes(binding.getType()));
+ super.bindParameter(statement, binding);
}
private int mapNTypes(int sqlType) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java
index f82fc3f..29afb68 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java
@@ -19,6 +19,7 @@
package org.apache.cayenne.dba.sqlite;
import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.access.types.ExtendedTypeFactory;
import org.apache.cayenne.access.types.ExtendedTypeMap;
@@ -102,8 +103,8 @@ public class SQLiteAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int scale) throws SQLException, Exception {
- super.bindParameter(statement, object, pos, mapNTypes(sqlType), scale);
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding) throws SQLException, Exception {
+ super.bindParameter(statement, binding);
}
private int mapNTypes(int sqlType) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
index 45a6f65..b7592d4 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
@@ -19,6 +19,7 @@
package org.apache.cayenne.dba.sybase;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.types.ByteArrayType;
import org.apache.cayenne.access.types.ByteType;
@@ -109,22 +110,22 @@ public class SybaseAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Object object, int pos, int sqlType, int precision)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
// Sybase driver doesn't like CLOBs and BLOBs as parameters
- if (object == null) {
- if (sqlType == Types.CLOB) {
- sqlType = Types.VARCHAR;
- } else if (sqlType == Types.BLOB) {
- sqlType = Types.VARBINARY;
+ if (binding.getValue() == null) {
+ if (binding.getAttribute().getType() == Types.CLOB) {
+ binding.getAttribute().setType(Types.VARCHAR);
+ } else if (binding.getAttribute().getType() == Types.BLOB) {
+ binding.getAttribute().setType(Types.VARBINARY);
}
}
- if (object == null && sqlType == 0) {
- statement.setNull(pos, Types.VARCHAR);
+ if (binding.getValue() == null && binding.getAttribute().getType() == 0) {
+ statement.setNull(binding.getStatementPosition(), Types.VARCHAR);
} else {
- super.bindParameter(statement, object, pos, sqlType, precision);
+ super.bindParameter(statement, binding);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bfb4747d/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
index 4426e78..6fe3937 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
@@ -38,17 +38,14 @@ import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeThat;
+import static org.junit.Assert.*;
import static org.junit.Assume.assumeTrue;
/**
* Test Types mapping for selected columns
*/
@UseServerRuntime(CayenneProjects.RETURN_TYPES_PROJECT)
-public class ReturnTypesMappingIT extends ServerCase {
+public class ReturnTypesMappingIT extends ServerCase {
@Inject
private DataContext context;
[5/6] cayenne git commit: CAY-2050 Refactoring: ParameterBinding to
contain ExtendedType property
Posted by aa...@apache.org.
CAY-2050 Refactoring: ParameterBinding to contain ExtendedType property
* after some consideration, renaming Binding back to ParameterBinding
* minor import/formatting changes
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/5bff2d59
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/5bff2d59
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/5bff2d59
Branch: refs/heads/master
Commit: 5bff2d599ed4f1c1e5b9a55baeb5d40507d27b24
Parents: 2d3f999
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sat Mar 5 07:59:21 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sat Mar 5 09:14:31 2016 +0100
----------------------------------------------------------------------
.../apache/cayenne/access/jdbc/BatchAction.java | 12 ++-
.../cayenne/access/jdbc/SQLTemplateAction.java | 35 ++++---
.../cayenne/access/translator/Binding.java | 99 --------------------
.../access/translator/DbAttributeBinding.java | 4 +-
.../access/translator/ParameterBinding.java | 99 ++++++++++++++++++++
.../translator/ProcedureParameterBinding.java | 2 +-
.../org/apache/cayenne/dba/AutoAdapter.java | 4 +-
.../java/org/apache/cayenne/dba/DbAdapter.java | 4 +-
.../org/apache/cayenne/dba/JdbcAdapter.java | 4 +-
.../org/apache/cayenne/dba/db2/DB2Adapter.java | 4 +-
.../apache/cayenne/dba/derby/DerbyAdapter.java | 4 +-
.../cayenne/dba/ingres/IngresAdapter.java | 4 +-
.../apache/cayenne/dba/mysql/MySQLAdapter.java | 4 +-
.../cayenne/dba/oracle/OracleAdapter.java | 4 +-
.../cayenne/dba/postgres/PostgresAdapter.java | 4 +-
.../cayenne/dba/sybase/SybaseAdapter.java | 4 +-
16 files changed, 153 insertions(+), 138 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
index 7746823..a97bc78 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
@@ -19,6 +19,14 @@
package org.apache.cayenne.access.jdbc;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.ResultIterator;
import org.apache.cayenne.access.DataNode;
@@ -36,10 +44,6 @@ import org.apache.cayenne.query.BatchQuery;
import org.apache.cayenne.query.BatchQueryRow;
import org.apache.cayenne.query.InsertBatchQuery;
-import java.sql.*;
-import java.util.Collection;
-import java.util.Collections;
-
/**
* @since 1.2
*/
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
index 0f9ac47..645aa46 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
@@ -19,13 +19,26 @@
package org.apache.cayenne.access.jdbc;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.ResultIterator;
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.Binding;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.access.types.ExtendedTypeMap;
import org.apache.cayenne.dba.DbAdapter;
@@ -40,9 +53,6 @@ import org.apache.cayenne.query.SQLTemplate;
import org.apache.cayenne.util.Util;
import org.apache.commons.collections.IteratorUtils;
-import java.sql.*;
-import java.util.*;
-
/**
* Implements a strategy for execution of SQLTemplates.
*
@@ -141,8 +151,8 @@ public class SQLTemplateAction implements SQLAction {
// for now supporting deprecated batch parameters...
@SuppressWarnings("unchecked")
- Iterator<Map<String, ?>> it = (size > 0) ? query.parametersIterator() : IteratorUtils
- .singletonIterator(Collections.emptyMap());
+ Iterator<Map<String, ?>> it = (size > 0) ? query.parametersIterator()
+ : IteratorUtils.singletonIterator(Collections.emptyMap());
for (int i = 0; i < batchSize; i++) {
Map<String, ?> nextParameters = it.next();
@@ -335,18 +345,19 @@ public class SQLTemplateAction implements SQLAction {
/**
* Binds parameters to the PreparedStatement.
*/
- protected void bind(PreparedStatement preparedStatement, SQLParameterBinding[] bindings) throws SQLException,
- Exception {
+ protected void bind(PreparedStatement preparedStatement, SQLParameterBinding[] bindings)
+ throws SQLException, Exception {
// bind parameters
if (bindings.length > 0) {
int len = bindings.length;
for (int i = 0; i < len; i++) {
ExtendedType extendedType = getAdapter().getExtendedTypes().getDefaultType();
- if (bindings[i].getValue() != null) getAdapter().getExtendedTypes().getRegisteredType(bindings[i]
- .getValue().getClass());
- Binding binding = new Binding(extendedType);
+ if (bindings[i].getValue() != null) {
+ getAdapter().getExtendedTypes().getRegisteredType(bindings[i].getValue().getClass());
+ }
+ ParameterBinding binding = new ParameterBinding(extendedType);
binding.setType(bindings[i].getJdbcType());
- binding.setStatementPosition(i+1);
+ binding.setStatementPosition(i + 1);
binding.setValue(bindings[i].getValue());
dataNode.getAdapter().bindParameter(preparedStatement, binding);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/access/translator/Binding.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/Binding.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/Binding.java
deleted file mode 100644
index 369f5cc..0000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/Binding.java
+++ /dev/null
@@ -1,99 +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
- *
- * http://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.translator;
-
-import org.apache.cayenne.access.types.ExtendedType;
-
-/**
- * Describes a PreparedStatement parameter generic binding.
- *
- * @since 4.0
- */
-public class Binding {
-
- static final int EXCLUDED_POSITION = -1;
-
- private Object value;
- private int statementPosition;
- private ExtendedType extendedType;
- private Integer type;
- private int scale;
-
- public Binding(ExtendedType extendedType) {
- this.statementPosition = EXCLUDED_POSITION;
- this.extendedType = extendedType;
- }
-
- public Object getValue() {
- return value;
- }
-
- public void setValue(Object value) {
- this.value = value;
- }
-
- public int getStatementPosition() {
- return statementPosition;
- }
-
- public void setStatementPosition(int statementPosition) {
- this.statementPosition = statementPosition;
- }
-
- public boolean isExcluded() {
- return statementPosition == EXCLUDED_POSITION;
- }
-
- public ExtendedType getExtendedType() {
- return extendedType;
- }
-
- /**
- * Marks the binding object as excluded for the current iteration.
- */
- public void exclude() {
- this.statementPosition = EXCLUDED_POSITION;
- this.value = null;
- }
-
- /**
- * Sets the value of the binding and initializes statement position var,
- * thus "including" this binding in the current iteration.
- */
- public void include(int statementPosition, Object value) {
- this.statementPosition = statementPosition;
- this.value = value;
- }
-
- public Integer getType() {
- return type;
- }
-
- public void setType(Integer type) {
- this.type = type;
- }
-
- public int getScale() {
- return scale;
- }
-
- public void setScale(int scale) {
- this.scale = scale;
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/access/translator/DbAttributeBinding.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/DbAttributeBinding.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/DbAttributeBinding.java
index 05c40ab..523c473 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/DbAttributeBinding.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/DbAttributeBinding.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.map.DbAttribute;
*
* @since 4.0
*/
-public class DbAttributeBinding extends Binding{
+public class DbAttributeBinding extends ParameterBinding {
private final DbAttribute attribute;
@@ -45,7 +45,7 @@ public class DbAttributeBinding extends Binding{
}
@Override
- public int getScale() {
+ public int getScale() {
return getAttribute().getScale();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
new file mode 100644
index 0000000..8ef6b28
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
@@ -0,0 +1,99 @@
+/*****************************************************************
+ * 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
+ *
+ * http://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.translator;
+
+import org.apache.cayenne.access.types.ExtendedType;
+
+/**
+ * Describes a PreparedStatement parameter generic binding.
+ *
+ * @since 4.0
+ */
+public class ParameterBinding {
+
+ static final int EXCLUDED_POSITION = -1;
+
+ private Object value;
+ private int statementPosition;
+ private ExtendedType extendedType;
+ private Integer type;
+ private int scale;
+
+ public ParameterBinding(ExtendedType extendedType) {
+ this.statementPosition = EXCLUDED_POSITION;
+ this.extendedType = extendedType;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+ public int getStatementPosition() {
+ return statementPosition;
+ }
+
+ public void setStatementPosition(int statementPosition) {
+ this.statementPosition = statementPosition;
+ }
+
+ public boolean isExcluded() {
+ return statementPosition == EXCLUDED_POSITION;
+ }
+
+ public ExtendedType getExtendedType() {
+ return extendedType;
+ }
+
+ /**
+ * Marks the binding object as excluded for the current iteration.
+ */
+ public void exclude() {
+ this.statementPosition = EXCLUDED_POSITION;
+ this.value = null;
+ }
+
+ /**
+ * Sets the value of the binding and initializes statement position var,
+ * thus "including" this binding in the current iteration.
+ */
+ public void include(int statementPosition, Object value) {
+ this.statementPosition = statementPosition;
+ this.value = value;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public int getScale() {
+ return scale;
+ }
+
+ public void setScale(int scale) {
+ this.scale = scale;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java
index 1294b86..df15c96 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.map.ProcedureParameter;
*
* @since 4.0
*/
-public class ProcedureParameterBinding extends Binding {
+public class ProcedureParameterBinding extends ParameterBinding {
private final ProcedureParameter parameter;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
index f3fb80c..a8876f6 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.Binding;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
@@ -200,7 +200,7 @@ public class AutoAdapter implements DbAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Binding parameterBinding)
+ public void bindParameter(PreparedStatement statement, ParameterBinding parameterBinding)
throws SQLException, Exception {
getAdapter().bindParameter(statement, parameterBinding);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
index 4fbaa3d..d72bc31 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
@@ -19,7 +19,7 @@
package org.apache.cayenne.dba;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.Binding;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
@@ -168,7 +168,7 @@ public interface DbAdapter {
/**
* Binds an object value to PreparedStatement's parameter.
*/
- void bindParameter(PreparedStatement statement, Binding parameterBinding) throws SQLException, Exception;
+ void bindParameter(PreparedStatement statement, ParameterBinding parameterBinding) throws SQLException, Exception;
/**
* Returns the name of the table type (as returned by
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
index 4cf88eb..57d3430 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.Binding;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.JdbcEJBQLTranslatorFactory;
@@ -536,7 +536,7 @@ public class JdbcAdapter implements DbAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Binding binding)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
if (binding.getValue() == null) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
index d917a46..f71f655 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.db2;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.Binding;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
import org.apache.cayenne.access.types.*;
@@ -229,7 +229,7 @@ public class DB2Adapter extends JdbcAdapter {
@Override
public void bindParameter(
- PreparedStatement statement, Binding binding) throws SQLException, Exception {
+ PreparedStatement statement, ParameterBinding binding) throws SQLException, Exception {
if (binding.getValue() == null && (binding.getType() == 0 || binding.getType() == Types.BOOLEAN)) {
statement.setNull(binding.getStatementPosition(), Types.VARCHAR);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
index 05b7d3b..8a3b462 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
@@ -20,7 +20,7 @@
package org.apache.cayenne.dba.derby;
import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.access.translator.Binding;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.JdbcEJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
@@ -187,7 +187,7 @@ public class DerbyAdapter extends JdbcAdapter {
@Override
public void bindParameter(
PreparedStatement statement,
- Binding binding) throws SQLException, Exception {
+ ParameterBinding binding) throws SQLException, Exception {
if (binding.getValue() == null && binding.getType() == 0) {
statement.setNull(binding.getStatementPosition(), Types.VARCHAR);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
index 7605bcf..d9aee83 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.ingres;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.Binding;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
import org.apache.cayenne.access.translator.select.SelectTranslator;
@@ -110,7 +110,7 @@ public class IngresAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Binding binding)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
if (binding.getValue() == null && (binding.getType() == Types.BOOLEAN || binding.getType() == Types.BIT)) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
index 5bbb17b..961f653 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.mysql;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.Binding;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.JdbcEJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
@@ -202,7 +202,7 @@ public class MySQLAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Binding binding)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
binding.setType(mapNTypes(binding.getType()));
super.bindParameter(statement, binding);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
index d93d91d..adfd6dd 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.oracle;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.Binding;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
@@ -218,7 +218,7 @@ public class OracleAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Binding binding)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
// Oracle doesn't support BOOLEAN even when binding NULL, so have to
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
index 5e61b89..e4c7eff 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.postgres;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.Binding;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
import org.apache.cayenne.access.translator.select.SelectTranslator;
@@ -131,7 +131,7 @@ public class PostgresAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Binding binding)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
binding.setType(mapNTypes(binding.getType()));
super.bindParameter(statement, binding);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bff2d59/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
index e31fd50..2b0ca86 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
@@ -19,7 +19,7 @@
package org.apache.cayenne.dba.sybase;
-import org.apache.cayenne.access.translator.Binding;
+import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.types.*;
import org.apache.cayenne.configuration.Constants;
@@ -104,7 +104,7 @@ public class SybaseAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, Binding binding)
+ public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
// Sybase driver doesn't like CLOBs and BLOBs as parameters
[6/6] cayenne git commit: CAY-2050 fix NPE on bitwise operations
Posted by aa...@apache.org.
CAY-2050 fix NPE on bitwise operations
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/360d6426
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/360d6426
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/360d6426
Branch: refs/heads/master
Commit: 360d6426c2627c6c8944b0f85990a68de4b548f5
Parents: bfb4747
Author: Alexei Grigoriev <ag...@objectstyle.com>
Authored: Wed Feb 10 13:38:24 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sat Mar 5 09:14:31 2016 +0100
----------------------------------------------------------------------
.../apache/cayenne/access/translator/select/QueryAssembler.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/360d6426/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssembler.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssembler.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssembler.java
index 59ca220..40554bd 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssembler.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssembler.java
@@ -150,7 +150,8 @@ public abstract class QueryAssembler {
* DbAttribute being processed.
*/
public void addToParamList(DbAttribute dbAttr, Object anObject) {
- String typeName = TypesMapping.getJavaBySqlType(dbAttr.getType());
+ String typeName = TypesMapping.SQL_NULL;
+ if (dbAttr != null) typeName = TypesMapping.getJavaBySqlType(dbAttr.getType());
ExtendedType extendedType = adapter.getExtendedTypes().getRegisteredType(typeName);
ParameterBinding binding = new ParameterBinding(dbAttr, extendedType);
[3/6] cayenne git commit: CAY-2050 parameter binding with better
encapsulation
Posted by aa...@apache.org.
CAY-2050 parameter binding with better encapsulation
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/2d3f999b
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/2d3f999b
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/2d3f999b
Branch: refs/heads/master
Commit: 2d3f999b0360936d25a9f08d7eea7e2dd07dbe04
Parents: 360d642
Author: Alexei Grigoriev <ag...@objectstyle.com>
Authored: Tue Feb 16 14:15:23 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sat Mar 5 09:14:31 2016 +0100
----------------------------------------------------------------------
.../CryptoBatchTranslatorFactoryDecorator.java | 8 +-
.../crypto/transformer/BindingsTransformer.java | 4 +-
.../transformer/DefaultBindingsTransformer.java | 6 +-
.../transformer/DefaultTransformerFactory.java | 14 +-
.../crypto/transformer/TransformerFactory.java | 4 +-
.../apache/cayenne/access/jdbc/BatchAction.java | 10 +-
.../cayenne/access/jdbc/SQLTemplateAction.java | 11 +-
.../cayenne/access/jdbc/SelectAction.java | 8 +-
.../cayenne/access/translator/Binding.java | 99 ++++
.../access/translator/DbAttributeBinding.java | 51 +++
.../access/translator/ParameterBinding.java | 97 ----
.../translator/ProcedureParameterBinding.java | 77 ++--
.../translator/batch/BatchTranslator.java | 6 +-
.../batch/DefaultBatchTranslator.java | 12 +-
.../translator/batch/DeleteBatchTranslator.java | 12 +-
.../translator/batch/InsertBatchTranslator.java | 12 +-
.../batch/SoftDeleteBatchTranslator.java | 14 +-
.../translator/batch/UpdateBatchTranslator.java | 12 +-
.../procedure/ProcedureTranslator.java | 453 +++++++++----------
.../translator/select/QueryAssembler.java | 12 +-
.../translator/select/SelectTranslator.java | 4 +-
.../org/apache/cayenne/dba/AutoAdapter.java | 17 +-
.../java/org/apache/cayenne/dba/DbAdapter.java | 76 ++--
.../org/apache/cayenne/dba/JdbcAdapter.java | 42 +-
.../org/apache/cayenne/dba/db2/DB2Adapter.java | 13 +-
.../apache/cayenne/dba/derby/DerbyAdapter.java | 13 +-
.../cayenne/dba/ingres/IngresAdapter.java | 6 +-
.../apache/cayenne/dba/mysql/MySQLAdapter.java | 4 +-
.../dba/oracle/Oracle8LOBBatchAction.java | 12 +-
.../dba/oracle/Oracle8LOBBatchTranslator.java | 12 +-
.../cayenne/dba/oracle/OracleAdapter.java | 27 +-
.../cayenne/dba/postgres/PostgresAdapter.java | 4 +-
.../cayenne/dba/sqlite/SQLiteAdapter.java | 8 -
.../cayenne/dba/sybase/SybaseAdapter.java | 22 +-
.../cayenne/log/CommonsJdbcEventLogger.java | 12 +-
.../org/apache/cayenne/log/JdbcEventLogger.java | 12 +-
.../apache/cayenne/log/NoopJdbcEventLogger.java | 6 +-
.../batch/DefaultBatchTranslatorIT.java | 26 +-
38 files changed, 591 insertions(+), 647 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/batch/CryptoBatchTranslatorFactoryDecorator.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/batch/CryptoBatchTranslatorFactoryDecorator.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/batch/CryptoBatchTranslatorFactoryDecorator.java
index e86e564..4b8a471 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/batch/CryptoBatchTranslatorFactoryDecorator.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/batch/CryptoBatchTranslatorFactoryDecorator.java
@@ -18,7 +18,7 @@
****************************************************************/
package org.apache.cayenne.crypto.batch;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.access.translator.batch.BatchTranslator;
import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory;
import org.apache.cayenne.crypto.transformer.BindingsTransformer;
@@ -65,16 +65,16 @@ public class CryptoBatchTranslatorFactoryDecorator implements BatchTranslatorFac
}
@Override
- public ParameterBinding[] getBindings() {
+ public DbAttributeBinding[] getBindings() {
return delegateTranslator.getBindings();
}
@Override
- public ParameterBinding[] updateBindings(BatchQueryRow row) {
+ public DbAttributeBinding[] updateBindings(BatchQueryRow row) {
ensureEncryptorCompiled();
- ParameterBinding[] bindings = delegateTranslator.updateBindings(row);
+ DbAttributeBinding[] bindings = delegateTranslator.updateBindings(row);
if (encryptor != null) {
encryptor.transform(bindings);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/BindingsTransformer.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/BindingsTransformer.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/BindingsTransformer.java
index c6f9577..1ffded8 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/BindingsTransformer.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/BindingsTransformer.java
@@ -18,12 +18,12 @@
****************************************************************/
package org.apache.cayenne.crypto.transformer;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
/**
* @since 4.0
*/
public interface BindingsTransformer {
- void transform(ParameterBinding[] bindings);
+ void transform(DbAttributeBinding[] bindings);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java
index db31eea..e8aeb4b 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java
@@ -18,7 +18,7 @@
****************************************************************/
package org.apache.cayenne.crypto.transformer;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.crypto.transformer.bytes.BytesEncryptor;
import org.apache.cayenne.crypto.transformer.value.ValueEncryptor;
@@ -38,12 +38,12 @@ public class DefaultBindingsTransformer implements BindingsTransformer {
}
@Override
- public void transform(ParameterBinding[] bindings) {
+ public void transform(DbAttributeBinding[] bindings) {
int len = positions.length;
for (int i = 0; i < len; i++) {
- ParameterBinding b = bindings[positions[i]];
+ DbAttributeBinding b = bindings[positions[i]];
Object transformed = transformers[i].encrypt(encryptor, b.getValue());
b.setValue(transformed);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultTransformerFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultTransformerFactory.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultTransformerFactory.java
index 178a2f8..09a56ef 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultTransformerFactory.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultTransformerFactory.java
@@ -18,12 +18,8 @@
****************************************************************/
package org.apache.cayenne.crypto.transformer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
import org.apache.cayenne.access.jdbc.ColumnDescriptor;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.crypto.map.ColumnMapper;
import org.apache.cayenne.crypto.transformer.bytes.BytesTransformerFactory;
import org.apache.cayenne.crypto.transformer.value.ValueDecryptor;
@@ -32,6 +28,10 @@ import org.apache.cayenne.crypto.transformer.value.ValueTransformerFactory;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.map.DbAttribute;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
/**
* @since 4.0
*/
@@ -90,7 +90,7 @@ public class DefaultTransformerFactory implements TransformerFactory {
}
@Override
- public BindingsTransformer encryptor(ParameterBinding[] bindings) {
+ public BindingsTransformer encryptor(DbAttributeBinding[] bindings) {
int len = bindings.length;
List<Integer> cryptoColumns = null;
@@ -115,7 +115,7 @@ public class DefaultTransformerFactory implements TransformerFactory {
for (int i = 0; i < dlen; i++) {
int pos = cryptoColumns.get(i);
- ParameterBinding b = bindings[pos];
+ DbAttributeBinding b = bindings[pos];
positions[i] = pos;
transformers[i] = transformerFactory.encryptor(b.getAttribute());
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/TransformerFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/TransformerFactory.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/TransformerFactory.java
index 9bc28a8..a8893d1 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/TransformerFactory.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/TransformerFactory.java
@@ -19,7 +19,7 @@
package org.apache.cayenne.crypto.transformer;
import org.apache.cayenne.access.jdbc.ColumnDescriptor;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
/**
* A factory that creates encryption transformers used for processing batch
@@ -29,7 +29,7 @@ import org.apache.cayenne.access.translator.ParameterBinding;
*/
public interface TransformerFactory {
- BindingsTransformer encryptor(ParameterBinding[] bindings);
+ BindingsTransformer encryptor(DbAttributeBinding[] bindings);
MapTransformer decryptor(ColumnDescriptor[] columns, Object sampleRow);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
index fa0065f..7746823 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.OperationObserver;
import org.apache.cayenne.access.OptimisticLockException;
import org.apache.cayenne.access.jdbc.reader.RowReader;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.access.translator.batch.BatchTranslator;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.TypesMapping;
@@ -49,10 +49,10 @@ public class BatchAction extends BaseSQLAction {
protected BatchQuery query;
protected RowDescriptor keyRowDescriptor;
- private static void bind(DbAdapter adapter, PreparedStatement statement, ParameterBinding[] bindings)
+ private static void bind(DbAdapter adapter, PreparedStatement statement, DbAttributeBinding[] bindings)
throws SQLException, Exception {
- for (ParameterBinding b : bindings) {
+ for (DbAttributeBinding b : bindings) {
if (!b.isExcluded()) {
adapter.bindParameter(statement, b);
}
@@ -109,7 +109,7 @@ public class BatchAction extends BaseSQLAction {
try (PreparedStatement statement = con.prepareStatement(sql);) {
for (BatchQueryRow row : query.getRows()) {
- ParameterBinding[] bindings = translator.updateBindings(row);
+ DbAttributeBinding[] bindings = translator.updateBindings(row);
logger.logQueryParameters("batch bind", bindings);
bind(adapter, statement, bindings);
@@ -161,7 +161,7 @@ public class BatchAction extends BaseSQLAction {
Statement.RETURN_GENERATED_KEYS) : connection.prepareStatement(queryStr);) {
for (BatchQueryRow row : query.getRows()) {
- ParameterBinding[] bindings = translator.updateBindings(row);
+ DbAttributeBinding[] bindings = translator.updateBindings(row);
logger.logQueryParameters("bind", bindings);
bind(adapter, statement, bindings);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
index b309ba3..0f9ac47 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
@@ -25,6 +25,8 @@ import org.apache.cayenne.ResultIterator;
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.Binding;
+import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.access.types.ExtendedTypeMap;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.TypesMapping;
@@ -339,7 +341,14 @@ public class SQLTemplateAction implements SQLAction {
if (bindings.length > 0) {
int len = bindings.length;
for (int i = 0; i < len; i++) {
- dataNode.getAdapter().bindParameter(preparedStatement, bindings[i], i + 1);
+ ExtendedType extendedType = getAdapter().getExtendedTypes().getDefaultType();
+ if (bindings[i].getValue() != null) getAdapter().getExtendedTypes().getRegisteredType(bindings[i]
+ .getValue().getClass());
+ Binding binding = new Binding(extendedType);
+ binding.setType(bindings[i].getJdbcType());
+ binding.setStatementPosition(i+1);
+ binding.setValue(bindings[i].getValue());
+ dataNode.getAdapter().bindParameter(preparedStatement, binding);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
index 16a9893..fc84de6 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.ResultIterator;
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.DbAttributeBinding;
import org.apache.cayenne.access.translator.select.SelectTranslator;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.log.JdbcEventLogger;
@@ -46,10 +46,10 @@ import java.util.List;
*/
public class SelectAction extends BaseSQLAction {
- private static void bind(DbAdapter adapter, PreparedStatement statement, ParameterBinding[] bindings)
+ private static void bind(DbAdapter adapter, PreparedStatement statement, DbAttributeBinding[] bindings)
throws SQLException, Exception {
- for (ParameterBinding b : bindings) {
+ for (DbAttributeBinding b : bindings) {
if (b.isExcluded()) {
continue;
@@ -90,7 +90,7 @@ public class SelectAction extends BaseSQLAction {
SelectTranslator translator = dataNode.selectTranslator(query);
final String sql = translator.getSql();
- ParameterBinding[] bindings = translator.getBindings();
+ DbAttributeBinding[] bindings = translator.getBindings();
PreparedStatement statement = connection.prepareStatement(sql);
bind(dataNode.getAdapter(), statement, bindings);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/Binding.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/Binding.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/Binding.java
new file mode 100644
index 0000000..369f5cc
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/Binding.java
@@ -0,0 +1,99 @@
+/*****************************************************************
+ * 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
+ *
+ * http://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.translator;
+
+import org.apache.cayenne.access.types.ExtendedType;
+
+/**
+ * Describes a PreparedStatement parameter generic binding.
+ *
+ * @since 4.0
+ */
+public class Binding {
+
+ static final int EXCLUDED_POSITION = -1;
+
+ private Object value;
+ private int statementPosition;
+ private ExtendedType extendedType;
+ private Integer type;
+ private int scale;
+
+ public Binding(ExtendedType extendedType) {
+ this.statementPosition = EXCLUDED_POSITION;
+ this.extendedType = extendedType;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+ public int getStatementPosition() {
+ return statementPosition;
+ }
+
+ public void setStatementPosition(int statementPosition) {
+ this.statementPosition = statementPosition;
+ }
+
+ public boolean isExcluded() {
+ return statementPosition == EXCLUDED_POSITION;
+ }
+
+ public ExtendedType getExtendedType() {
+ return extendedType;
+ }
+
+ /**
+ * Marks the binding object as excluded for the current iteration.
+ */
+ public void exclude() {
+ this.statementPosition = EXCLUDED_POSITION;
+ this.value = null;
+ }
+
+ /**
+ * Sets the value of the binding and initializes statement position var,
+ * thus "including" this binding in the current iteration.
+ */
+ public void include(int statementPosition, Object value) {
+ this.statementPosition = statementPosition;
+ this.value = value;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public int getScale() {
+ return scale;
+ }
+
+ public void setScale(int scale) {
+ this.scale = scale;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/DbAttributeBinding.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/DbAttributeBinding.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/DbAttributeBinding.java
new file mode 100644
index 0000000..05c40ab
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/DbAttributeBinding.java
@@ -0,0 +1,51 @@
+/*****************************************************************
+ * 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
+ *
+ * http://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.translator;
+
+import org.apache.cayenne.access.types.ExtendedType;
+import org.apache.cayenne.map.DbAttribute;
+
+/**
+ * Describes a PreparedStatement parameter binding mapped to a DbAttribute.
+ *
+ * @since 4.0
+ */
+public class DbAttributeBinding extends Binding{
+
+ private final DbAttribute attribute;
+
+ public DbAttributeBinding(DbAttribute attribute, ExtendedType extendedType) {
+ super(extendedType);
+ this.attribute = attribute;
+ }
+
+ public DbAttribute getAttribute() {
+ return attribute;
+ }
+
+ @Override
+ public Integer getType() {
+ return super.getType() != null ? super.getType() : attribute.getType();
+ }
+
+ @Override
+ public int getScale() {
+ return getAttribute().getScale();
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
deleted file mode 100644
index fb5bbcb..0000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
+++ /dev/null
@@ -1,97 +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
- *
- * http://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.translator;
-
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.map.DbAttribute;
-
-/**
- * Describes a PreparedStatement parameter binding mapped to a DbAttribute.
- *
- * @since 4.0
- */
-public class ParameterBinding {
-
- static final int EXCLUDED_POSITION = -1;
-
- private DbAttribute attribute;
- private Object value;
- private int statementPosition;
- private ExtendedType extendedType;
- private Integer type;
-
- public ParameterBinding(DbAttribute attribute, ExtendedType extendedType) {
- this.attribute = attribute;
- this.statementPosition = EXCLUDED_POSITION;
- this.extendedType = extendedType;
- }
-
- public DbAttribute getAttribute() {
- return attribute;
- }
-
- public Object getValue() {
- return value;
- }
-
- public void setValue(Object value) {
- this.value = value;
- }
-
- public int getStatementPosition() {
- return statementPosition;
- }
-
- public void setStatementPosition(int statementPosition) {
- this.statementPosition = statementPosition;
- }
-
- public boolean isExcluded() {
- return statementPosition == EXCLUDED_POSITION;
- }
-
- public ExtendedType getExtendedType() {
- return extendedType;
- }
-
- /**
- * Marks the binding object as excluded for the current iteration.
- */
- public void exclude() {
- this.statementPosition = EXCLUDED_POSITION;
- this.value = null;
- }
-
- /**
- * Sets the value of the binding and initializes statement position var,
- * thus "including" this binding in the current iteration.
- */
- public void include(int statementPosition, Object value) {
- this.statementPosition = statementPosition;
- this.value = value;
- }
-
- public Integer getType() {
- return type != null ? type : attribute.getType();
- }
-
- public void setType(Integer type) {
- this.type = type;
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java
index e1a72ed..1294b86 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ProcedureParameterBinding.java
@@ -1,20 +1,20 @@
/*****************************************************************
- * 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
- *
- * http://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.
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.translator;
@@ -22,45 +22,30 @@ import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.map.ProcedureParameter;
/**
- * Describes a PreparedStatement parameter binding mapped to a CallableStatment.
- *
+ * Describes a PreparedStatement parameter binding mapped to a DbAttribute.
+ *
* @since 4.0
*/
-public class ProcedureParameterBinding {
- public ProcedureParameterBinding(ProcedureParameter param) {
- this.param = param;
- }
-
- private final ProcedureParameter param;
- private Object value;
- private int statementPosition;
- private ExtendedType extendedType;
+public class ProcedureParameterBinding extends Binding {
- public ProcedureParameter getParam() {
- return param;
- }
-
- public Object getValue() {
- return value;
- }
-
- public void setValue(Object value) {
- this.value = value;
- }
+ private final ProcedureParameter parameter;
- public int getStatementPosition() {
- return statementPosition;
+ public ProcedureParameterBinding(ProcedureParameter procedureParameter, ExtendedType extendedType) {
+ super(extendedType);
+ this.parameter = procedureParameter;
}
- public void setStatementPosition(int statementPosition) {
- this.statementPosition = statementPosition;
+ public ProcedureParameter getParameter() {
+ return parameter;
}
- public ExtendedType getExtendedType() {
- return extendedType;
+ @Override
+ public Integer getType() {
+ return parameter.getType();
}
- public void setExtendedType(ExtendedType extendedType) {
- this.extendedType = extendedType;
+ @Override
+ public int getScale() {
+ return parameter.getPrecision();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/BatchTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/BatchTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/BatchTranslator.java
index 04a4902..66fe58c 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/BatchTranslator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/BatchTranslator.java
@@ -19,7 +19,7 @@
package org.apache.cayenne.access.translator.batch;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.query.BatchQueryRow;
/**
@@ -37,7 +37,7 @@ public interface BatchTranslator {
/**
* Returns the widest possible array of bindings for this query.
*/
- ParameterBinding[] getBindings();
+ DbAttributeBinding[] getBindings();
/**
* Updates internal bindings to be used with a given row, returning updated
@@ -47,5 +47,5 @@ public interface BatchTranslator {
* parameter). Usually the returned array is actually the same object reused
* for every iteration, only with changed object state.
*/
- ParameterBinding[] updateBindings(BatchQueryRow row);
+ DbAttributeBinding[] updateBindings(BatchQueryRow row);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslator.java
index 732ec64..70c2a27 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslator.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.access.translator.batch;
import java.sql.Types;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
@@ -40,7 +40,7 @@ public abstract class DefaultBatchTranslator implements BatchTranslator {
protected boolean translated;
protected String sql;
- protected ParameterBinding[] bindings;
+ protected DbAttributeBinding[] bindings;
public DefaultBatchTranslator(BatchQuery query, DbAdapter adapter, String trimFunction) {
this.query = query;
@@ -67,22 +67,22 @@ public abstract class DefaultBatchTranslator implements BatchTranslator {
}
@Override
- public ParameterBinding[] getBindings() {
+ public DbAttributeBinding[] getBindings() {
ensureTranslated();
return bindings;
}
@Override
- public ParameterBinding[] updateBindings(BatchQueryRow row) {
+ public DbAttributeBinding[] updateBindings(BatchQueryRow row) {
ensureTranslated();
return doUpdateBindings(row);
}
protected abstract String createSql();
- protected abstract ParameterBinding[] createBindings();
+ protected abstract DbAttributeBinding[] createBindings();
- protected abstract ParameterBinding[] doUpdateBindings(BatchQueryRow row);
+ protected abstract DbAttributeBinding[] doUpdateBindings(BatchQueryRow row);
/**
* Appends the name of the column to the query buffer. Subclasses use this
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java
index 4f63e5f..9660b3f 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java
@@ -19,7 +19,7 @@
package org.apache.cayenne.access.translator.batch;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
@@ -74,26 +74,26 @@ public class DeleteBatchTranslator extends DefaultBatchTranslator {
}
@Override
- protected ParameterBinding[] createBindings() {
+ protected DbAttributeBinding[] createBindings() {
DeleteBatchQuery deleteBatch = (DeleteBatchQuery) query;
List<DbAttribute> attributes = deleteBatch.getDbAttributes();
int len = attributes.size();
- ParameterBinding[] bindings = new ParameterBinding[len];
+ DbAttributeBinding[] bindings = new DbAttributeBinding[len];
for (int i = 0; i < len; i++) {
DbAttribute a = attributes.get(i);
String typeName = TypesMapping.getJavaBySqlType(a.getType());
ExtendedType extendedType = adapter.getExtendedTypes().getRegisteredType(typeName);
- bindings[i] = new ParameterBinding(a, extendedType);
+ bindings[i] = new DbAttributeBinding(a, extendedType);
}
return bindings;
}
@Override
- protected ParameterBinding[] doUpdateBindings(BatchQueryRow row) {
+ protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
int len = bindings.length;
@@ -101,7 +101,7 @@ public class DeleteBatchTranslator extends DefaultBatchTranslator {
for (int i = 0, j = 1; i < len; i++) {
- ParameterBinding b = bindings[i];
+ DbAttributeBinding b = bindings[i];
// skip null attributes... they are translated as "IS NULL"
if (deleteBatch.isNull(b.getAttribute())) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java
index 920b29f..cf52929 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java
@@ -19,7 +19,7 @@
package org.apache.cayenne.access.translator.batch;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
@@ -84,18 +84,18 @@ public class InsertBatchTranslator extends DefaultBatchTranslator {
}
@Override
- protected ParameterBinding[] createBindings() {
+ protected DbAttributeBinding[] createBindings() {
List<DbAttribute> attributes = query.getDbAttributes();
int len = attributes.size();
- ParameterBinding[] bindings = new ParameterBinding[len];
+ DbAttributeBinding[] bindings = new DbAttributeBinding[len];
for (int i = 0; i < len; i++) {
DbAttribute a = attributes.get(i);
String typeName = TypesMapping.getJavaBySqlType(a.getType());
ExtendedType extendedType = adapter.getExtendedTypes().getRegisteredType(typeName);
- bindings[i] = new ParameterBinding(a, extendedType);
+ bindings[i] = new DbAttributeBinding(a, extendedType);
// include/exclude state depends on DbAttribute only and can be
// precompiled here
@@ -112,12 +112,12 @@ public class InsertBatchTranslator extends DefaultBatchTranslator {
}
@Override
- protected ParameterBinding[] doUpdateBindings(BatchQueryRow row) {
+ protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
int len = bindings.length;
for (int i = 0, j = 1; i < len; i++) {
- ParameterBinding b = bindings[i];
+ DbAttributeBinding b = bindings[i];
// exclusions are permanent
if (!b.isExcluded()) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java
index 2a3b2f3..514ca26 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java
@@ -18,7 +18,7 @@
****************************************************************/
package org.apache.cayenne.access.translator.batch;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
@@ -56,19 +56,19 @@ public class SoftDeleteBatchTranslator extends DeleteBatchTranslator {
}
@Override
- protected ParameterBinding[] createBindings() {
+ protected DbAttributeBinding[] createBindings() {
- ParameterBinding[] superBindings = super.createBindings();
+ DbAttributeBinding[] superBindings = super.createBindings();
int slen = superBindings.length;
- ParameterBinding[] bindings = new ParameterBinding[slen + 1];
+ DbAttributeBinding[] bindings = new DbAttributeBinding[slen + 1];
DbAttribute deleteAttribute = query.getDbEntity().getAttribute(deletedFieldName);
String typeName = TypesMapping.getJavaBySqlType(deleteAttribute.getType());
ExtendedType extendedType = adapter.getExtendedTypes().getRegisteredType(typeName);
- bindings[0] = new ParameterBinding(deleteAttribute, extendedType);
+ bindings[0] = new DbAttributeBinding(deleteAttribute, extendedType);
bindings[0].include(1, true);
System.arraycopy(superBindings, 0, bindings, 1, slen);
@@ -77,7 +77,7 @@ public class SoftDeleteBatchTranslator extends DeleteBatchTranslator {
}
@Override
- protected ParameterBinding[] doUpdateBindings(BatchQueryRow row) {
+ protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
int len = bindings.length;
DeleteBatchQuery deleteBatch = (DeleteBatchQuery) query;
@@ -85,7 +85,7 @@ public class SoftDeleteBatchTranslator extends DeleteBatchTranslator {
// skip position 0... Otherwise follow super algorithm
for (int i = 1, j = 2; i < len; i++) {
- ParameterBinding b = bindings[i];
+ DbAttributeBinding b = bindings[i];
// skip null attributes... they are translated as "IS NULL"
if (deleteBatch.isNull(b.getAttribute())) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java
index 0ad6037..cb34b99 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java
@@ -19,7 +19,7 @@
package org.apache.cayenne.access.translator.batch;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
@@ -81,7 +81,7 @@ public class UpdateBatchTranslator extends DefaultBatchTranslator {
}
@Override
- protected ParameterBinding[] createBindings() {
+ protected DbAttributeBinding[] createBindings() {
UpdateBatchQuery updateBatch = (UpdateBatchQuery) query;
List<DbAttribute> updatedDbAttributes = updateBatch.getUpdatedAttributes();
@@ -90,14 +90,14 @@ public class UpdateBatchTranslator extends DefaultBatchTranslator {
int ul = updatedDbAttributes.size();
int ql = qualifierAttributes.size();
- ParameterBinding[] bindings = new ParameterBinding[ul + ql];
+ DbAttributeBinding[] bindings = new DbAttributeBinding[ul + ql];
for (int i = 0; i < ul; i++) {
DbAttribute a = updatedDbAttributes.get(i);
String typeName = TypesMapping.getJavaBySqlType(a.getType());
ExtendedType extendedType = adapter.getExtendedTypes().getRegisteredType(typeName);
- bindings[i] = new ParameterBinding(a, extendedType);
+ bindings[i] = new DbAttributeBinding(a, extendedType);
}
for (int i = 0; i < ql; i++) {
@@ -105,14 +105,14 @@ public class UpdateBatchTranslator extends DefaultBatchTranslator {
String typeName = TypesMapping.getJavaBySqlType(a.getType());
ExtendedType extendedType = adapter.getExtendedTypes().getRegisteredType(typeName);
- bindings[ul + i] = new ParameterBinding(a, extendedType);
+ bindings[ul + i] = new DbAttributeBinding(a, extendedType);
}
return bindings;
}
@Override
- protected ParameterBinding[] doUpdateBindings(BatchQueryRow row) {
+ protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
UpdateBatchQuery updateBatch = (UpdateBatchQuery) query;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
index f6021f2..7a4d9fd 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
@@ -1,25 +1,26 @@
/*****************************************************************
- * 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
- *
- * http://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.
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.translator.procedure;
import org.apache.cayenne.access.translator.ProcedureParameterBinding;
+import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.log.JdbcEventLogger;
import org.apache.cayenne.log.NoopJdbcEventLogger;
@@ -40,215 +41,213 @@ import java.util.Map;
*/
public class ProcedureTranslator {
- /**
- * Helper class to make OUT and VOID parameters logger-friendly.
- */
- static class NotInParam {
-
- protected String type;
-
- public NotInParam(String type) {
- this.type = type;
- }
-
- @Override
- public String toString() {
- return type;
- }
- }
-
- private static NotInParam OUT_PARAM = new NotInParam("[OUT]");
-
- protected ProcedureQuery query;
- protected Connection connection;
- protected DbAdapter adapter;
- protected EntityResolver entityResolver;
- protected List<ProcedureParameter> callParams;
- protected List<Object> values;
- protected JdbcEventLogger logger;
-
- public ProcedureTranslator() {
- this.logger = NoopJdbcEventLogger.getInstance();
- }
-
- public void setQuery(ProcedureQuery query) {
- this.query = query;
- }
-
- public void setConnection(Connection connection) {
- this.connection = connection;
- }
-
- public void setAdapter(DbAdapter adapter) {
- this.adapter = adapter;
- }
-
- /**
- * @since 3.1
- */
- public void setJdbcEventLogger(JdbcEventLogger logger) {
- this.logger = logger;
- }
-
- /**
- * @since 3.1
- */
- public JdbcEventLogger getJdbcEventLogger() {
- return logger;
- }
-
- /**
- * @since 1.2
- */
- public void setEntityResolver(EntityResolver entityResolver) {
- this.entityResolver = entityResolver;
- }
-
- /**
- * Creates an SQL String for the stored procedure call.
- */
- protected String createSqlString() {
- Procedure procedure = getProcedure();
-
- StringBuilder buf = new StringBuilder();
-
- int totalParams = callParams.size();
-
- // check if procedure returns values
- if (procedure.isReturningValue()) {
- totalParams--;
- buf.append("{? = call ");
- }
- else {
- buf.append("{call ");
- }
-
- buf.append(procedure.getFullyQualifiedName());
-
- if (totalParams > 0) {
- // unroll the loop
- buf.append("(?");
-
- for (int i = 1; i < totalParams; i++) {
- buf.append(", ?");
- }
-
- buf.append(")");
- }
-
- buf.append("}");
- return buf.toString();
- }
-
- /**
- * Creates and binds a PreparedStatement to execute query SQL via JDBC.
- */
- public PreparedStatement createStatement() throws Exception {
- long t1 = System.currentTimeMillis();
-
- this.callParams = getProcedure().getCallParameters();
- this.values = new ArrayList<Object>(callParams.size());
-
- initValues();
- String sqlStr = createSqlString();
-
- if (logger.isLoggable()) {
- // need to convert OUT/VOID parameters to loggable strings
- long time = System.currentTimeMillis() - t1;
-
- List<Object> loggableParameters = new ArrayList<Object>(values.size());
- for (Object val : values) {
- if (val instanceof NotInParam) {
- val = val.toString();
- }
- loggableParameters.add(val);
- }
-
- // FIXME: compute proper attributes via callParams
- logger.logQuery(sqlStr, null, loggableParameters, time);
- }
- CallableStatement stmt = connection.prepareCall(sqlStr);
- initStatement(stmt);
- return stmt;
- }
-
- public Procedure getProcedure() {
- return query.getMetaData(entityResolver).getProcedure();
- }
-
- public ProcedureQuery getProcedureQuery() {
- return query;
- }
-
- /**
- * Set IN and OUT parameters.
- */
- protected void initStatement(CallableStatement stmt) throws Exception {
- if (values != null && values.size() > 0) {
- List<ProcedureParameter> params = getProcedure().getCallParameters();
-
- int len = values.size();
- for (int i = 0; i < len; i++) {
- ProcedureParameter param = params.get(i);
-
- // !Stored procedure parameter can be both in and out
- // at the same time
- if (param.isOutParam()) {
- setOutParam(stmt, param, i + 1);
- }
-
- if (param.isInParameter()) {
- setInParam(stmt, param, values.get(i), i + 1);
- }
- }
- }
- }
-
- protected void initValues() {
- Map<String, ?> queryValues = getProcedureQuery().getParameters();
-
- // match values with parameters in the correct order.
- // make an assumption that a missing value is NULL
- // Any reason why this is bad?
-
- for (ProcedureParameter param : callParams) {
-
- if (param.getDirection() == ProcedureParameter.OUT_PARAMETER) {
- values.add(OUT_PARAM);
- }
- else {
- values.add(queryValues.get(param.getName()));
- }
- }
- }
-
- /**
- * Sets a single IN parameter of the CallableStatement.
- */
- protected void setInParam(
- CallableStatement stmt,
- ProcedureParameter param,
- Object val,
- int pos) throws Exception {
-
- ProcedureParameterBinding binding = new ProcedureParameterBinding(param);
- binding.setValue(val);
- binding.setStatementPosition(pos);
- adapter.bindParameter(stmt, binding);
- }
-
- /**
- * Sets a single OUT parameter of the CallableStatement.
- */
- protected void setOutParam(CallableStatement stmt, ProcedureParameter param, int pos)
- throws Exception {
-
- int precision = param.getPrecision();
- if (precision >= 0) {
- stmt.registerOutParameter(pos, param.getType(), precision);
- }
- else {
- stmt.registerOutParameter(pos, param.getType());
- }
- }
+ /**
+ * Helper class to make OUT and VOID parameters logger-friendly.
+ */
+ static class NotInParam {
+
+ protected String type;
+
+ public NotInParam(String type) {
+ this.type = type;
+ }
+
+ @Override
+ public String toString() {
+ return type;
+ }
+ }
+
+ private static NotInParam OUT_PARAM = new NotInParam("[OUT]");
+
+ protected ProcedureQuery query;
+ protected Connection connection;
+ protected DbAdapter adapter;
+ protected EntityResolver entityResolver;
+ protected List<ProcedureParameter> callParams;
+ protected List<Object> values;
+ protected JdbcEventLogger logger;
+
+ public ProcedureTranslator() {
+ this.logger = NoopJdbcEventLogger.getInstance();
+ }
+
+ public void setQuery(ProcedureQuery query) {
+ this.query = query;
+ }
+
+ public void setConnection(Connection connection) {
+ this.connection = connection;
+ }
+
+ public void setAdapter(DbAdapter adapter) {
+ this.adapter = adapter;
+ }
+
+ /**
+ * @since 3.1
+ */
+ public void setJdbcEventLogger(JdbcEventLogger logger) {
+ this.logger = logger;
+ }
+
+ /**
+ * @since 3.1
+ */
+ public JdbcEventLogger getJdbcEventLogger() {
+ return logger;
+ }
+
+ /**
+ * @since 1.2
+ */
+ public void setEntityResolver(EntityResolver entityResolver) {
+ this.entityResolver = entityResolver;
+ }
+
+ /**
+ * Creates an SQL String for the stored procedure call.
+ */
+ protected String createSqlString() {
+ Procedure procedure = getProcedure();
+
+ StringBuilder buf = new StringBuilder();
+
+ int totalParams = callParams.size();
+
+ // check if procedure returns values
+ if (procedure.isReturningValue()) {
+ totalParams--;
+ buf.append("{? = call ");
+ } else {
+ buf.append("{call ");
+ }
+
+ buf.append(procedure.getFullyQualifiedName());
+
+ if (totalParams > 0) {
+ // unroll the loop
+ buf.append("(?");
+
+ for (int i = 1; i < totalParams; i++) {
+ buf.append(", ?");
+ }
+
+ buf.append(")");
+ }
+
+ buf.append("}");
+ return buf.toString();
+ }
+
+ /**
+ * Creates and binds a PreparedStatement to execute query SQL via JDBC.
+ */
+ public PreparedStatement createStatement() throws Exception {
+ long t1 = System.currentTimeMillis();
+
+ this.callParams = getProcedure().getCallParameters();
+ this.values = new ArrayList<Object>(callParams.size());
+
+ initValues();
+ String sqlStr = createSqlString();
+
+ if (logger.isLoggable()) {
+ // need to convert OUT/VOID parameters to loggable strings
+ long time = System.currentTimeMillis() - t1;
+
+ List<Object> loggableParameters = new ArrayList<Object>(values.size());
+ for (Object val : values) {
+ if (val instanceof NotInParam) {
+ val = val.toString();
+ }
+ loggableParameters.add(val);
+ }
+
+ // FIXME: compute proper attributes via callParams
+ logger.logQuery(sqlStr, null, loggableParameters, time);
+ }
+ CallableStatement stmt = connection.prepareCall(sqlStr);
+ initStatement(stmt);
+ return stmt;
+ }
+
+ public Procedure getProcedure() {
+ return query.getMetaData(entityResolver).getProcedure();
+ }
+
+ public ProcedureQuery getProcedureQuery() {
+ return query;
+ }
+
+ /**
+ * Set IN and OUT parameters.
+ */
+ protected void initStatement(CallableStatement stmt) throws Exception {
+ if (values != null && values.size() > 0) {
+ List<ProcedureParameter> params = getProcedure().getCallParameters();
+
+ int len = values.size();
+ for (int i = 0; i < len; i++) {
+ ProcedureParameter param = params.get(i);
+
+ // !Stored procedure parameter can be both in and out
+ // at the same time
+ if (param.isOutParam()) {
+ setOutParam(stmt, param, i + 1);
+ }
+
+ if (param.isInParameter()) {
+ setInParam(stmt, param, values.get(i), i + 1);
+ }
+ }
+ }
+ }
+
+ protected void initValues() {
+ Map<String, ?> queryValues = getProcedureQuery().getParameters();
+
+ // match values with parameters in the correct order.
+ // make an assumption that a missing value is NULL
+ // Any reason why this is bad?
+
+ for (ProcedureParameter param : callParams) {
+
+ if (param.getDirection() == ProcedureParameter.OUT_PARAMETER) {
+ values.add(OUT_PARAM);
+ } else {
+ values.add(queryValues.get(param.getName()));
+ }
+ }
+ }
+
+ /**
+ * Sets a single IN parameter of the CallableStatement.
+ */
+ protected void setInParam(
+ CallableStatement stmt,
+ ProcedureParameter param,
+ Object val,
+ int pos) throws Exception {
+ ExtendedType extendedType = adapter.getExtendedTypes().getDefaultType();
+ if (val != null) adapter.getExtendedTypes().getRegisteredType(val.getClass());
+ ProcedureParameterBinding binding = new ProcedureParameterBinding(param, extendedType);
+ binding.setValue(val);
+ binding.setStatementPosition(pos);
+ adapter.bindParameter(stmt, binding);
+ }
+
+ /**
+ * Sets a single OUT parameter of the CallableStatement.
+ */
+ protected void setOutParam(CallableStatement stmt, ProcedureParameter param, int pos)
+ throws Exception {
+
+ int precision = param.getPrecision();
+ if (precision >= 0) {
+ stmt.registerOutParameter(pos, param.getType(), precision);
+ } else {
+ stmt.registerOutParameter(pos, param.getType());
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssembler.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssembler.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssembler.java
index 40554bd..03949c6 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssembler.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/QueryAssembler.java
@@ -19,7 +19,7 @@
package org.apache.cayenne.access.translator.select;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.TypesMapping;
@@ -45,7 +45,7 @@ public abstract class QueryAssembler {
protected String sql;
protected DbAdapter adapter;
protected EntityResolver entityResolver;
- protected List<ParameterBinding> bindings;
+ protected List<DbAttributeBinding> bindings;
/**
* @since 4.0
@@ -55,7 +55,7 @@ public abstract class QueryAssembler {
this.adapter = adapter;
this.query = query;
this.queryMetadata = query.getMetaData(entityResolver);
- this.bindings = new ArrayList<ParameterBinding>();
+ this.bindings = new ArrayList<DbAttributeBinding>();
}
/**
@@ -154,7 +154,7 @@ public abstract class QueryAssembler {
if (dbAttr != null) typeName = TypesMapping.getJavaBySqlType(dbAttr.getType());
ExtendedType extendedType = adapter.getExtendedTypes().getRegisteredType(typeName);
- ParameterBinding binding = new ParameterBinding(dbAttr, extendedType);
+ DbAttributeBinding binding = new DbAttributeBinding(dbAttr, extendedType);
binding.setValue(anObject);
binding.setStatementPosition(bindings.size() + 1);
bindings.add(binding);
@@ -163,7 +163,7 @@ public abstract class QueryAssembler {
/**
* @since 4.0
*/
- public ParameterBinding[] getBindings() {
- return bindings.toArray(new ParameterBinding[bindings.size()]);
+ public DbAttributeBinding[] getBindings() {
+ return bindings.toArray(new DbAttributeBinding[bindings.size()]);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/SelectTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/SelectTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/SelectTranslator.java
index d652885..6554565 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/SelectTranslator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/SelectTranslator.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.access.translator.select;
import java.util.Map;
import org.apache.cayenne.access.jdbc.ColumnDescriptor;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.query.SelectQuery;
@@ -35,7 +35,7 @@ public interface SelectTranslator {
String getSql() throws Exception;
- ParameterBinding[] getBindings();
+ DbAttributeBinding[] getBindings();
Map<ObjAttribute, ColumnDescriptor> getAttributeOverrides();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
index 8df16f1..f3fb80c 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
@@ -21,9 +21,7 @@ package org.apache.cayenne.dba;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.jdbc.SQLParameterBinding;
-import org.apache.cayenne.access.translator.ParameterBinding;
-import org.apache.cayenne.access.translator.ProcedureParameterBinding;
+import org.apache.cayenne.access.translator.Binding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
@@ -40,7 +38,6 @@ import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.SQLAction;
import org.apache.cayenne.query.SelectQuery;
-import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Collection;
@@ -203,22 +200,12 @@ public class AutoAdapter implements DbAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, ParameterBinding parameterBinding)
+ public void bindParameter(PreparedStatement statement, Binding parameterBinding)
throws SQLException, Exception {
getAdapter().bindParameter(statement, parameterBinding);
}
@Override
- public void bindParameter(PreparedStatement statement, SQLParameterBinding parameterBinding, int position) throws SQLException, Exception {
- getAdapter().bindParameter(statement, parameterBinding, position);
- }
-
- @Override
- public void bindParameter(CallableStatement statement, ProcedureParameterBinding binding) throws SQLException, Exception {
- getAdapter().bindParameter(statement, binding);
- }
-
- @Override
public String tableTypeForTable() {
return getAdapter().tableTypeForTable();
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
index 6cf4eb0..4fbaa3d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/DbAdapter.java
@@ -1,27 +1,25 @@
/*****************************************************************
- * 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
- *
- * http://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.
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.dba;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.jdbc.SQLParameterBinding;
-import org.apache.cayenne.access.translator.ParameterBinding;
-import org.apache.cayenne.access.translator.ProcedureParameterBinding;
+import org.apache.cayenne.access.translator.Binding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
@@ -36,7 +34,6 @@ import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.SQLAction;
import org.apache.cayenne.query.SelectQuery;
-import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Collection;
@@ -52,14 +49,14 @@ public interface DbAdapter {
/**
* Returns a String used to terminate a batch in command-line tools. E.g.
* ";" on Oracle or "go" on Sybase.
- *
+ *
* @since 1.0.4
*/
String getBatchTerminator();
/**
* Returns a SelectTranslator that works with the adapter target database.
- *
+ *
* @since 4.0
*/
SelectTranslator getSelectTranslator(SelectQuery<?> query, EntityResolver entityResolver);
@@ -68,7 +65,7 @@ public interface DbAdapter {
/**
* Returns an instance of SQLAction that should handle the query.
- *
+ *
* @since 1.2
*/
SQLAction getAction(Query query, DataNode node);
@@ -91,7 +88,7 @@ public interface DbAdapter {
/**
* Returns true if a target database supports key autogeneration. This
* feature also requires JDBC3-compliant driver.
- *
+ *
* @since 1.2
*/
boolean supportsGeneratedKeys();
@@ -105,7 +102,7 @@ public interface DbAdapter {
/**
* Returns a collection of SQL statements needed to drop a database table.
- *
+ *
* @since 3.0
*/
Collection<String> dropTableStatements(DbEntity table);
@@ -119,7 +116,7 @@ public interface DbAdapter {
/**
* Returns a DDL string to create a unique constraint over a set of columns,
* or null if the unique constraints are not supported.
- *
+ *
* @since 1.1
*/
String createUniqueConstraint(DbEntity source, Collection<DbAttribute> columns);
@@ -150,7 +147,7 @@ public interface DbAdapter {
/**
* Creates and returns a DbAttribute based on supplied parameters (usually
* obtained from database meta data).
- *
+ *
* @param name
* database column name
* @param typeName
@@ -169,22 +166,9 @@ public interface DbAdapter {
DbAttribute buildAttribute(String name, String typeName, int type, int size, int scale, boolean allowNulls);
/**
- * Binds an object value to PreparedStatement's numbered parameter.
+ * Binds an object value to PreparedStatement's parameter.
*/
- void bindParameter(PreparedStatement statement, ParameterBinding parameterBinding)
- throws SQLException, Exception;
-
- /**
- * Binds an object value to PreparedStatement's numbered parameter.
- */
- void bindParameter(PreparedStatement statement, SQLParameterBinding parameterBinding, int position)
- throws SQLException, Exception;
-
- /**
- * Binds an object value to CallableStatement's numbered parameter.
- */
- void bindParameter(CallableStatement statement, ProcedureParameterBinding binding)
- throws SQLException, Exception;
+ void bindParameter(PreparedStatement statement, Binding parameterBinding) throws SQLException, Exception;
/**
* Returns the name of the table type (as returned by
@@ -206,7 +190,7 @@ public interface DbAdapter {
/**
* Append the column type part of a "create table" to the given
* {@link StringBuffer}
- *
+ *
* @param sqlBuffer
* the {@link StringBuffer} to append the column type to
* @param column
@@ -224,7 +208,7 @@ public interface DbAdapter {
/**
* Returns SQL identifier quoting strategy object
- *
+ *
* @since 4.0
*/
QuotingStrategy getQuotingStrategy();
@@ -232,14 +216,14 @@ public interface DbAdapter {
/**
* Allows the users to get access to the adapter decorated by a given
* adapter.
- *
+ *
* @since 4.0
*/
DbAdapter unwrap();
/**
* Returns a translator factory for EJBQL to SQL translation.
- *
+ *
* @since 4.0
*/
EJBQLTranslatorFactory getEjbqlTranslatorFactory();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
index 773f069..4cf88eb 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
@@ -21,9 +21,7 @@ package org.apache.cayenne.dba;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.jdbc.SQLParameterBinding;
-import org.apache.cayenne.access.translator.ParameterBinding;
-import org.apache.cayenne.access.translator.ProcedureParameterBinding;
+import org.apache.cayenne.access.translator.Binding;
import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.JdbcEJBQLTranslatorFactory;
@@ -38,11 +36,7 @@ import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.log.JdbcEventLogger;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbJoin;
-import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.map.*;
import org.apache.cayenne.merge.MergerFactory;
import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.SQLAction;
@@ -52,7 +46,6 @@ import org.apache.cayenne.resource.ResourceLocator;
import org.apache.cayenne.util.Util;
import java.net.URL;
-import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
@@ -543,7 +536,7 @@ public class JdbcAdapter implements DbAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, ParameterBinding binding)
+ public void bindParameter(PreparedStatement statement, Binding binding)
throws SQLException, Exception {
if (binding.getValue() == null) {
@@ -554,40 +547,11 @@ public class JdbcAdapter implements DbAdapter {
, binding.getValue()
, binding.getStatementPosition()
, binding.getType()
- , binding.getAttribute().getScale());
- }
- }
-
- @Override
- public void bindParameter(PreparedStatement statement, SQLParameterBinding binding, int position) throws
- SQLException, Exception {
- if (binding.getValue() == null) {
- statement.setNull(position, binding.getJdbcType());
- } else {
- ExtendedType typeProcessor = getExtendedTypes().getRegisteredType(binding.getValue().getClass());
- typeProcessor.setJdbcObject(statement
- , binding.getValue()
- , position
- , binding.getJdbcType()
, binding.getScale());
}
}
@Override
- public void bindParameter(CallableStatement statement, ProcedureParameterBinding binding) throws SQLException, Exception {
- if (binding.getValue() == null) {
- statement.setNull(binding.getStatementPosition(), binding.getParam().getType());
- } else {
- ExtendedType typeProcessor = getExtendedTypes().getRegisteredType(binding.getValue().getClass());
- typeProcessor.setJdbcObject(statement
- , binding.getValue()
- , binding.getStatementPosition()
- , binding.getParam().getType()
- , binding.getParam().getPrecision());
- }
- }
-
- @Override
public boolean supportsBatchUpdates() {
return this.supportsBatchUpdates;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
index 35efb99..d917a46 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
@@ -21,15 +21,10 @@ package org.apache.cayenne.dba.db2;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.Binding;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
-import org.apache.cayenne.access.types.BooleanType;
-import org.apache.cayenne.access.types.ByteArrayType;
-import org.apache.cayenne.access.types.CharType;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.access.types.ExtendedTypeFactory;
-import org.apache.cayenne.access.types.ExtendedTypeMap;
+import org.apache.cayenne.access.types.*;
import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.dba.JdbcAdapter;
@@ -234,9 +229,9 @@ public class DB2Adapter extends JdbcAdapter {
@Override
public void bindParameter(
- PreparedStatement statement, ParameterBinding binding) throws SQLException, Exception {
+ PreparedStatement statement, Binding binding) throws SQLException, Exception {
- if (binding.getValue() == null && (binding.getAttribute().getType() == 0 || binding.getAttribute().getType() == Types.BOOLEAN)) {
+ if (binding.getValue() == null && (binding.getType() == 0 || binding.getType() == Types.BOOLEAN)) {
statement.setNull(binding.getStatementPosition(), Types.VARCHAR);
}
else {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
index c9c5a0d..05b7d3b 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
@@ -20,17 +20,12 @@
package org.apache.cayenne.dba.derby;
import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.Binding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.JdbcEJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
-import org.apache.cayenne.access.types.ByteType;
-import org.apache.cayenne.access.types.CharType;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.access.types.ExtendedTypeFactory;
-import org.apache.cayenne.access.types.ExtendedTypeMap;
-import org.apache.cayenne.access.types.ShortType;
+import org.apache.cayenne.access.types.*;
import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.dba.JdbcAdapter;
@@ -192,9 +187,9 @@ public class DerbyAdapter extends JdbcAdapter {
@Override
public void bindParameter(
PreparedStatement statement,
- ParameterBinding binding) throws SQLException, Exception {
+ Binding binding) throws SQLException, Exception {
- if (binding.getValue() == null && binding.getAttribute().getType() == 0) {
+ if (binding.getValue() == null && binding.getType() == 0) {
statement.setNull(binding.getStatementPosition(), Types.VARCHAR);
} else {
binding.setType(convertNTypes(binding.getType()));
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
index 5da2682..7605bcf 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.ingres;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.Binding;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
import org.apache.cayenne.access.translator.select.SelectTranslator;
@@ -110,10 +110,10 @@ public class IngresAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, ParameterBinding binding)
+ public void bindParameter(PreparedStatement statement, Binding binding)
throws SQLException, Exception {
- if (binding.getValue() == null && (binding.getAttribute().getType() == Types.BOOLEAN || binding.getAttribute().getType() == Types.BIT)) {
+ if (binding.getValue() == null && (binding.getType() == Types.BOOLEAN || binding.getType() == Types.BIT)) {
statement.setNull(binding.getStatementPosition(), Types.VARCHAR);
} else {
super.bindParameter(statement, binding);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
index 961f653..5bbb17b 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.mysql;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.Binding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.ejbql.JdbcEJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
@@ -202,7 +202,7 @@ public class MySQLAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, ParameterBinding binding)
+ public void bindParameter(PreparedStatement statement, Binding binding)
throws SQLException, Exception {
binding.setType(mapNTypes(binding.getType()));
super.bindParameter(statement, binding);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
index 3b0c829..8cfdc2c 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.dba.oracle;
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.OperationObserver;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.log.JdbcEventLogger;
import org.apache.cayenne.map.DbAttribute;
@@ -45,11 +45,11 @@ class Oracle8LOBBatchAction implements SQLAction {
private DbAdapter adapter;
private JdbcEventLogger logger;
- private static void bind(DbAdapter adapter, PreparedStatement statement, ParameterBinding[] bindings)
+ private static void bind(DbAdapter adapter, PreparedStatement statement, DbAttributeBinding[] bindings)
throws SQLException, Exception {
- for (ParameterBinding b : bindings) {
- ParameterBinding binding = new ParameterBinding(b.getAttribute(), adapter.getExtendedTypes()
+ for (DbAttributeBinding b : bindings) {
+ DbAttributeBinding binding = new DbAttributeBinding(b.getAttribute(), adapter.getExtendedTypes()
.getRegisteredType(b.getValue().getClass()));
adapter.bindParameter(statement, binding);
}
@@ -97,7 +97,7 @@ class Oracle8LOBBatchAction implements SQLAction {
try (PreparedStatement statement = connection.prepareStatement(updateStr);) {
- ParameterBinding[] bindings = translator.updateBindings(row);
+ DbAttributeBinding[] bindings = translator.updateBindings(row);
logger.logQueryParameters("bind", bindings);
bind(adapter, statement, bindings);
@@ -141,7 +141,7 @@ class Oracle8LOBBatchAction implements SQLAction {
Object value = qualifierValues.get(i);
DbAttribute attribute = qualifierAttributes.get(i);
- ParameterBinding binding = new ParameterBinding(attribute, adapter.getExtendedTypes()
+ DbAttributeBinding binding = new DbAttributeBinding(attribute, adapter.getExtendedTypes()
.getRegisteredType(value.getClass()));
binding.setStatementPosition(i + 1);
binding.setValue(value);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchTranslator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchTranslator.java
index fb2deb7..d25d32f 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchTranslator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchTranslator.java
@@ -20,7 +20,7 @@
package org.apache.cayenne.dba.oracle;
import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.access.translator.batch.DefaultBatchTranslator;
import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.dba.DbAdapter;
@@ -111,31 +111,31 @@ abstract class Oracle8LOBBatchTranslator extends DefaultBatchTranslator {
}
@Override
- protected ParameterBinding[] createBindings() {
+ protected DbAttributeBinding[] createBindings() {
List<DbAttribute> dbAttributes = query.getDbAttributes();
int len = dbAttributes.size();
- ParameterBinding[] bindings = new ParameterBinding[len];
+ DbAttributeBinding[] bindings = new DbAttributeBinding[len];
for (int i = 0; i < len; i++) {
DbAttribute attribute = dbAttributes.get(i);
String typeName = TypesMapping.getJavaBySqlType(attribute.getType());
ExtendedType extendedType = adapter.getExtendedTypes().getRegisteredType(typeName);
- bindings[i] = new ParameterBinding(attribute, extendedType);
+ bindings[i] = new DbAttributeBinding(attribute, extendedType);
}
return bindings;
}
@Override
- protected ParameterBinding[] doUpdateBindings(BatchQueryRow row) {
+ protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
int len = bindings.length;
for (int i = 0, j = 1; i < len; i++) {
- ParameterBinding b = bindings[i];
+ DbAttributeBinding b = bindings[i];
Object value = row.getValue(i);
DbAttribute attribute = b.getAttribute();
[2/6] cayenne git commit: CAY-2050 parameter binding with better
encapsulation
Posted by aa...@apache.org.
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
index 24f06b8..d93d91d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
@@ -21,16 +21,12 @@ package org.apache.cayenne.dba.oracle;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.Binding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
import org.apache.cayenne.access.translator.select.SelectTranslator;
-import org.apache.cayenne.access.types.ByteType;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.access.types.ExtendedTypeFactory;
-import org.apache.cayenne.access.types.ExtendedTypeMap;
-import org.apache.cayenne.access.types.ShortType;
+import org.apache.cayenne.access.types.*;
import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.dba.JdbcAdapter;
@@ -40,20 +36,11 @@ import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.EntityResolver;
import org.apache.cayenne.merge.MergerFactory;
-import org.apache.cayenne.query.BatchQuery;
-import org.apache.cayenne.query.InsertBatchQuery;
-import org.apache.cayenne.query.Query;
-import org.apache.cayenne.query.SQLAction;
-import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.query.UpdateBatchQuery;
+import org.apache.cayenne.query.*;
import org.apache.cayenne.resource.ResourceLocator;
import java.lang.reflect.Field;
-import java.sql.CallableStatement;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Types;
+import java.sql.*;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -231,16 +218,16 @@ public class OracleAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, ParameterBinding binding)
+ public void bindParameter(PreparedStatement statement, Binding binding)
throws SQLException, Exception {
// Oracle doesn't support BOOLEAN even when binding NULL, so have to
// intercept
// NULL Boolean here, as super doesn't pass it through ExtendedType...
- if (binding.getValue() == null && binding.getAttribute().getType() == Types.BOOLEAN) {
+ if (binding.getValue() == null && binding.getType() == Types.BOOLEAN) {
ExtendedType typeProcessor = getExtendedTypes().getRegisteredType(Boolean.class);
typeProcessor.setJdbcObject(statement, binding.getValue(), binding.getStatementPosition(), binding
- .getAttribute().getType(),binding.getAttribute().getScale());
+ .getType(),binding.getScale());
} else {
super.bindParameter(statement, binding);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
index e4c7eff..5e61b89 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.postgres;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.Binding;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
import org.apache.cayenne.access.translator.select.SelectTranslator;
@@ -131,7 +131,7 @@ public class PostgresAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, ParameterBinding binding)
+ public void bindParameter(PreparedStatement statement, Binding binding)
throws SQLException, Exception {
binding.setType(mapNTypes(binding.getType()));
super.bindParameter(statement, binding);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java
index 29afb68..839b548 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java
@@ -19,7 +19,6 @@
package org.apache.cayenne.dba.sqlite;
import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.ParameterBinding;
import org.apache.cayenne.access.types.ExtendedType;
import org.apache.cayenne.access.types.ExtendedTypeFactory;
import org.apache.cayenne.access.types.ExtendedTypeMap;
@@ -34,8 +33,6 @@ import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.SQLAction;
import org.apache.cayenne.resource.ResourceLocator;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
import java.sql.Types;
import java.util.Calendar;
import java.util.Collection;
@@ -102,11 +99,6 @@ public class SQLiteAdapter extends JdbcAdapter {
return query.createSQLAction(new SQLiteActionBuilder(node));
}
- @Override
- public void bindParameter(PreparedStatement statement, ParameterBinding binding) throws SQLException, Exception {
- super.bindParameter(statement, binding);
- }
-
private int mapNTypes(int sqlType) {
switch (sqlType) {
case Types.NCHAR : return Types.CHAR;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
index b7592d4..e31fd50 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
@@ -19,15 +19,9 @@
package org.apache.cayenne.dba.sybase;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.Binding;
import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory;
-import org.apache.cayenne.access.types.ByteArrayType;
-import org.apache.cayenne.access.types.ByteType;
-import org.apache.cayenne.access.types.CharType;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.access.types.ExtendedTypeFactory;
-import org.apache.cayenne.access.types.ExtendedTypeMap;
-import org.apache.cayenne.access.types.ShortType;
+import org.apache.cayenne.access.types.*;
import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.dba.DefaultQuotingStrategy;
@@ -110,19 +104,19 @@ public class SybaseAdapter extends JdbcAdapter {
}
@Override
- public void bindParameter(PreparedStatement statement, ParameterBinding binding)
+ public void bindParameter(PreparedStatement statement, Binding binding)
throws SQLException, Exception {
// Sybase driver doesn't like CLOBs and BLOBs as parameters
if (binding.getValue() == null) {
- if (binding.getAttribute().getType() == Types.CLOB) {
- binding.getAttribute().setType(Types.VARCHAR);
- } else if (binding.getAttribute().getType() == Types.BLOB) {
- binding.getAttribute().setType(Types.VARBINARY);
+ if (binding.getType() == Types.CLOB) {
+ binding.setType(Types.VARCHAR);
+ } else if (binding.getType() == Types.BLOB) {
+ binding.setType(Types.VARBINARY);
}
}
- if (binding.getValue() == null && binding.getAttribute().getType() == 0) {
+ if (binding.getValue() == null && binding.getType() == 0) {
statement.setNull(binding.getStatementPosition(), Types.VARCHAR);
} else {
super.bindParameter(statement, binding);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/log/CommonsJdbcEventLogger.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/log/CommonsJdbcEventLogger.java b/cayenne-server/src/main/java/org/apache/cayenne/log/CommonsJdbcEventLogger.java
index 6908fcc..f9351bf 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/log/CommonsJdbcEventLogger.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/log/CommonsJdbcEventLogger.java
@@ -26,7 +26,7 @@ import java.util.List;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.ExtendedEnumeration;
import org.apache.cayenne.access.jdbc.SQLParameterBinding;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.conn.DataSourceInfo;
@@ -227,7 +227,7 @@ public class CommonsJdbcEventLogger implements JdbcEventLogger {
/**
* @deprecated since 4.0 use
- * {@link #logQuery(String, ParameterBinding[], long)}.
+ * {@link #logQuery(String, DbAttributeBinding[], long)}.
*/
@Deprecated
@Override
@@ -295,7 +295,7 @@ public class CommonsJdbcEventLogger implements JdbcEventLogger {
}
@Override
- public void logQuery(String sql, ParameterBinding[] bindings, long translatedIn) {
+ public void logQuery(String sql, DbAttributeBinding[] bindings, long translatedIn) {
if (isLoggable()) {
StringBuilder buffer = new StringBuilder(sql).append(" ");
@@ -335,7 +335,7 @@ public class CommonsJdbcEventLogger implements JdbcEventLogger {
}
@Override
- public void logQueryParameters(String label, ParameterBinding[] bindings) {
+ public void logQueryParameters(String label, DbAttributeBinding[] bindings) {
if (isLoggable() && bindings.length > 0) {
@@ -348,7 +348,7 @@ public class CommonsJdbcEventLogger implements JdbcEventLogger {
}
}
- private void appendParameters(StringBuilder buffer, String label, ParameterBinding[] bindings) {
+ private void appendParameters(StringBuilder buffer, String label, DbAttributeBinding[] bindings) {
int len = bindings.length;
if (len > 0) {
@@ -356,7 +356,7 @@ public class CommonsJdbcEventLogger implements JdbcEventLogger {
boolean hasIncluded = false;
for (int i = 0, j = 1; i < len; i++) {
- ParameterBinding b = bindings[i];
+ DbAttributeBinding b = bindings[i];
if (b.isExcluded()) {
continue;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/log/JdbcEventLogger.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/log/JdbcEventLogger.java b/cayenne-server/src/main/java/org/apache/cayenne/log/JdbcEventLogger.java
index 49ad655..5ada199 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/log/JdbcEventLogger.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/log/JdbcEventLogger.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.log;
import java.util.List;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.conn.DataSourceInfo;
import org.apache.cayenne.map.DbAttribute;
@@ -77,14 +77,14 @@ public interface JdbcEventLogger {
/**
* @deprecated since 4.0 use
- * {@link #logQuery(String, ParameterBinding[], long)}.
+ * {@link #logQuery(String, DbAttributeBinding[], long)}.
*/
@Deprecated
void logQuery(String sql, List<?> params);
/**
* @deprecated since 4.0 use
- * {@link #logQuery(String, ParameterBinding[], long)}.
+ * {@link #logQuery(String, DbAttributeBinding[], long)}.
*/
@Deprecated
void logQuery(String sql, List<DbAttribute> attrs, List<?> params, long time);
@@ -92,16 +92,16 @@ public interface JdbcEventLogger {
/**
* @since 4.0
*/
- void logQuery(String sql, ParameterBinding[] bindings, long translatedIn);
+ void logQuery(String sql, DbAttributeBinding[] bindings, long translatedIn);
/**
* @since 4.0
*/
- void logQueryParameters(String label, ParameterBinding[] bindings);
+ void logQueryParameters(String label, DbAttributeBinding[] bindings);
/**
* @deprecated since 4.0 in favor of
- * {@link #logQueryParameters(String, ParameterBinding[])}
+ * {@link #logQueryParameters(String, DbAttributeBinding[])}
*/
@Deprecated
void logQueryParameters(String label, List<DbAttribute> attrs, List<Object> parameters, boolean isInserting);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/main/java/org/apache/cayenne/log/NoopJdbcEventLogger.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/log/NoopJdbcEventLogger.java b/cayenne-server/src/main/java/org/apache/cayenne/log/NoopJdbcEventLogger.java
index 8a56d94..1ed2252 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/log/NoopJdbcEventLogger.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/log/NoopJdbcEventLogger.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.log;
import java.util.List;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.conn.DataSourceInfo;
import org.apache.cayenne.map.DbAttribute;
@@ -82,7 +82,7 @@ public class NoopJdbcEventLogger implements JdbcEventLogger {
}
@Override
- public void logQuery(String sql, ParameterBinding[] bindings, long translatedIn) {
+ public void logQuery(String sql, DbAttributeBinding[] bindings, long translatedIn) {
}
@Override
@@ -91,7 +91,7 @@ public class NoopJdbcEventLogger implements JdbcEventLogger {
}
@Override
- public void logQueryParameters(String label, ParameterBinding[] bindings) {
+ public void logQueryParameters(String label, DbAttributeBinding[] bindings) {
}
@Override
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2d3f999b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslatorIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslatorIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslatorIT.java
index 0fdc48b..a1998be 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslatorIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/DefaultBatchTranslatorIT.java
@@ -19,7 +19,7 @@
package org.apache.cayenne.access.translator.batch;
-import org.apache.cayenne.access.translator.ParameterBinding;
+import org.apache.cayenne.access.translator.DbAttributeBinding;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.JdbcAdapter;
import org.apache.cayenne.di.AdhocObjectFactory;
@@ -55,13 +55,13 @@ public class DefaultBatchTranslatorIT extends ServerCase {
}
@Override
- protected ParameterBinding[] createBindings() {
- return new ParameterBinding[0];
+ protected DbAttributeBinding[] createBindings() {
+ return new DbAttributeBinding[0];
}
@Override
- protected ParameterBinding[] doUpdateBindings(BatchQueryRow row) {
- return new ParameterBinding[0];
+ protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
+ return new DbAttributeBinding[0];
}
};
@@ -81,13 +81,13 @@ public class DefaultBatchTranslatorIT extends ServerCase {
}
@Override
- protected ParameterBinding[] createBindings() {
- return new ParameterBinding[0];
+ protected DbAttributeBinding[] createBindings() {
+ return new DbAttributeBinding[0];
}
@Override
- protected ParameterBinding[] doUpdateBindings(BatchQueryRow row) {
- return new ParameterBinding[0];
+ protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
+ return new DbAttributeBinding[0];
}
};
@@ -116,13 +116,13 @@ public class DefaultBatchTranslatorIT extends ServerCase {
}
@Override
- protected ParameterBinding[] createBindings() {
- return new ParameterBinding[0];
+ protected DbAttributeBinding[] createBindings() {
+ return new DbAttributeBinding[0];
}
@Override
- protected ParameterBinding[] doUpdateBindings(BatchQueryRow row) {
- return new ParameterBinding[0];
+ protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
+ return new DbAttributeBinding[0];
}
};