@Override public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException { checkState(); PreparedStatementHolder stmtHolder = null; PreparedStatementKey key = new PreparedStatementKey( sql, getCatalog(), MethodType.Precall_3, resultSetType, resultSetConcurrency); boolean poolPreparedStatements = holder.isPoolPreparedStatements(); if (poolPreparedStatements) { stmtHolder = holder.getStatementPool().get(key); } if (stmtHolder == null) { try { stmtHolder = new PreparedStatementHolder( key, conn.prepareCall(sql, resultSetType, resultSetConcurrency)); holder.getDataSource().incrementPreparedStatementCount(); } catch (SQLException ex) { handleException(ex); } } initStatement(stmtHolder); DruidPooledCallableStatement rtnVal = new DruidPooledCallableStatement(this, stmtHolder); holder.addTrace(rtnVal); return rtnVal; }
@Override public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException { checkState(); PreparedStatementKey key = new PreparedStatementKey(sql, getCatalog(), MethodType.M6, autoGeneratedKeys); PreparedStatementHolder stmtHolder = null; boolean poolPreparedStatements = holder.isPoolPreparedStatements(); if (poolPreparedStatements) { stmtHolder = holder.getStatementPool().get(key); } if (stmtHolder == null) { try { stmtHolder = new PreparedStatementHolder(key, conn.prepareStatement(sql, autoGeneratedKeys)); holder.getDataSource().incrementPreparedStatementCount(); } catch (SQLException ex) { handleException(ex); } } initStatement(stmtHolder); DruidPooledPreparedStatement rtnVal = new DruidPooledPreparedStatement(this, stmtHolder); holder.addTrace(rtnVal); return rtnVal; }
@Override public void releaseSavepoint(Savepoint savepoint) throws SQLException { checkState(); try { conn.releaseSavepoint(savepoint); } catch (SQLException ex) { handleException(ex); } }
@Override public void clearWarnings() throws SQLException { checkState(); try { conn.clearWarnings(); } catch (SQLException ex) { handleException(ex); } }
@Override public void setCatalog(String catalog) throws SQLException { checkState(); try { conn.setCatalog(catalog); } catch (SQLException ex) { handleException(ex); } }
public void test_handleException() throws Exception { DruidPooledConnection conn = (DruidPooledConnection) dataSource.getConnection(); conn.close(); SQLException error = new SQLException(); try { conn.handleException(error); } catch (SQLException ex) { Assert.assertEquals(error, ex); } }
@Override public Clob createClob() throws SQLException { checkState(); try { return conn.createClob(); } catch (SQLException ex) { handleException(ex); return null; // never arrive } }
@Override public void setAutoCommit(boolean autoCommit) throws SQLException { checkState(); try { conn.setAutoCommit(autoCommit); holder.setUnderlyingAutoCommit(autoCommit); } catch (SQLException ex) { handleException(ex); } }
@Override public Savepoint setSavepoint(String name) throws SQLException { checkState(); try { return conn.setSavepoint(name); } catch (SQLException ex) { handleException(ex); return null; // never arrive } }
@Override public Savepoint setSavepoint() throws SQLException { checkState(); try { return conn.setSavepoint(); } catch (SQLException ex) { handleException(ex); return null; } }
@Override public void commit() throws SQLException { checkState(); DruidAbstractDataSource dataSource = holder.getDataSource(); dataSource.incrementCommitCount(); try { conn.commit(); } catch (SQLException ex) { handleException(ex); } finally { handleEndTransaction(dataSource, null); } }
public void test_handleException_2() throws Exception { DruidPooledConnection conn = dataSource.getConnection().unwrap(DruidPooledConnection.class); conn.getConnection().close(); { SQLException error = null; try { conn.handleException(new RuntimeException()); } catch (SQLException ex) { error = ex; } Assert.assertNotNull(error); } conn.close(); }
@Override public void rollback(Savepoint savepoint) throws SQLException { if (holder == null) { return; } DruidAbstractDataSource dataSource = holder.getDataSource(); dataSource.incrementRollbackCount(); try { conn.rollback(savepoint); } catch (SQLException ex) { handleException(ex); } finally { handleEndTransaction(dataSource, savepoint); } }
@Override public void setTransactionIsolation(int level) throws SQLException { checkState(); boolean useLocalSessionState = holder.getDataSource().isUseLocalSessionState(); if (useLocalSessionState) { if (level == holder.getUnderlyingTransactionIsolation()) { return; } } try { conn.setTransactionIsolation(level); } catch (SQLException ex) { handleException(ex); } holder.setUnderlyingTransactionIsolation(level); }
@Override public Statement createStatement() throws SQLException { checkState(); Statement stmt = null; try { stmt = conn.createStatement(); } catch (SQLException ex) { handleException(ex); } holder.getDataSource().initStatement(this, stmt); DruidPooledStatement poolableStatement = new DruidPooledStatement(this, stmt); holder.addTrace(poolableStatement); return poolableStatement; }
@Override public void setReadOnly(boolean readOnly) throws SQLException { checkState(); boolean useLocalSessionState = holder.getDataSource().isUseLocalSessionState(); if (useLocalSessionState) { if (readOnly == holder.isUnderlyingReadOnly()) { return; } } try { conn.setReadOnly(readOnly); } catch (SQLException ex) { handleException(ex); } holder.setUnderlyingReadOnly(readOnly); }
@Override public Statement createStatement( int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException { checkState(); Statement stmt = null; try { stmt = conn.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability); } catch (SQLException ex) { handleException(ex); } holder.getDataSource().initStatement(this, stmt); DruidPooledStatement poolableStatement = new DruidPooledStatement(this, stmt); holder.addTrace(poolableStatement); return poolableStatement; }
@Override public void setAutoCommit(boolean autoCommit) throws SQLException { checkState(); boolean useLocalSessionState = holder.getDataSource().isUseLocalSessionState(); if (useLocalSessionState) { if (autoCommit == holder.isUnderlyingAutoCommit()) { return; } } try { conn.setAutoCommit(autoCommit); holder.setUnderlyingAutoCommit(autoCommit); } catch (SQLException ex) { handleException(ex); } }
public void test_handleException_5() throws Exception { DruidPooledConnection conn = dataSource.getConnection().unwrap(DruidPooledConnection.class); conn.addConnectionEventListener( new ConnectionEventListener() { @Override public void connectionClosed(ConnectionEvent event) {} @Override public void connectionErrorOccurred(ConnectionEvent event) {} }); conn.close(); { SQLException error = null; try { conn.handleException(new RuntimeException()); } catch (SQLException ex) { error = ex; } Assert.assertNotNull(error); } }