You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ck...@apache.org on 2012/07/07 13:26:15 UTC
svn commit: r1358543 - in /jackrabbit/trunk/jackrabbit-core/src:
main/java/org/apache/jackrabbit/core/data/db/
main/java/org/apache/jackrabbit/core/util/db/
test/java/org/apache/jackrabbit/core/data/
Author: ckoell
Date: Sat Jul 7 11:26:15 2012
New Revision: 1358543
URL: http://svn.apache.org/viewvc?rev=1358543&view=rev
Log:
JCR-3377 DataStore Temp-Files will not be deleted as side effect of JCR-3318
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbDataStore.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/TempFileInputStream.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/StreamWrapper.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/TempFileInputStreamTest.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbDataStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbDataStore.java?rev=1358543&r1=1358542&r2=1358543&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbDataStore.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbDataStore.java Sat Jul 7 11:26:15 2012
@@ -347,7 +347,7 @@ public class DbDataStore implements Data
} else if (STORE_TEMP_FILE.equals(storeStream)) {
File temp = moveToTempFile(in);
long length = temp.length();
- wrapper = new StreamWrapper(new TempFileInputStream(temp), length);
+ wrapper = new StreamWrapper(new TempFileInputStream(temp, true), length);
} else {
throw new DataStoreException("Unsupported stream store algorithm: " + storeStream);
}
@@ -578,7 +578,7 @@ public class DbDataStore implements Data
} else if (copyWhenReading) {
// If we copy while reading, create a temp file and close the stream
File temp = moveToTempFile(stream);
- stream = new BufferedInputStream(new TempFileInputStream(temp));
+ stream = new BufferedInputStream(new TempFileInputStream(temp, false));
DbUtility.close(rs);
} else {
stream = new BufferedInputStream(stream);
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=1358543&r1=1358542&r2=1358543&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 Sat Jul 7 11:26:15 2012
@@ -39,6 +39,7 @@ public class TempFileInputStream extends
private final File file;
private boolean closed;
+ private boolean delayedResourceCleanup = true;
/**
* Copy the data to a file and close the input stream afterwards.
@@ -57,14 +58,17 @@ public class TempFileInputStream extends
/**
* Construct a new temporary file input stream.
- * The file is deleted if the input stream is closed or fully read.
+ * The file is deleted if the input stream is closed or fully read and
+ * delayedResourceCleanup was set to true. Otherwise you must call {@link #deleteFile()}.
* Deleting is only attempted once.
*
* @param file the temporary file
+ * @param delayedResourceCleanup
*/
- public TempFileInputStream(File file) throws FileNotFoundException {
+ public TempFileInputStream(File file, boolean delayedResourceCleanup) throws FileNotFoundException {
super(new BufferedInputStream(new FileInputStream(file)));
this.file = file;
+ this.delayedResourceCleanup = delayedResourceCleanup;
}
public File getFile() {
@@ -85,6 +89,9 @@ public class TempFileInputStream extends
public void close() throws IOException {
if (!closed) {
in.close();
+ if (!delayedResourceCleanup) {
+ deleteFile();
+ }
closed = true;
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/StreamWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/StreamWrapper.java?rev=1358543&r1=1358542&r2=1358543&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/StreamWrapper.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/StreamWrapper.java Sat Jul 7 11:26:15 2012
@@ -85,7 +85,7 @@ public class StreamWrapper {
TempFileInputStream tempFileInputStream = (TempFileInputStream) stream;
// Close it if it is not already closed ...
tempFileInputStream.close();
- stream = new TempFileInputStream(tempFileInputStream.getFile());
+ stream = new TempFileInputStream(tempFileInputStream.getFile(), true);
return true;
} catch (Exception e) {
log.warn("Failed to create a new TempFileInputStream", e);
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/TempFileInputStreamTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/TempFileInputStreamTest.java?rev=1358543&r1=1358542&r2=1358543&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/TempFileInputStreamTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/TempFileInputStreamTest.java Sat Jul 7 11:26:15 2012
@@ -33,7 +33,7 @@ public class TempFileInputStreamTest ext
public void testReadPastEOF() throws IOException {
File temp = File.createTempFile("test", null);
TempFileInputStream.writeToFileAndClose(new ByteArrayInputStream(new byte[1]), temp);
- TempFileInputStream in = new TempFileInputStream(temp);
+ TempFileInputStream in = new TempFileInputStream(temp, false);
assertEquals(0, in.read());
assertEquals(-1, in.read());
assertEquals(-1, in.read());
@@ -44,7 +44,7 @@ public class TempFileInputStreamTest ext
public void testMarkReset() throws IOException {
File temp = File.createTempFile("test", null);
TempFileInputStream.writeToFileAndClose(new ByteArrayInputStream(new byte[10]), temp);
- InputStream in = new BufferedInputStream(new TempFileInputStream(temp));
+ InputStream in = new BufferedInputStream(new TempFileInputStream(temp, false));
in.mark(100);
for (int i = 0; i < 10; i++) {
assertEquals(0, in.read());