mirror of https://github.com/apache/nifi.git
NIFI-3276 - FileSystemRepository.getPath() only check exists if necessary
This closes #1388.
This commit is contained in:
parent
273e69f2cb
commit
474df053d6
|
@ -498,11 +498,11 @@ public class FileSystemRepository implements ContentRepository {
|
||||||
// If the data does not exist, create a Path that points to where the data would exist in the archive directory.
|
// If the data does not exist, create a Path that points to where the data would exist in the archive directory.
|
||||||
if (!Files.exists(resolvedPath)) {
|
if (!Files.exists(resolvedPath)) {
|
||||||
resolvedPath = getArchivePath(claim.getResourceClaim());
|
resolvedPath = getArchivePath(claim.getResourceClaim());
|
||||||
}
|
|
||||||
|
|
||||||
if (verifyExists && !Files.exists(resolvedPath)) {
|
if (verifyExists && !Files.exists(resolvedPath)) {
|
||||||
throw new ContentNotFoundException(claim);
|
throw new ContentNotFoundException(claim);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return resolvedPath;
|
return resolvedPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.nifi.controller.repository;
|
package org.apache.nifi.controller.repository;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
@ -400,6 +401,38 @@ public class TestFileSystemRepository {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testReadWithContentArchived() throws IOException {
|
||||||
|
final ContentClaim claim = repository.create(true);
|
||||||
|
final Path path = getPath(claim);
|
||||||
|
Files.deleteIfExists(path);
|
||||||
|
|
||||||
|
Path archivePath = FileSystemRepository.getArchivePath(path);
|
||||||
|
|
||||||
|
Files.createDirectories(archivePath.getParent());
|
||||||
|
final byte[] data = "The quick brown fox jumps over the lazy dog".getBytes();
|
||||||
|
try (final OutputStream out = Files.newOutputStream(archivePath, StandardOpenOption.WRITE, StandardOpenOption.CREATE)) {
|
||||||
|
out.write(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
try (final InputStream inStream = repository.read(claim)) {
|
||||||
|
assertNotNull(inStream);
|
||||||
|
final byte[] dataRead = readFully(inStream, data.length);
|
||||||
|
assertArrayEquals(data, dataRead);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = ContentNotFoundException.class)
|
||||||
|
public void testReadWithNoContentArchived() throws IOException {
|
||||||
|
final ContentClaim claim = repository.create(true);
|
||||||
|
final Path path = getPath(claim);
|
||||||
|
Files.deleteIfExists(path);
|
||||||
|
|
||||||
|
Path archivePath = FileSystemRepository.getArchivePath(path);
|
||||||
|
Files.deleteIfExists(archivePath);
|
||||||
|
repository.read(claim).close();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWrite() throws IOException {
|
public void testWrite() throws IOException {
|
||||||
final ContentClaim claim = repository.create(true);
|
final ContentClaim claim = repository.create(true);
|
||||||
|
|
Loading…
Reference in New Issue