diff --git a/pom.xml b/pom.xml index 5d73f68..c5e0f4f 100644 --- a/pom.xml +++ b/pom.xml @@ -30,8 +30,6 @@ UTF-8 - 11 - 11 @@ -55,9 +53,10 @@ test - org.projectlombok - lombok - 1.18.20 + io.soabase.record-builder + record-builder-core + 1.19 + provided org.jetbrains @@ -88,21 +87,24 @@ - src/main/lombok - src/test/lombok + org.apache.maven.plugins maven-compiler-plugin - 3.8.0 - + 3.8.1 + 16 + 16 - org.projectlombok - lombok - 1.18.20 + io.soabase.record-builder + record-builder-processor + 1.19 + + io.soabase.recordbuilder.processor.RecordBuilderProcessor + @@ -118,10 +120,6 @@ maven-resources-plugin 3.0.2 - - maven-compiler-plugin - 3.8.0 - maven-surefire-plugin 2.22.1 diff --git a/src/main/lombok/org/warp/filesponge/DataBlock.java b/src/main/java/org/warp/filesponge/DataBlock.java similarity index 100% rename from src/main/lombok/org/warp/filesponge/DataBlock.java rename to src/main/java/org/warp/filesponge/DataBlock.java diff --git a/src/main/lombok/org/warp/filesponge/DiskCache.java b/src/main/java/org/warp/filesponge/DiskCache.java similarity index 92% rename from src/main/lombok/org/warp/filesponge/DiskCache.java rename to src/main/java/org/warp/filesponge/DiskCache.java index 1bebe4a..77b325a 100644 --- a/src/main/lombok/org/warp/filesponge/DiskCache.java +++ b/src/main/java/org/warp/filesponge/DiskCache.java @@ -32,14 +32,11 @@ import it.cavallium.dbengine.database.LLDictionaryResultType; import it.cavallium.dbengine.database.LLKeyValueDatabase; import it.cavallium.dbengine.database.UpdateMode; import it.cavallium.dbengine.database.UpdateReturnMode; -import it.cavallium.dbengine.database.disk.LLLocalDictionary.ReleasableSlice; import it.unimi.dsi.fastutil.booleans.BooleanArrayList; import java.nio.ByteBuffer; import java.util.Arrays; import java.util.List; import java.util.Optional; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; import org.jetbrains.annotations.Nullable; import org.warp.filesponge.DiskMetadata.DiskMetadataSerializer; import reactor.core.publisher.Flux; @@ -86,8 +83,8 @@ public class DiskCache implements URLsDiskHandler, URLsWriter { return oldValue; } else { return diskMetadataSerializer.serialize(new DiskMetadata( - metadata.getSize(), - BooleanArrayList.wrap(new boolean[DiskMetadata.getBlocksCount(metadata.getSize(), BLOCK_SIZE)]) + metadata.size(), + BooleanArrayList.wrap(new boolean[DiskMetadata.getBlocksCount(metadata.size(), BLOCK_SIZE)]) )); } }, UpdateReturnMode.NOTHING), @@ -118,10 +115,10 @@ public class DiskCache implements URLsDiskHandler, URLsWriter { @Nullable DiskMetadata result; if (prevBytes != null) { DiskMetadata prevMeta = diskMetadataSerializer.deserialize(prevBytes); - if (!prevMeta.getDownloadedBlocks().getBoolean(dataBlock.getId())) { - BooleanArrayList bal = prevMeta.getDownloadedBlocks().clone(); + if (!prevMeta.downloadedBlocks().getBoolean(dataBlock.getId())) { + BooleanArrayList bal = prevMeta.downloadedBlocks().clone(); bal.set(dataBlock.getId(), true); - result = new DiskMetadata(prevMeta.getSize(), bal); + result = new DiskMetadata(prevMeta.size(), bal); } else { result = prevMeta; } @@ -144,7 +141,7 @@ public class DiskCache implements URLsDiskHandler, URLsWriter { public Flux requestContent(URL url) { return requestDiskMetadata(url) .filter(DiskMetadata::isDownloadedFully) - .flatMapMany(meta -> Flux.fromIterable(meta.getDownloadedBlocks()) + .flatMapMany(meta -> Flux.fromIterable(meta.downloadedBlocks()) .index() // Get only downloaded blocks .filter(Tuple2::getT2) @@ -164,8 +161,8 @@ public class DiskCache implements URLsDiskHandler, URLsWriter { try { int blockOffset = getBlockOffset(blockId); int blockLength = data.readableBytes(); - if (blockOffset + blockLength >= meta.getSize()) { - if (blockOffset + blockLength > meta.getSize()) { + if (blockOffset + blockLength >= meta.size()) { + if (blockOffset + blockLength > meta.size()) { throw new IllegalStateException("Overflowed data size"); } } else { diff --git a/src/main/lombok/org/warp/filesponge/DiskMetadata.java b/src/main/java/org/warp/filesponge/DiskMetadata.java similarity index 75% rename from src/main/lombok/org/warp/filesponge/DiskMetadata.java rename to src/main/java/org/warp/filesponge/DiskMetadata.java index 24ecf9e..db1a21a 100644 --- a/src/main/lombok/org/warp/filesponge/DiskMetadata.java +++ b/src/main/java/org/warp/filesponge/DiskMetadata.java @@ -29,39 +29,30 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; -import lombok.Data; -import lombok.SneakyThrows; +import java.io.IOException; +import org.apache.commons.lang3.SerializationException; import org.jetbrains.annotations.NotNull; -import org.warp.filesponge.DiskMetadata.DiskMetadataSerializer; -@Data -public class DiskMetadata { - - /** - * -1 = unknown size - */ - private final int size; - - private final BooleanArrayList downloadedBlocks; - - private Boolean downloadedFully; +/** + * size -1 = unknown size + */ +public record DiskMetadata(int size, BooleanArrayList downloadedBlocks) { public boolean isDownloadedFully() { - if (downloadedFully == null) { - // Ensure blocks count is valid by calling getBlocksCount() - getBlocksCount(); - // It's fully downloaded if every block is true - downloadedFully = !this.getDownloadedBlocks().contains(false); - } - return downloadedFully; + boolean downloadedFullyVal; + // Ensure blocks count is valid by calling getBlocksCount() + getBlocksCount(); + // It's fully downloaded if every block is true + downloadedFullyVal = !this.downloadedBlocks().contains(false); + return downloadedFullyVal; } private int getBlocksCount() { var expectedBlocksCount = getBlocksCount(size, FileSponge.BLOCK_SIZE); - if (this.getDownloadedBlocks().size() != expectedBlocksCount) { + if (this.downloadedBlocks.size() != expectedBlocksCount) { throw new IllegalStateException( - "Blocks array length (" + this.getDownloadedBlocks().size() - + ") != expected blocks count (" + expectedBlocksCount + ")"); + "Blocks array length (" + this.downloadedBlocks().size() + ") != expected blocks count (" + + expectedBlocksCount + ")"); } return expectedBlocksCount; } @@ -81,8 +72,7 @@ public class DiskMetadata { public DiskMetadataSerializer(ByteBufAllocator allocator) { this.allocator = allocator; } - - @SneakyThrows + @Override public @NotNull DiskMetadata deserialize(@NotNull ByteBuf serialized) { try { @@ -95,24 +85,27 @@ public class DiskMetadata { downloadedBlocks.add(dis.readBoolean()); } return new DiskMetadata(size, downloadedBlocks); + } catch (IOException e) { + throw new SerializationException(e); } finally { serialized.release(); } } - @SneakyThrows @Override public @NotNull ByteBuf serialize(@NotNull DiskMetadata deserialized) { ByteBuf buffer = allocator.buffer(); try (var bos = new ByteBufOutputStream(buffer)) { try (var dos = new DataOutputStream(bos)) { - dos.writeInt(deserialized.getSize()); + dos.writeInt(deserialized.size()); deserialized.getBlocksCount(); - for (boolean downloadedBlock : deserialized.getDownloadedBlocks()) { + for (boolean downloadedBlock : deserialized.downloadedBlocks) { dos.writeBoolean(downloadedBlock); } } return buffer; + } catch (IOException e) { + throw new SerializationException(e); } } diff --git a/src/main/lombok/org/warp/filesponge/FileSponge.java b/src/main/java/org/warp/filesponge/FileSponge.java similarity index 98% rename from src/main/lombok/org/warp/filesponge/FileSponge.java rename to src/main/java/org/warp/filesponge/FileSponge.java index 2daf454..78fe763 100644 --- a/src/main/lombok/org/warp/filesponge/FileSponge.java +++ b/src/main/java/org/warp/filesponge/FileSponge.java @@ -18,7 +18,6 @@ package org.warp.filesponge; -import it.cavallium.dbengine.database.disk.LLLocalDictionary.ReleasableSlice; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicBoolean; diff --git a/src/main/lombok/org/warp/filesponge/FileSpongeUtils.java b/src/main/java/org/warp/filesponge/FileSpongeUtils.java similarity index 100% rename from src/main/lombok/org/warp/filesponge/FileSpongeUtils.java rename to src/main/java/org/warp/filesponge/FileSpongeUtils.java diff --git a/src/main/lombok/org/warp/filesponge/Metadata.java b/src/main/java/org/warp/filesponge/Metadata.java similarity index 88% rename from src/main/lombok/org/warp/filesponge/Metadata.java rename to src/main/java/org/warp/filesponge/Metadata.java index 291c2e7..e903b28 100644 --- a/src/main/lombok/org/warp/filesponge/Metadata.java +++ b/src/main/java/org/warp/filesponge/Metadata.java @@ -18,14 +18,8 @@ package org.warp.filesponge; -import lombok.Value; -@Value -public class Metadata { - - /** - * -1 = unknown size - */ - int size; - -} +/** + * size -1 = unknown size + */ +public record Metadata(int size) {} diff --git a/src/main/lombok/org/warp/filesponge/URL.java b/src/main/java/org/warp/filesponge/URL.java similarity index 100% rename from src/main/lombok/org/warp/filesponge/URL.java rename to src/main/java/org/warp/filesponge/URL.java diff --git a/src/main/lombok/org/warp/filesponge/URLDiskHandler.java b/src/main/java/org/warp/filesponge/URLDiskHandler.java similarity index 100% rename from src/main/lombok/org/warp/filesponge/URLDiskHandler.java rename to src/main/java/org/warp/filesponge/URLDiskHandler.java diff --git a/src/main/lombok/org/warp/filesponge/URLHandler.java b/src/main/java/org/warp/filesponge/URLHandler.java similarity index 100% rename from src/main/lombok/org/warp/filesponge/URLHandler.java rename to src/main/java/org/warp/filesponge/URLHandler.java diff --git a/src/main/lombok/org/warp/filesponge/URLWriter.java b/src/main/java/org/warp/filesponge/URLWriter.java similarity index 100% rename from src/main/lombok/org/warp/filesponge/URLWriter.java rename to src/main/java/org/warp/filesponge/URLWriter.java diff --git a/src/main/lombok/org/warp/filesponge/URLsDiskHandler.java b/src/main/java/org/warp/filesponge/URLsDiskHandler.java similarity index 100% rename from src/main/lombok/org/warp/filesponge/URLsDiskHandler.java rename to src/main/java/org/warp/filesponge/URLsDiskHandler.java diff --git a/src/main/lombok/org/warp/filesponge/URLsHandler.java b/src/main/java/org/warp/filesponge/URLsHandler.java similarity index 100% rename from src/main/lombok/org/warp/filesponge/URLsHandler.java rename to src/main/java/org/warp/filesponge/URLsHandler.java diff --git a/src/main/lombok/org/warp/filesponge/URLsWriter.java b/src/main/java/org/warp/filesponge/URLsWriter.java similarity index 100% rename from src/main/lombok/org/warp/filesponge/URLsWriter.java rename to src/main/java/org/warp/filesponge/URLsWriter.java diff --git a/src/test/lombok/org/warp/filesponge/AppTest.java b/src/test/java/org/warp/filesponge/AppTest.java similarity index 100% rename from src/test/lombok/org/warp/filesponge/AppTest.java rename to src/test/java/org/warp/filesponge/AppTest.java diff --git a/src/test/lombok/org/warp/filesponge/ThreadSafety.java b/src/test/java/org/warp/filesponge/ThreadSafety.java similarity index 100% rename from src/test/lombok/org/warp/filesponge/ThreadSafety.java rename to src/test/java/org/warp/filesponge/ThreadSafety.java