Refactor package structure and rename classes
- Rename encryption/ to stream/ (IOutputStreamEnhancer → OutputStreamEnhancer, IInputStreamEnhancer → InputStreamEnhancer) - Rename PostBoxZipFileWriter → SplitZipWriter - Simplify test package from illgner.ch.jobs.postboxbulk.service to illgner.ch.createzip
This commit is contained in:
parent
384617739a
commit
d18c70a4e8
4 changed files with 19 additions and 26 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
package illgner.ch.createzip;
|
package illgner.ch.createzip;
|
||||||
|
|
||||||
import illgner.ch.encryption.IOutputStreamEnhancer;
|
import illgner.ch.stream.OutputStreamEnhancer;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.io.output.CountingOutputStream;
|
import org.apache.commons.io.output.CountingOutputStream;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -30,9 +30,9 @@ import static java.nio.file.attribute.PosixFilePermission.OTHERS_READ;
|
||||||
import static java.nio.file.attribute.PosixFilePermission.OWNER_READ;
|
import static java.nio.file.attribute.PosixFilePermission.OWNER_READ;
|
||||||
import static java.nio.file.attribute.PosixFilePermission.OWNER_WRITE;
|
import static java.nio.file.attribute.PosixFilePermission.OWNER_WRITE;
|
||||||
|
|
||||||
public class PostBoxZipFileWriter implements Closeable {
|
public class SplitZipWriter implements Closeable {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(PostBoxZipFileWriter.class);
|
private static final Logger LOG = LoggerFactory.getLogger(SplitZipWriter.class);
|
||||||
|
|
||||||
private static final Set<PosixFilePermission> ZIP_FILE_PERMISSIONS = EnumSet.of(OWNER_READ, OWNER_WRITE, GROUP_READ, OTHERS_READ);
|
private static final Set<PosixFilePermission> ZIP_FILE_PERMISSIONS = EnumSet.of(OWNER_READ, OWNER_WRITE, GROUP_READ, OTHERS_READ);
|
||||||
|
|
||||||
|
|
@ -41,7 +41,7 @@ public class PostBoxZipFileWriter implements Closeable {
|
||||||
private final int chunkSize;
|
private final int chunkSize;
|
||||||
private final int bufferSize;
|
private final int bufferSize;
|
||||||
private final ZipResult zipResult;
|
private final ZipResult zipResult;
|
||||||
IOutputStreamEnhancer outputStreamEnhancer;
|
OutputStreamEnhancer outputStreamEnhancer;
|
||||||
|
|
||||||
private ZipOutputStream zipOutputStream;
|
private ZipOutputStream zipOutputStream;
|
||||||
|
|
||||||
|
|
@ -50,7 +50,7 @@ public class PostBoxZipFileWriter implements Closeable {
|
||||||
private File actualZipFile;
|
private File actualZipFile;
|
||||||
private CountingOutputStream countingOutputStream;
|
private CountingOutputStream countingOutputStream;
|
||||||
|
|
||||||
public PostBoxZipFileWriter(Path destinationDir, String baseName, int chunkSize, int bufferSize, IOutputStreamEnhancer outputStreamEnhancer) {
|
public SplitZipWriter(Path destinationDir, String baseName, int chunkSize, int bufferSize, OutputStreamEnhancer outputStreamEnhancer) {
|
||||||
this.destinationDir = destinationDir;
|
this.destinationDir = destinationDir;
|
||||||
this.baseName = baseName;
|
this.baseName = baseName;
|
||||||
this.chunkSize = chunkSize;
|
this.chunkSize = chunkSize;
|
||||||
6
src/main/java/illgner/ch/encryption/IInputStreamEnhancer.java → src/main/java/illgner/ch/stream/InputStreamEnhancer.java
Executable file → Normal file
6
src/main/java/illgner/ch/encryption/IInputStreamEnhancer.java → src/main/java/illgner/ch/stream/InputStreamEnhancer.java
Executable file → Normal file
|
|
@ -1,4 +1,4 @@
|
||||||
package illgner.ch.encryption;
|
package illgner.ch.stream;
|
||||||
|
|
||||||
import javax.crypto.NoSuchPaddingException;
|
import javax.crypto.NoSuchPaddingException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
@ -8,8 +8,6 @@ import java.security.InvalidKeyException;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.security.NoSuchProviderException;
|
import java.security.NoSuchProviderException;
|
||||||
|
|
||||||
public interface IInputStreamEnhancer {
|
public interface InputStreamEnhancer {
|
||||||
|
|
||||||
InputStream enhance(InputStream inputStream) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, IOException, InvalidAlgorithmParameterException, NoSuchProviderException;
|
InputStream enhance(InputStream inputStream) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, IOException, InvalidAlgorithmParameterException, NoSuchProviderException;
|
||||||
|
|
||||||
}
|
}
|
||||||
9
src/main/java/illgner/ch/encryption/IOutputStreamEnhancer.java → src/main/java/illgner/ch/stream/OutputStreamEnhancer.java
Executable file → Normal file
9
src/main/java/illgner/ch/encryption/IOutputStreamEnhancer.java → src/main/java/illgner/ch/stream/OutputStreamEnhancer.java
Executable file → Normal file
|
|
@ -1,4 +1,4 @@
|
||||||
package illgner.ch.encryption;
|
package illgner.ch.stream;
|
||||||
|
|
||||||
import javax.crypto.NoSuchPaddingException;
|
import javax.crypto.NoSuchPaddingException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
@ -8,11 +8,6 @@ import java.security.InvalidKeyException;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.security.NoSuchProviderException;
|
import java.security.NoSuchProviderException;
|
||||||
|
|
||||||
public interface IOutputStreamEnhancer {
|
public interface OutputStreamEnhancer {
|
||||||
/**
|
|
||||||
* This method enhances the given input stream {@link OutputStream} wrapping with the additional functionality (in our case with encryption)
|
|
||||||
* @param outputStream the original stream {@link OutputStream} to be enhanced.
|
|
||||||
* @return A new {@link OutputStream} that wraps the functionality to input stream.
|
|
||||||
*/
|
|
||||||
OutputStream enhance(OutputStream outputStream) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, IOException, InvalidAlgorithmParameterException, NoSuchProviderException;
|
OutputStream enhance(OutputStream outputStream) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, IOException, InvalidAlgorithmParameterException, NoSuchProviderException;
|
||||||
}
|
}
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package illgner.ch.jobs.postboxbulk.service;
|
package illgner.ch.createzip;
|
||||||
|
|
||||||
import illgner.ch.createzip.PostBoxZipFileWriter;
|
import illgner.ch.createzip.SplitZipWriter;
|
||||||
import illgner.ch.createzip.ZipResult;
|
import illgner.ch.createzip.ZipResult;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
@ -35,7 +35,7 @@ import static org.hamcrest.io.FileMatchers.aFileNamed;
|
||||||
import static org.hamcrest.io.FileMatchers.anExistingFile;
|
import static org.hamcrest.io.FileMatchers.anExistingFile;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
class PostBoxZipFileWriterTest {
|
class SplitZipWriterTest {
|
||||||
|
|
||||||
private static final Path DESTINATION_DIR = Paths.get("./destination");
|
private static final Path DESTINATION_DIR = Paths.get("./destination");
|
||||||
private static final int ONE_BYTE = 1024;
|
private static final int ONE_BYTE = 1024;
|
||||||
|
|
@ -63,7 +63,7 @@ class PostBoxZipFileWriterTest {
|
||||||
ZipResult zipResult;
|
ZipResult zipResult;
|
||||||
String outputFileName = RandomStringUtils.randomAlphanumeric(10);
|
String outputFileName = RandomStringUtils.randomAlphanumeric(10);
|
||||||
String inputFileName = "singleFileSmallerThanChunkSizeToOneZip.txt";
|
String inputFileName = "singleFileSmallerThanChunkSizeToOneZip.txt";
|
||||||
PostBoxZipFileWriter postBoxZipFileWriter = new PostBoxZipFileWriter(
|
SplitZipWriter postBoxZipFileWriter = new SplitZipWriter(
|
||||||
DESTINATION_DIR, outputFileName, ZIP_CHUNK_SIZE_IN_BYTE, ZIP_BUFFER_SIZE_IN_BYTE, (OutputStream outputStream) -> outputStream);
|
DESTINATION_DIR, outputFileName, ZIP_CHUNK_SIZE_IN_BYTE, ZIP_BUFFER_SIZE_IN_BYTE, (OutputStream outputStream) -> outputStream);
|
||||||
try (postBoxZipFileWriter) {
|
try (postBoxZipFileWriter) {
|
||||||
postBoxZipFileWriter.write(new ByteArrayInputStream(fileSimpleContent), inputFileName);
|
postBoxZipFileWriter.write(new ByteArrayInputStream(fileSimpleContent), inputFileName);
|
||||||
|
|
@ -92,7 +92,7 @@ class PostBoxZipFileWriterTest {
|
||||||
ZipResult zipResult;
|
ZipResult zipResult;
|
||||||
String outputFileName = RandomStringUtils.randomAlphanumeric(10);
|
String outputFileName = RandomStringUtils.randomAlphanumeric(10);
|
||||||
String inputFileName = "singleFileGreaterThanChunkSizeToOneZip.txt";
|
String inputFileName = "singleFileGreaterThanChunkSizeToOneZip.txt";
|
||||||
PostBoxZipFileWriter postBoxZipFileWriter = new PostBoxZipFileWriter(
|
SplitZipWriter postBoxZipFileWriter = new SplitZipWriter(
|
||||||
DESTINATION_DIR, outputFileName, ZIP_CHUNK_SIZE_IN_BYTE, ZIP_BUFFER_SIZE_IN_BYTE, (OutputStream outputStream) -> outputStream);
|
DESTINATION_DIR, outputFileName, ZIP_CHUNK_SIZE_IN_BYTE, ZIP_BUFFER_SIZE_IN_BYTE, (OutputStream outputStream) -> outputStream);
|
||||||
try (postBoxZipFileWriter) {
|
try (postBoxZipFileWriter) {
|
||||||
postBoxZipFileWriter.write(new ByteArrayInputStream(fileSimpleContent), inputFileName);
|
postBoxZipFileWriter.write(new ByteArrayInputStream(fileSimpleContent), inputFileName);
|
||||||
|
|
@ -125,7 +125,7 @@ class PostBoxZipFileWriterTest {
|
||||||
String inputFileNameTwo = "multipleFileSmallerThanChunkSizeToSingleZip2.txt";
|
String inputFileNameTwo = "multipleFileSmallerThanChunkSizeToSingleZip2.txt";
|
||||||
|
|
||||||
ZipResult zipResult;
|
ZipResult zipResult;
|
||||||
PostBoxZipFileWriter postBoxZipFileWriter = new PostBoxZipFileWriter(
|
SplitZipWriter postBoxZipFileWriter = new SplitZipWriter(
|
||||||
DESTINATION_DIR, outputFileName, ZIP_CHUNK_SIZE_IN_BYTE, ZIP_BUFFER_SIZE_IN_BYTE, (OutputStream outputStream) -> outputStream);
|
DESTINATION_DIR, outputFileName, ZIP_CHUNK_SIZE_IN_BYTE, ZIP_BUFFER_SIZE_IN_BYTE, (OutputStream outputStream) -> outputStream);
|
||||||
try (postBoxZipFileWriter) {
|
try (postBoxZipFileWriter) {
|
||||||
postBoxZipFileWriter.write(new ByteArrayInputStream(firstFile), inputFileNameOne);
|
postBoxZipFileWriter.write(new ByteArrayInputStream(firstFile), inputFileNameOne);
|
||||||
|
|
@ -164,7 +164,7 @@ class PostBoxZipFileWriterTest {
|
||||||
String inputFileNameTwo = "multipleFilesTogetherGreaterThanChunkSizeToSingleZip2.txt";
|
String inputFileNameTwo = "multipleFilesTogetherGreaterThanChunkSizeToSingleZip2.txt";
|
||||||
|
|
||||||
ZipResult zipResult;
|
ZipResult zipResult;
|
||||||
PostBoxZipFileWriter postBoxZipFileWriter = new PostBoxZipFileWriter(
|
SplitZipWriter postBoxZipFileWriter = new SplitZipWriter(
|
||||||
DESTINATION_DIR, outputFileName, ZIP_CHUNK_SIZE_IN_BYTE, ZIP_BUFFER_SIZE_IN_BYTE, (OutputStream outputStream) -> outputStream);
|
DESTINATION_DIR, outputFileName, ZIP_CHUNK_SIZE_IN_BYTE, ZIP_BUFFER_SIZE_IN_BYTE, (OutputStream outputStream) -> outputStream);
|
||||||
try (postBoxZipFileWriter) {
|
try (postBoxZipFileWriter) {
|
||||||
postBoxZipFileWriter.write(new ByteArrayInputStream(firstFile), inputFileNameOne);
|
postBoxZipFileWriter.write(new ByteArrayInputStream(firstFile), inputFileNameOne);
|
||||||
|
|
@ -207,7 +207,7 @@ class PostBoxZipFileWriterTest {
|
||||||
String[] originalFileNames = {"multipleBigFilesToMultipleZip1.txt", "multipleBigFilesToMultipleZip2.txt", "multipleBigFilesToMultipleZip3.txt"};
|
String[] originalFileNames = {"multipleBigFilesToMultipleZip1.txt", "multipleBigFilesToMultipleZip2.txt", "multipleBigFilesToMultipleZip3.txt"};
|
||||||
String outputFileName = RandomStringUtils.randomAlphanumeric(10);
|
String outputFileName = RandomStringUtils.randomAlphanumeric(10);
|
||||||
|
|
||||||
PostBoxZipFileWriter postBoxZipFileWriter = new PostBoxZipFileWriter(
|
SplitZipWriter postBoxZipFileWriter = new SplitZipWriter(
|
||||||
DESTINATION_DIR, outputFileName, bigChuckSize, bigBufferSize, (OutputStream outputStream) -> outputStream);
|
DESTINATION_DIR, outputFileName, bigChuckSize, bigBufferSize, (OutputStream outputStream) -> outputStream);
|
||||||
try (postBoxZipFileWriter) {
|
try (postBoxZipFileWriter) {
|
||||||
postBoxZipFileWriter.write(new ByteArrayInputStream(firstFile), originalFileNames[0]);
|
postBoxZipFileWriter.write(new ByteArrayInputStream(firstFile), originalFileNames[0]);
|
||||||
|
|
@ -256,7 +256,7 @@ class PostBoxZipFileWriterTest {
|
||||||
// first implementation crashed with an OutOfMemoryException while copying an 50MB Stream,
|
// first implementation crashed with an OutOfMemoryException while copying an 50MB Stream,
|
||||||
// so we added a test for this
|
// so we added a test for this
|
||||||
|
|
||||||
try (PostBoxZipFileWriter zipFileWriter = new PostBoxZipFileWriter(
|
try (SplitZipWriter zipFileWriter = new SplitZipWriter(
|
||||||
DESTINATION_DIR, "testBigMulti", 100 * 1000 * 1000, ZIP_BUFFER_SIZE_IN_BYTE, (OutputStream outputStream) -> outputStream)) {
|
DESTINATION_DIR, "testBigMulti", 100 * 1000 * 1000, ZIP_BUFFER_SIZE_IN_BYTE, (OutputStream outputStream) -> outputStream)) {
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
byte[] content = RandomStringUtils.randomAlphanumeric(50 * 1000 * 1000).getBytes();
|
byte[] content = RandomStringUtils.randomAlphanumeric(50 * 1000 * 1000).getBytes();
|
||||||
|
|
@ -274,7 +274,7 @@ class PostBoxZipFileWriterTest {
|
||||||
String outputFileName = RandomStringUtils.randomAlphanumeric(10);
|
String outputFileName = RandomStringUtils.randomAlphanumeric(10);
|
||||||
|
|
||||||
ZipResult zipResult;
|
ZipResult zipResult;
|
||||||
try (PostBoxZipFileWriter postBoxZipFileWriter = new PostBoxZipFileWriter(DESTINATION_DIR, outputFileName, 1000, 2048, (OutputStream outputStream) -> outputStream)) {
|
try (SplitZipWriter postBoxZipFileWriter = new SplitZipWriter(DESTINATION_DIR, outputFileName, 1000, 2048, (OutputStream outputStream) -> outputStream)) {
|
||||||
postBoxZipFileWriter.write(new ByteArrayInputStream(content1), "file1");
|
postBoxZipFileWriter.write(new ByteArrayInputStream(content1), "file1");
|
||||||
postBoxZipFileWriter.write(new ByteArrayInputStream(content2), "file2");
|
postBoxZipFileWriter.write(new ByteArrayInputStream(content2), "file2");
|
||||||
postBoxZipFileWriter.write(new ByteArrayInputStream(content3), "file3");
|
postBoxZipFileWriter.write(new ByteArrayInputStream(content3), "file3");
|
||||||
Loading…
Reference in a new issue