[prev in list] [next in list] [prev in thread] [next in thread]
List: slide-dev
Subject: cvs commit: jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms RDBMSAdapter.java Stand
From: ozeigermann () apache ! org
Date: 2003-11-26 14:54:51
[Download RAW message or body]
ozeigermann 2003/11/26 06:54:51
Modified: proposals/stores/org/apache/slide/store/impl/rdbms
RDBMSAdapter.java StandardRDBMSAdapter.java
AbstractRDBMSStore.java JDBCAwareInputStream.java
Log:
Fixed bug concerning statement / connection closed before stream was read in \
uncompressed mode. Added connection to JDBCAwareInputStream that gets closed along \
with the statement and resultset, when stream is closed.
Revision Changes Path
1.2 +4 -4 \
jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/RDBMSAdapter.java
Index: RDBMSAdapter.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/RDBMSAdapter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RDBMSAdapter.java 14 Nov 2003 12:28:27 -0000 1.1
+++ RDBMSAdapter.java 26 Nov 2003 14:54:51 -0000 1.2
@@ -263,7 +263,7 @@
*
*/
public NodeRevisionContent retrieveRevisionContent
- (Connection conn, Uri uri, NodeRevisionDescriptor revisionDescriptor)
+ (Connection conn, Uri uri, NodeRevisionDescriptor revisionDescriptor, \
boolean temporaryConnection) throws ServiceAccessException, \
RevisionNotFoundException;
1.8 +25 -9 \
jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/StandardRDBMSAdapter.java
Index: StandardRDBMSAdapter.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/StandardRDBMSAdapter.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- StandardRDBMSAdapter.java 25 Nov 2003 14:27:42 -0000 1.7
+++ StandardRDBMSAdapter.java 26 Nov 2003 14:54:51 -0000 1.8
@@ -95,6 +95,7 @@
* @author <a href="mailto:akumar@metatomix.com">Ashok Kumar</a>
* @author <a href="mailto:ozeigermann@c1-fse.de">Oliver Zeigermann</a>
* @author <a href="mailto:dflorey@c1-fse.de">Daniel Florey</a>
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe \
Lombart</a>
* @version $Revision$
*/
@@ -106,7 +107,7 @@
public StandardRDBMSAdapter(Service service, Logger logger) {
super(service, logger);
- bcompress = true;
+ bcompress = false;
}
public void setParameters(Hashtable parameters)
@@ -733,7 +734,8 @@
public NodeRevisionContent retrieveRevisionContent(
Connection connection,
Uri uri,
- NodeRevisionDescriptor revisionDescriptor)
+ NodeRevisionDescriptor revisionDescriptor,
+ boolean temporaryConnection)
throws ServiceAccessException, RevisionNotFoundException {
NodeRevisionContent result = null;
try {
@@ -760,10 +762,23 @@
ziputil.UnZip(is);
\
revisionDescriptor.setContentLength(ziputil.getContentLength()); is = \
ziputil.getInputStream(); + result.setContent(is);
+ if (temporaryConnection) {
+ // XXX is needed, as calling store does not know if \
connection should be closed now + connection.close();
+ }
+ } else {
+ if (temporaryConnection) {
+ result.setContent(new JDBCAwareInputStream(is, statement, \
res, connection)); + } else {
+ result.setContent(new JDBCAwareInputStream(is, statement, \
res, null)); + }
}
- result.setContent(new JDBCAwareInputStream(is, statement));
} finally {
- close(statement, res);
+ // do not close when not compressed, as stream needs to be read \
before + if (bcompress) {
+ close(statement, res);
+ }
}
} catch (SQLException e) {
getLogger().log(e, LOG_CHANNEL, Logger.ERROR);
@@ -1157,6 +1172,7 @@
fos.write(buffer, 0, nChar);
} while (true);
fos.close();
+ is.close();
is = new FileInputStream(tempFile);
contentLength = tempFile.length();
} catch (IOException ex) {
@@ -1282,7 +1298,7 @@
// null means valid for all revisions
protected String getRevisionNumberAsString(NodeRevisionNumber revisionNumber) \
{
- return revisionNumber != null ? revisionNumber.toString() : null;
+ return revisionNumber != null ? revisionNumber.toString() : null;
}
// needed as some DBs do not accecpt 'x = NULL', but rather need 'x IS NULL'
1.3 +9 -6 \
jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/AbstractRDBMSStore.java
Index: AbstractRDBMSStore.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/AbstractRDBMSStore.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractRDBMSStore.java 19 Nov 2003 12:01:46 -0000 1.2
+++ AbstractRDBMSStore.java 26 Nov 2003 14:54:51 -0000 1.3
@@ -817,10 +817,12 @@
Connection connection = null;
try {
connection = getNewConnection();
- return adapter.retrieveRevisionContent(connection, uri, \
revisionDescriptor); + return \
adapter.retrieveRevisionContent(connection, uri, revisionDescriptor, true); } catch \
(SQLException e) { throw new ServiceAccessException(this, e);
} finally {
+ // has to be done in adapter or upon closing of stream
+ /*
if (connection != null) {
try {
// FIXME this really should not work, as we might have a \
stream not yet closed when compression if turned off @@ -829,9 +831,10 @@
getLogger().log(e, LOG_CHANNEL, Logger.WARNING);
}
}
+ */
}
} else {
- return adapter.retrieveRevisionContent(getCurrentConnection(), uri, \
revisionDescriptor); + return \
adapter.retrieveRevisionContent(getCurrentConnection(), uri, revisionDescriptor, \
false); }
}
1.2 +36 -25 \
jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/JDBCAwareInputStream.java
Index: JDBCAwareInputStream.java
===================================================================
RCS file: /home/cvs/jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/JDBCAwareInputStream.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JDBCAwareInputStream.java 14 Nov 2003 12:28:27 -0000 1.1
+++ JDBCAwareInputStream.java 26 Nov 2003 14:54:51 -0000 1.2
@@ -66,7 +66,9 @@
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.sql.Connection;
import java.sql.ResultSet;
+import java.sql.SQLException;
import java.sql.Statement;
/**
@@ -90,22 +92,24 @@
* input stream is told to close itself.
*/
private Statement stmt = null;
+ private ResultSet rs = null;
+ private Connection connection = null;
// ----------------------------------------------------------- Constructors
/**
- * Constructor.
- *
- * @param in the input stream used to answer all method calls
- * @param stmt the JDBC statement that should be closed, along with its
- * result set when the input stream is told to close itself
+ * Creates an input stream that closes a statmenet, a resultset and a \
connection + * when the stream itself is closed.
+ *
*/
- public JDBCAwareInputStream(InputStream in, Statement stmt) {
+ public JDBCAwareInputStream(InputStream in, Statement stmt, ResultSet rs, \
Connection connection) { super(in);
this.stmt = stmt;
+ this.rs = rs;
+ this.connection = connection;
}
@@ -113,28 +117,35 @@
/**
- * Overridden to close the associated JDBC statement together with the
+ * Overridden to close the associated JDBC statement, result set and \
connection together with the
* input stream.
*/
public void close() throws IOException {
- // FIXED guarantee that underlying stream gets closed
try {
- if (stmt != null) {
- stmt.close();
- ResultSet rs = stmt.getResultSet();
- if (rs != null) {
- rs.close();
- }
- stmt = null;
+ if (rs != null) {
+ rs.close();
}
- } catch (java.sql.SQLException sqle) {
- throw new IOException(sqle.getMessage());
+ } catch (SQLException e) {
+ throw new IOException(e.getMessage());
} finally {
- super.close();
+ try {
+ if (stmt != null) {
+ stmt.close();
+ }
+ } catch (SQLException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ try {
+ if (connection != null) {
+ connection.close();
+ }
+ } catch (SQLException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ super.close();
+ }
+ }
}
-
}
-
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic