You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/08/10 20:17:14 UTC
[commons-dbcp] branch master updated: Update to PR#36 -
PrepareStatement and prepareCall methods are extracted (#37)
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-dbcp.git
The following commit(s) were added to refs/heads/master by this push:
new 63ab089 Update to PR#36 - PrepareStatement and prepareCall methods are extracted (#37)
63ab089 is described below
commit 63ab089fbd4d408b04d5fe893581088b0ac2b4bc
Author: Alexander Norz <gi...@norz.de>
AuthorDate: Mon Aug 10 22:17:07 2020 +0200
Update to PR#36 - PrepareStatement and prepareCall methods are extracted (#37)
* PrepareCall methods are extracted
* PrepareStatement methods are extracted
* Refinement - final PStmtKey, JavaDoc variable name
- Set parameter PStmtKey in extracted methods final
- Added and completed some JavaDoc
- Renamed variable in method getSchemaOrNull()
Co-authored-by: DoiMasayuki <m-...@ist.osaka-u.ac.jp>
---
.../apache/commons/dbcp2/PoolingConnection.java | 164 ++++++++++-----------
1 file changed, 77 insertions(+), 87 deletions(-)
diff --git a/src/main/java/org/apache/commons/dbcp2/PoolingConnection.java b/src/main/java/org/apache/commons/dbcp2/PoolingConnection.java
index 8237dc7..f713428 100644
--- a/src/main/java/org/apache/commons/dbcp2/PoolingConnection.java
+++ b/src/main/java/org/apache/commons/dbcp2/PoolingConnection.java
@@ -136,7 +136,8 @@ public class PoolingConnection extends DelegatingConnection<Connection>
* @param sql
* the SQL string used to define the statement
* @param columnIndexes
- * column indexes
+ * An array of column indexes indicating the columns that should be returned from the inserted row or
+ * rows.
*
* @return the PStmtKey created for the given arguments.
*/
@@ -144,6 +145,17 @@ public class PoolingConnection extends DelegatingConnection<Connection>
return new PStmtKey(normalizeSQL(sql), getCatalogOrNull(), getSchemaOrNull(), columnIndexes);
}
+ /**
+ * Creates a PStmtKey for the given arguments.
+ *
+ * @param sql
+ * the SQL string used to define the statement
+ * @param autoGeneratedKeys
+ * A flag indicating whether auto-generated keys should be returned; one of
+ * <code>Statement.RETURN_GENERATED_KEYS</code> or <code>Statement.NO_GENERATED_KEYS</code>.
+ *
+ * @return the PStmtKey created for the given arguments.
+ */
protected PStmtKey createKey(final String sql, final int autoGeneratedKeys) {
return new PStmtKey(normalizeSQL(sql), getCatalogOrNull(), getSchemaOrNull(), autoGeneratedKeys);
}
@@ -279,13 +291,13 @@ public class PoolingConnection extends DelegatingConnection<Connection>
}
private String getSchemaOrNull() {
- String catalog = null;
+ String schema = null;
try {
- catalog = getSchema();
+ schema = getSchema();
} catch (final SQLException e) {
// Ignored
}
- return catalog;
+ return schema;
}
/**
@@ -354,15 +366,7 @@ public class PoolingConnection extends DelegatingConnection<Connection>
*/
@Override
public CallableStatement prepareCall(final String sql) throws SQLException {
- try {
- return (CallableStatement) pstmtPool.borrowObject(createKey(sql, StatementType.CALLABLE_STATEMENT));
- } catch (final NoSuchElementException e) {
- throw new SQLException("MaxOpenCallableStatements limit reached", e);
- } catch (final RuntimeException e) {
- throw e;
- } catch (final Exception e) {
- throw new SQLException("Borrow callableStatement from pool failed", e);
- }
+ return prepareCall(createKey(sql, StatementType.CALLABLE_STATEMENT));
}
/**
@@ -381,16 +385,7 @@ public class PoolingConnection extends DelegatingConnection<Connection>
@Override
public CallableStatement prepareCall(final String sql, final int resultSetType, final int resultSetConcurrency)
throws SQLException {
- try {
- return (CallableStatement) pstmtPool.borrowObject(
- createKey(sql, resultSetType, resultSetConcurrency, StatementType.CALLABLE_STATEMENT));
- } catch (final NoSuchElementException e) {
- throw new SQLException("MaxOpenCallableStatements limit reached", e);
- } catch (final RuntimeException e) {
- throw e;
- } catch (final Exception e) {
- throw new SQLException("Borrow callableStatement from pool failed", e);
- }
+ return prepareCall(createKey(sql, resultSetType, resultSetConcurrency, StatementType.CALLABLE_STATEMENT));
}
/**
@@ -411,9 +406,22 @@ public class PoolingConnection extends DelegatingConnection<Connection>
@Override
public CallableStatement prepareCall(final String sql, final int resultSetType, final int resultSetConcurrency,
final int resultSetHoldability) throws SQLException {
+ return prepareCall(createKey(sql, resultSetType, resultSetConcurrency,
+ resultSetHoldability, StatementType.CALLABLE_STATEMENT));
+ }
+
+ /**
+ * Creates or obtains a {@link CallableStatement} from the pool.
+ *
+ * @param key
+ * a {@link PStmtKey} for the given arguments
+ * @return a {@link PoolableCallableStatement}
+ * @throws SQLException
+ * Wraps an underlying exception.
+ */
+ private CallableStatement prepareCall(final PStmtKey key) throws SQLException {
try {
- return (CallableStatement) pstmtPool.borrowObject(createKey(sql, resultSetType, resultSetConcurrency,
- resultSetHoldability, StatementType.CALLABLE_STATEMENT));
+ return (CallableStatement) pstmtPool.borrowObject(key);
} catch (final NoSuchElementException e) {
throw new SQLException("MaxOpenCallableStatements limit reached", e);
} catch (final RuntimeException e) {
@@ -429,37 +437,29 @@ public class PoolingConnection extends DelegatingConnection<Connection>
* @param sql
* the SQL string used to define the PreparedStatement
* @return a {@link PoolablePreparedStatement}
+ * @throws SQLException
+ * Wraps an underlying exception.
*/
@Override
public PreparedStatement prepareStatement(final String sql) throws SQLException {
- if (null == pstmtPool) {
- throw new SQLException("Statement pool is null - closed or invalid PoolingConnection.");
- }
- try {
- return pstmtPool.borrowObject(createKey(sql));
- } catch (final NoSuchElementException e) {
- throw new SQLException("MaxOpenPreparedStatements limit reached", e);
- } catch (final RuntimeException e) {
- throw e;
- } catch (final Exception e) {
- throw new SQLException("Borrow prepareStatement from pool failed", e);
- }
+ return prepareStatement(createKey(sql));
}
+ /*
+ * Creates or obtains a {@link PreparedStatement} from the pool.
+ *
+ * @param sql
+ * the SQL string used to define the PreparedStatement
+ * @param autoGeneratedKeys
+ * A flag indicating whether auto-generated keys should be returned; one of
+ * <code>Statement.RETURN_GENERATED_KEYS</code> or <code>Statement.NO_GENERATED_KEYS</code>.
+ * @return a {@link PoolablePreparedStatement}
+ * @throws SQLException
+ * Wraps an underlying exception.
+ */
@Override
public PreparedStatement prepareStatement(final String sql, final int autoGeneratedKeys) throws SQLException {
- if (null == pstmtPool) {
- throw new SQLException("Statement pool is null - closed or invalid PoolingConnection.");
- }
- try {
- return pstmtPool.borrowObject(createKey(sql, autoGeneratedKeys));
- } catch (final NoSuchElementException e) {
- throw new SQLException("MaxOpenPreparedStatements limit reached", e);
- } catch (final RuntimeException e) {
- throw e;
- } catch (final Exception e) {
- throw new SQLException("Borrow prepareStatement from pool failed", e);
- }
+ return prepareStatement(createKey(sql, autoGeneratedKeys));
}
/**
@@ -468,23 +468,16 @@ public class PoolingConnection extends DelegatingConnection<Connection>
* @param sql
* the SQL string used to define the PreparedStatement
* @param columnIndexes
- * column indexes
+ * An array of column indexes indicating the columns that should be returned from the inserted row or
+ * rows.
* @return a {@link PoolablePreparedStatement}
+ * @throws SQLException
+ * Wraps an underlying exception.
+ *
*/
@Override
public PreparedStatement prepareStatement(final String sql, final int columnIndexes[]) throws SQLException {
- if (null == pstmtPool) {
- throw new SQLException("Statement pool is null - closed or invalid PoolingConnection.");
- }
- try {
- return pstmtPool.borrowObject(createKey(sql, columnIndexes));
- } catch (final NoSuchElementException e) {
- throw new SQLException("MaxOpenPreparedStatements limit reached", e);
- } catch (final RuntimeException e) {
- throw e;
- } catch (final Exception e) {
- throw new SQLException("Borrow prepareStatement from pool failed", e);
- }
+ return prepareStatement(createKey(sql, columnIndexes));
}
/**
@@ -497,22 +490,13 @@ public class PoolingConnection extends DelegatingConnection<Connection>
* @param resultSetConcurrency
* result set concurrency
* @return a {@link PoolablePreparedStatement}
+ * @throws SQLException
+ * Wraps an underlying exception.
*/
@Override
public PreparedStatement prepareStatement(final String sql, final int resultSetType, final int resultSetConcurrency)
throws SQLException {
- if (null == pstmtPool) {
- throw new SQLException("Statement pool is null - closed or invalid PoolingConnection.");
- }
- try {
- return pstmtPool.borrowObject(createKey(sql, resultSetType, resultSetConcurrency));
- } catch (final NoSuchElementException e) {
- throw new SQLException("MaxOpenPreparedStatements limit reached", e);
- } catch (final RuntimeException e) {
- throw e;
- } catch (final Exception e) {
- throw new SQLException("Borrow prepareStatement from pool failed", e);
- }
+ return prepareStatement(createKey(sql, resultSetType, resultSetConcurrency));
}
/**
@@ -527,22 +511,13 @@ public class PoolingConnection extends DelegatingConnection<Connection>
* @param resultSetHoldability
* result set holdability
* @return a {@link PoolablePreparedStatement}
+ * @throws SQLException
+ * Wraps an underlying exception.
*/
@Override
public PreparedStatement prepareStatement(final String sql, final int resultSetType, final int resultSetConcurrency,
final int resultSetHoldability) throws SQLException {
- if (null == pstmtPool) {
- throw new SQLException("Statement pool is null - closed or invalid PoolingConnection.");
- }
- try {
- return pstmtPool.borrowObject(createKey(sql, resultSetType, resultSetConcurrency, resultSetHoldability));
- } catch (final NoSuchElementException e) {
- throw new SQLException("MaxOpenPreparedStatements limit reached", e);
- } catch (final RuntimeException e) {
- throw e;
- } catch (final Exception e) {
- throw new SQLException("Borrow prepareStatement from pool failed", e);
- }
+ return prepareStatement(createKey(sql, resultSetType, resultSetConcurrency, resultSetHoldability));
}
/**
@@ -553,14 +528,29 @@ public class PoolingConnection extends DelegatingConnection<Connection>
* @param columnNames
* column names
* @return a {@link PoolablePreparedStatement}
+ * @throws SQLException
+ * Wraps an underlying exception.
*/
@Override
public PreparedStatement prepareStatement(final String sql, final String columnNames[]) throws SQLException {
+ return prepareStatement(createKey(sql, columnNames));
+ }
+
+ /**
+ * Creates or obtains a {@link PreparedStatement} from the pool.
+ *
+ * @param key
+ * a {@link PStmtKey} for the given arguments
+ * @return a {@link PoolablePreparedStatement}
+ * @throws SQLException
+ * Wraps an underlying exception.
+ */
+ private PreparedStatement prepareStatement(final PStmtKey key) throws SQLException {
if (null == pstmtPool) {
throw new SQLException("Statement pool is null - closed or invalid PoolingConnection.");
}
try {
- return pstmtPool.borrowObject(createKey(sql, columnNames));
+ return pstmtPool.borrowObject(key);
} catch (final NoSuchElementException e) {
throw new SQLException("MaxOpenPreparedStatements limit reached", e);
} catch (final RuntimeException e) {