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:
fillg1 2026-04-11 20:39:34 +02:00
commit d18c70a4e8
4 changed files with 19 additions and 26 deletions

View file

@ -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;

View 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;
} }

View 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;
} }

View file

@ -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");