You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2009/02/03 11:11:42 UTC

svn commit: r740262 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db: DbInputStream.java TempFileInputStream.java

Author: thomasm
Date: Tue Feb  3 10:11:42 2009
New Revision: 740262

URL: http://svn.apache.org/viewvc?rev=740262&view=rev
Log:
JCR-1934 DbDataStore: delete temporary files using finalize()

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbInputStream.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/TempFileInputStream.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbInputStream.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbInputStream.java?rev=740262&r1=740261&r2=740262&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbInputStream.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbInputStream.java Tue Feb  3 10:11:42 2009
@@ -18,9 +18,9 @@
 
 import java.io.EOFException;
 import java.io.IOException;
-import java.io.InputStream;
 import java.sql.ResultSet;
 
+import org.apache.commons.io.input.AutoCloseInputStream;
 import org.apache.jackrabbit.core.data.DataIdentifier;
 import org.apache.jackrabbit.core.data.DataStoreException;
 import org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager;
@@ -28,19 +28,17 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * This class represents an input stream backed by a database. It allows the
- * stream to be used by keeping the database objects open until the stream is
- * closed. When the stream is finished or closed, then the database objects are
- * freed.
+ * This class represents an input stream backed by a database. The database
+ * objects are only acquired when reading from the stream, and stay open until
+ * the stream is closed, fully read, or garbage collected.
  */
-public class DbInputStream extends InputStream {
+public class DbInputStream extends AutoCloseInputStream {
 
     private static Logger log = LoggerFactory.getLogger(DbInputStream.class);
 
     protected DbDataStore store;
     protected DataIdentifier identifier;
     protected boolean endOfStream;
-    protected InputStream in;
     
     protected ConnectionRecoveryManager conn;
     protected ResultSet rs;
@@ -54,6 +52,7 @@
      * @param identifier the data identifier
      */
     protected DbInputStream(DbDataStore store, DataIdentifier identifier) {
+        super(null);
         this.store = store;
         this.identifier = identifier;
     }

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/TempFileInputStream.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/TempFileInputStream.java?rev=740262&r1=740261&r2=740262&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/TempFileInputStream.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/TempFileInputStream.java Tue Feb  3 10:11:42 2009
@@ -26,14 +26,15 @@
 import java.io.OutputStream;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.input.AutoCloseInputStream;
 
 /**
- * An input stream from a temp file that self-destructs when fully read or closed.
+ * An input stream from a temporary file. The file is deleted when the stream is
+ * closed, fully read, or garbage collected.
  */
-public class TempFileInputStream extends InputStream {
+public class TempFileInputStream extends AutoCloseInputStream {
 
     private final File file;
-    private final InputStream in;
     private boolean closed;
 
     /**
@@ -59,8 +60,8 @@
      * @param file the temporary file
      */
     public TempFileInputStream(File file) throws FileNotFoundException {
+        super(new BufferedInputStream(new FileInputStream(file)));
         this.file = file;
-        in = new BufferedInputStream(new FileInputStream(file));
     }
 
     private int closeIfEOF(int read) throws IOException {