vgritsenko 01/06/22 21:49:53
Modified: src/org/apache/cocoon/transformation SQLTransformer.java
Log:
Fix SQLTransformer in HEAD: It was not returning connections to the pool
failing with exception in HardResourceLimitingPool
Revision Changes Path
1.10 +36 -80
xml-cocoon2/src/org/apache/cocoon/transformation/SQLTransformer.java
Index: SQLTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/SQLTransformer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- SQLTransformer.java 2001/06/22 05:43:09 1.9
+++ SQLTransformer.java 2001/06/23 04:49:52 1.10
@@ -55,7 +55,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
* (PWR Organisation & Entwicklung)
* @author <a href="mailto:[EMAIL PROTECTED]">Sven Beauprez</a>
- * @version CVS $Revision: 1.9 $ $Date: 2001/06/22 05:43:09 $ $Author: cziegeler $
+ * @version CVS $Revision: 1.10 $ $Date: 2001/06/23 04:49:52 $ $Author: vgritsenko $
*/
public class SQLTransformer extends AbstractTransformer implements Composable,
Recyclable, Disposable {
@@ -216,11 +216,7 @@
Query query = (Query) queries.elementAt(index);
try {
query.execute();
- } catch (SQLException e) {
- getLogger().debug("SQLTransformer.executeQuery()", e);
- throw new SAXException(e);
- }
- try {
+
if (showNrOfRows!=null && showNrOfRows.equalsIgnoreCase("true")) {
attr.addAttribute(my_uri,query.nr_of_rows,query.nr_of_rows,"CDATA",
String.valueOf(query.getNrOfRows()));
@@ -247,6 +243,12 @@
} catch (SQLException e) {
getLogger().debug("SQLTransformer.executeQuery()", e);
throw new SAXException(e);
+ } finally {
+ try{
+ query.close();
+ }catch(SQLException e){
+ getLogger().warn("SQLTransformer: Could not close JDBC connection",
e);
+ }
}
this.end(query.rowset_name);
// this.contentHandler.endPrefixMapping("");
@@ -784,13 +786,7 @@
/** Do a lookup into the ancestors' result's values **/
AncestorValue av = (AncestorValue) object;
Query query = transformer.getQuery(query_index - av.level);
- try {
- sb.append(query.getColumnValue(av.name));
- } catch (SQLException e) {
- transformer.getTheLogger().debug("SQLTransformer", e);
- close();
- throw e;
- }
+ sb.append(query.getColumnValue(av.name));
}
}
String query = sb.toString();
@@ -833,9 +829,6 @@
} catch (ComponentException cme) {
transformer.getTheLogger().error("Could not use connection: " +
connection, cme);
} finally {
- if (conn!=null && !conn.isClosed()) {
- conn.close();
- }
if (datasource != null) dbSelector.release(datasource);
}
}
@@ -843,15 +836,9 @@
protected int getNrOfRows() throws SQLException {
int nr = 0;
if (rs!=null) {
- try {
rs.last();
nr = rs.getRow();
rs.beforeFirst();
- } catch (SQLException e) {
- transformer.getTheLogger().debug("SQLTransformer", e);
- close();
- throw e;
- }
} else {
if (outParameters!=null) {
nr=outParameters.size();
@@ -861,41 +848,23 @@
}
protected String getColumnValue(int i) throws SQLException {
- try {
- return transformer.getStringValue(rs.getObject(i));
- } catch (SQLException e) {
- transformer.getTheLogger().debug("SQLTransformer", e);
- close();
- throw e;
- }
+ return transformer.getStringValue(rs.getObject(i));
}
protected String getColumnValue(String name) throws SQLException {
- try {
- return transformer.getStringValue(rs.getObject(name));
- } catch (SQLException e) {
- transformer.getTheLogger().debug("SQLTransformer", e);
- close();
- throw e;
- }
+ return transformer.getStringValue(rs.getObject(name));
}
protected boolean next() throws SQLException {
- try {
- // if rv is not -1, then an SQL insert, update, etc, has
- // happened (see JDBC docs - return codes for executeUpdate)
- if (rv != -1)
- return true;
- if (rs == null || !rs.next()) {
- close();
- return false;
- }
- return true;
- } catch (SQLException e) {
- transformer.getTheLogger().debug("SQLTransformer", e);
- close();
- throw e;
- }
+ // if rv is not -1, then an SQL insert, update, etc, has
+ // happened (see JDBC docs - return codes for executeUpdate)
+ if (rv != -1)
+ return true;
+ if (rs == null || !rs.next()) {
+ close();
+ return false;
+ }
+ return true;
}
protected void close() throws SQLException {
@@ -907,10 +876,9 @@
if (cst != null)
cst.close();
} finally {
- // already closed in execute()
-// if (conn!=null && !conn.isClosed()) {
-// conn.close();
-// }
+ if (conn != null)
+ conn.close();
+ conn = null;
}
}
@@ -923,13 +891,7 @@
if (!isupdate && !isstoredprocedure) {
for (int i = 1; i <= md.getColumnCount(); i++) {
transformer.start(md.getColumnName(i).toLowerCase(), attr);
- try {
- transformer.data(getColumnValue(i));
- } catch (SQLException e) {
- transformer.getTheLogger().debug("SQLTransformer", e);
- close();
- throw e;
- }
+ transformer.data(getColumnValue(i));
transformer.end(md.getColumnName(i).toLowerCase());
}
} else if (isupdate && !isstoredprocedure){
@@ -957,25 +919,21 @@
transformer.end((String)outParametersNames.get(counter));
} else {
ResultSet rs = (ResultSet)obj;
- transformer.start((String)outParametersNames.get(counter),
attr);
- ResultSetMetaData md = rs.getMetaData();
- while (rs.next()) {
- transformer.start(this.row_name, attr);
- for (int i = 1; i <= md.getColumnCount(); i++) {
- transformer.start(md.getColumnName(i).toLowerCase(),
attr);
- try {
+ try{
+ transformer.start((String)outParametersNames.get(counter),
attr);
+ ResultSetMetaData md = rs.getMetaData();
+ while (rs.next()) {
+ transformer.start(this.row_name, attr);
+ for (int i = 1; i <= md.getColumnCount(); i++) {
+ transformer.start(md.getColumnName(i).toLowerCase(),
attr);
transformer.data(transformer.getStringValue(rs.getObject(i)));
- } catch (SQLException e) {
- transformer.getTheLogger().debug("SQLTransformer", e);
- rs.close();
- close();
- throw e;
+ transformer.end(md.getColumnName(i).toLowerCase());
}
- transformer.end(md.getColumnName(i).toLowerCase());
- }
- transformer.end(this.row_name);
+ transformer.end(this.row_name);
+ }
+ }finally{
+ rs.close();
}
- rs.close();
transformer.end((String)outParametersNames.get(counter));
}
}catch (SQLException e) {
@@ -997,7 +955,5 @@
this.level = level;
this.name = name;
}
-
}
-
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]