Deprecate TemporaryBuffer.LocalFile without parent directory

Encourage callers to explicitly name a directory to hold any
overflow data. Call sites have more information about what is
going into the buffer and how it should be protected at the
filesystem level than just throwing content to the system wide
temporary directory.

Callers that still really don't care (or need to care) can pass
null for the File argument to have the system directory used.

Change-Id: I89009bbee49d3850d42cd82c2c462e51043acda0
This commit is contained in:
Shawn Pearce 2014-11-25 09:53:57 -08:00
parent 4206ea43b8
commit 61b632ee5a
3 changed files with 21 additions and 14 deletions

View File

@ -216,7 +216,7 @@ void read() throws IOException, InterruptedException {
buf.destroy();
}
commitId = line.substring("commit ".length());
buf = new TemporaryBuffer.LocalFile();
buf = new TemporaryBuffer.LocalFile(null);
} else if (buf != null) {
buf.write(line.getBytes("ISO-8859-1"));
buf.write('\n');

View File

@ -59,7 +59,7 @@
public class TemporaryBufferTest {
@Test
public void testEmpty() throws IOException {
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
try {
b.close();
assertEquals(0, b.length());
@ -73,7 +73,7 @@ public void testEmpty() throws IOException {
@Test
public void testOneByte() throws IOException {
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
final byte test = (byte) new TestRng(getName()).nextInt();
try {
b.write(test);
@ -100,7 +100,7 @@ public void testOneByte() throws IOException {
@Test
public void testOneBlock_BulkWrite() throws IOException {
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
final byte[] test = new TestRng(getName())
.nextBytes(TemporaryBuffer.Block.SZ);
try {
@ -131,7 +131,7 @@ public void testOneBlock_BulkWrite() throws IOException {
@Test
public void testOneBlockAndHalf_BulkWrite() throws IOException {
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
final byte[] test = new TestRng(getName())
.nextBytes(TemporaryBuffer.Block.SZ * 3 / 2);
try {
@ -162,7 +162,7 @@ public void testOneBlockAndHalf_BulkWrite() throws IOException {
@Test
public void testOneBlockAndHalf_SingleWrite() throws IOException {
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
final byte[] test = new TestRng(getName())
.nextBytes(TemporaryBuffer.Block.SZ * 3 / 2);
try {
@ -191,7 +191,7 @@ public void testOneBlockAndHalf_SingleWrite() throws IOException {
@Test
public void testOneBlockAndHalf_Copy() throws IOException {
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
final byte[] test = new TestRng(getName())
.nextBytes(TemporaryBuffer.Block.SZ * 3 / 2);
try {
@ -221,7 +221,7 @@ public void testOneBlockAndHalf_Copy() throws IOException {
@Test
public void testLarge_SingleWrite() throws IOException {
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
final byte[] test = new TestRng(getName())
.nextBytes(TemporaryBuffer.DEFAULT_IN_CORE_LIMIT * 3);
try {
@ -263,7 +263,7 @@ public void testInCoreInputStream() throws IOException {
@Test
public void testInCoreLimit_SwitchOnAppendByte() throws IOException {
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
final byte[] test = new TestRng(getName())
.nextBytes(TemporaryBuffer.DEFAULT_IN_CORE_LIMIT + 1);
try {
@ -292,7 +292,7 @@ public void testInCoreLimit_SwitchOnAppendByte() throws IOException {
@Test
public void testInCoreLimit_SwitchBeforeAppendByte() throws IOException {
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
final byte[] test = new TestRng(getName())
.nextBytes(TemporaryBuffer.DEFAULT_IN_CORE_LIMIT * 3);
try {
@ -321,7 +321,7 @@ public void testInCoreLimit_SwitchBeforeAppendByte() throws IOException {
@Test
public void testInCoreLimit_SwitchOnCopy() throws IOException {
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
final byte[] test = new TestRng(getName())
.nextBytes(TemporaryBuffer.DEFAULT_IN_CORE_LIMIT * 2);
try {
@ -354,7 +354,7 @@ public void testInCoreLimit_SwitchOnCopy() throws IOException {
@Test
public void testDestroyWhileOpen() throws IOException {
@SuppressWarnings("resource" /* java 7 */)
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
try {
b.write(new TestRng(getName())
.nextBytes(TemporaryBuffer.DEFAULT_IN_CORE_LIMIT * 2));
@ -365,7 +365,7 @@ public void testDestroyWhileOpen() throws IOException {
@Test
public void testRandomWrites() throws IOException {
final TemporaryBuffer b = new TemporaryBuffer.LocalFile();
final TemporaryBuffer b = new TemporaryBuffer.LocalFile(null);
final TestRng rng = new TestRng(getName());
final int max = TemporaryBuffer.DEFAULT_IN_CORE_LIMIT * 2;
final byte[] expect = new byte[max];

View File

@ -361,7 +361,12 @@ public static class LocalFile extends TemporaryBuffer {
*/
private File onDiskFile;
/** Create a new temporary buffer. */
/**
* Create a new temporary buffer.
*
* @deprecated Use the {@code File} overload to supply a directory.
*/
@Deprecated
public LocalFile() {
this(null, DEFAULT_IN_CORE_LIMIT);
}
@ -372,7 +377,9 @@ public LocalFile() {
* @param inCoreLimit
* maximum number of bytes to store in memory. Storage beyond
* this limit will use the local file.
* @deprecated Use the {@code File,int} overload to supply a directory.
*/
@Deprecated
public LocalFile(final int inCoreLimit) {
this(null, inCoreLimit);
}