Author: antonio Date: Fri Jan 7 18:53:56 2005 New Revision: 124610 URL: http://svn.apache.org/viewcvs?view=rev&rev=124610 Log: Close database resource Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/acting/OraAddAction.java cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/components/source/impl/BlobSource.java cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/reading/DatabaseReader.java cocoon/branches/BRANCH_2_1_X/src/blocks/hsqldb/java/org/apache/cocoon/components/hsqldb/ServerImpl.java cocoon/branches/BRANCH_2_1_X/src/blocks/petstore/java/org/apache/cocoon/components/flow/javascript/ScriptableConnection.java
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/acting/OraAddAction.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/acting/OraAddAction.java?view=diff&rev=124610&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/acting/OraAddAction.java&r1=124609&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/acting/OraAddAction.java&r2=124610 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/acting/OraAddAction.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/acting/OraAddAction.java Fri Jan 7 18:53:56 2005 @@ -51,7 +51,7 @@ * only one table at a time to update. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> - * @version CVS $Id: OraAddAction.java,v 1.4 2004/03/30 05:50:48 antonio Exp $ + * @version CVS $Id$ */ public class OraAddAction extends DatabaseAddAction { private static final Map selectLOBStatements = new HashMap(); @@ -91,18 +91,23 @@ if ("manual".equals(mode)) { String selectQuery = this.getSelectQuery(keys[i]); - - ResultSet set = conn.createStatement().executeQuery(selectQuery); - set.next(); - int value = set.getInt("maxid") + 1; - - statement.setInt(currentIndex, value); - - request.setAttribute(keys[i].getAttribute("param"), String.valueOf(value)); - - set.close(); - set.getStatement().close(); - currentIndex++; + ResultSet set = null; + try { + set = conn.createStatement().executeQuery(selectQuery); + set.next(); + int value = set.getInt("maxid") + 1; + + statement.setInt(currentIndex, value); + + request.setAttribute(keys[i].getAttribute("param"), String.valueOf(value)); + } catch (SQLException sqle){ + getLogger().warn("There was an error closing the ResultSet", sqle); + throw sqle; + } finally { + set.close(); + set.getStatement().close(); + currentIndex++; + } } else if ("form".equals(mode)) { String parameter = keys[i].getAttribute("param"); request.setAttribute(parameter, request.getParameter(parameter)); @@ -229,8 +234,9 @@ getLogger().warn("There was an error closing the datasource", sqe); } } - - if (datasource != null) this.dbselector.release(datasource); + if (datasource != null) { + this.dbselector.release(datasource); + } } return null; Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/components/source/impl/BlobSource.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/components/source/impl/BlobSource.java?view=diff&rev=124610&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/components/source/impl/BlobSource.java&r1=124609&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/components/source/impl/BlobSource.java&r2=124610 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/components/source/impl/BlobSource.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/components/source/impl/BlobSource.java Fri Jan 7 18:53:56 2005 @@ -60,7 +60,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Sylvain Wallez</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stephan Michels</a> - * @version CVS $Id: BlobSource.java,v 1.6 2004/03/11 15:34:30 sylvain Exp $ + * @version CVS $Id$ */ public class BlobSource extends AbstractLogEnabled implements Source, Serviceable { @@ -201,16 +201,18 @@ default : String value = rs.getString(1); - stmt.close(); - rs.close(); - cnx.close(); return new ByteArrayInputStream(value.getBytes()); } } catch(SQLException sqle) { String msg = "Cannot retrieve content from " + this.systemId; getLogger().error(msg, sqle); - + // IOException would be more adequate, but ProcessingException is cascaded... + throw new SourceException(msg, sqle); + } finally { try { + if (stmt != null) { + stmt.close(); + } if (cnx != null) { cnx.close(); } @@ -218,9 +220,6 @@ // PITA throw new SourceException("Cannot close connection", sqle2); } - - // IOException would be more adequate, but ProcessingException is cascaded... - throw new SourceException(msg, sqle); } } Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/reading/DatabaseReader.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/reading/DatabaseReader.java?view=diff&rev=124610&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/reading/DatabaseReader.java&r1=124609&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/reading/DatabaseReader.java&r2=124610 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/reading/DatabaseReader.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/reading/DatabaseReader.java Fri Jan 7 18:53:56 2005 @@ -52,7 +52,7 @@ * to pull the image from, and source specifies the source key information. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> - * @version CVS $Id: DatabaseReader.java,v 1.5 2004/03/05 13:01:55 bdelacretaz Exp $ + * @version CVS $Id$ */ public class DatabaseReader extends ServiceableReader implements Configurable, Disposable, CacheableProcessingComponent @@ -91,6 +91,7 @@ throws ProcessingException, SAXException, IOException { super.setup(resolver, objectModel, src, par); + PreparedStatement statement = null; try { this.datasource = (DataSourceComponent) dbselector.select(dsn); this.con = datasource.getConnection(); @@ -99,7 +100,7 @@ this.con.setAutoCommit(false); } - PreparedStatement statement = con.prepareStatement(getQuery()); + statement = con.prepareStatement(getQuery()); statement.setString(1, this.source); ResultSet set = statement.executeQuery(); if (!set.next()) throw new ResourceNotFoundException("There is no resource with that key"); @@ -121,8 +122,15 @@ this.doCommit = true; } catch (Exception e) { this.doCommit = false; - throw new ResourceNotFoundException("DatabaseReader error:", e); + } finally { + try { + if (statement != null) { + statement.close(); + } + } catch(SQLException sqle) { + throw new ResourceNotFoundException("Cannot close connection", sqle); + } } } Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/hsqldb/java/org/apache/cocoon/components/hsqldb/ServerImpl.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/hsqldb/java/org/apache/cocoon/components/hsqldb/ServerImpl.java?view=diff&rev=124610&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/hsqldb/java/org/apache/cocoon/components/hsqldb/ServerImpl.java&r1=124609&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/hsqldb/java/org/apache/cocoon/components/hsqldb/ServerImpl.java&r2=124610 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/hsqldb/java/org/apache/cocoon/components/hsqldb/ServerImpl.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/hsqldb/java/org/apache/cocoon/components/hsqldb/ServerImpl.java Fri Jan 7 18:53:56 2005 @@ -164,10 +164,11 @@ /** Stop the server */ public void stop() { if (started) { + Statement statement = null; try { getLogger().debug("Shutting down HSQLDB"); Connection connection = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:" + this.port, "sa", ""); - Statement statement = connection.createStatement(); + statement = connection.createStatement(); statement.executeQuery("SHUTDOWN"); try { connection.close(); @@ -178,6 +179,14 @@ } } catch (Exception e){ getLogger().error("Error while shutting down HSQLDB", e); + } finally { + try { + if (statement != null) { + statement.close(); + } + } catch(SQLException sqle) { + getLogger().error("Error while shutting down HSQLDB", sqle); + } } getLogger().debug("Shutting down HSQLDB: Done"); } Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/petstore/java/org/apache/cocoon/components/flow/javascript/ScriptableConnection.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/petstore/java/org/apache/cocoon/components/flow/javascript/ScriptableConnection.java?view=diff&rev=124610&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/petstore/java/org/apache/cocoon/components/flow/javascript/ScriptableConnection.java&r1=124609&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/petstore/java/org/apache/cocoon/components/flow/javascript/ScriptableConnection.java&r2=124610 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/petstore/java/org/apache/cocoon/components/flow/javascript/ScriptableConnection.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/petstore/java/org/apache/cocoon/components/flow/javascript/ScriptableConnection.java Fri Jan 7 18:53:56 2005 @@ -18,6 +18,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; +import java.sql.SQLException; import org.mozilla.javascript.Context; import org.mozilla.javascript.Function; @@ -66,7 +67,7 @@ * A ScriptableConnection is also a wrapper around a real JDBC Connection and thus * provides all of methods of Connection as well * - * @version CVS $Id: ScriptableConnection.java,v 1.6 2004/03/05 13:02:03 bdelacretaz Exp $ + * @version CVS $Id$ */ public class ScriptableConnection extends ScriptableObject { @@ -206,9 +207,11 @@ public Object jsFunction_query(String sql, Object params, int startRow, int maxRows, Object funObj) - throws JavaScriptException { + throws JavaScriptException { + + PreparedStatement stmt = null; try { - PreparedStatement stmt = connection.prepareStatement(sql); + stmt = connection.prepareStatement(sql); Scriptable array = (Scriptable)params; if (array != Undefined.instance) { int len = (int) @@ -272,13 +275,22 @@ throw e; } catch (Exception e) { throw new JavaScriptException(e); + } finally { + try { + if (stmt != null) { + stmt.close(); + } + } catch (SQLException sqle) { + throw new JavaScriptException(sqle); + } } } public int jsFunction_update(String sql, Object params) throws JavaScriptException { + PreparedStatement stmt = null; try { - PreparedStatement stmt = connection.prepareStatement(sql); + stmt = connection.prepareStatement(sql); Scriptable array = (Scriptable)params; if (array != Undefined.instance) { int len = (int) @@ -298,6 +310,14 @@ return stmt.getUpdateCount(); } catch (Exception e) { throw new JavaScriptException(e); + } finally { + try { + if (stmt != null) { + stmt.close(); + } + } catch (SQLException sqle) { + throw new JavaScriptException(sqle); + } } }