From f938d8c878eb03eebfc80f06c72c38235f13e898 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sat, 10 Jul 2021 14:47:51 +0100 Subject: [PATCH] More refactoring --- .../qortal/api/resource/WebsiteResource.java | 2 +- .../network/message/GetDataFileMessage.java | 28 ++++++++++--------- .../hsqldb/HSQLDBArbitraryRepository.java | 6 ++-- .../java/org/qortal/storage/DataFile.java | 9 ++++-- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/qortal/api/resource/WebsiteResource.java b/src/main/java/org/qortal/api/resource/WebsiteResource.java index 5d281407..69ccfba8 100644 --- a/src/main/java/org/qortal/api/resource/WebsiteResource.java +++ b/src/main/java/org/qortal/api/resource/WebsiteResource.java @@ -295,7 +295,7 @@ public class WebsiteResource { byte[] chunkHashes = transactionData.getChunkHashes(); // Load data file(s) - DataFile dataFile = DataFile.fromDigest(digest); + DataFile dataFile = DataFile.fromHash(digest); if (!dataFile.exists()) { if (!dataFile.allChunksExist(chunkHashes)) { // TODO: fetch them? diff --git a/src/main/java/org/qortal/network/message/GetDataFileMessage.java b/src/main/java/org/qortal/network/message/GetDataFileMessage.java index d4171b42..a7ab8d67 100644 --- a/src/main/java/org/qortal/network/message/GetDataFileMessage.java +++ b/src/main/java/org/qortal/network/message/GetDataFileMessage.java @@ -1,5 +1,7 @@ package org.qortal.network.message; +import org.qortal.transform.transaction.TransactionTransformer; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -7,33 +9,33 @@ import java.nio.ByteBuffer; public class GetDataFileMessage extends Message { - private static final int DIGEST_LENGTH = 32; + private static final int HASH_LENGTH = TransactionTransformer.SHA256_LENGTH; - private final byte[] digest; + private final byte[] hash; - public GetDataFileMessage(byte[] digest) { - this(-1, digest); + public GetDataFileMessage(byte[] hash) { + this(-1, hash); } - private GetDataFileMessage(int id, byte[] digest) { + private GetDataFileMessage(int id, byte[] hash) { super(id, MessageType.GET_DATA_FILE); - this.digest = digest; + this.hash = hash; } - public byte[] getDigest() { - return this.digest; + public byte[] getHash() { + return this.hash; } public static Message fromByteBuffer(int id, ByteBuffer bytes) throws UnsupportedEncodingException { - if (bytes.remaining() != DIGEST_LENGTH) + if (bytes.remaining() != HASH_LENGTH) return null; - byte[] digest = new byte[DIGEST_LENGTH]; + byte[] hash = new byte[HASH_LENGTH]; - bytes.get(digest); + bytes.get(hash); - return new GetDataFileMessage(id, digest); + return new GetDataFileMessage(id, hash); } @Override @@ -41,7 +43,7 @@ public class GetDataFileMessage extends Message { try { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - bytes.write(this.digest); + bytes.write(this.hash); return bytes.toByteArray(); } catch (IOException e) { diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java index 332e711a..b3edf41a 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java @@ -47,7 +47,7 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { byte[] chunkHashes = transactionData.getChunkHashes(); // Load data file(s) - DataFile dataFile = DataFile.fromDigest(digest); + DataFile dataFile = DataFile.fromHash(digest); if (chunkHashes.length > 0) { dataFile.addChunkHashes(chunkHashes); } @@ -82,7 +82,7 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { byte[] chunkHashes = transactionData.getChunkHashes(); // Load data file(s) - DataFile dataFile = DataFile.fromDigest(digest); + DataFile dataFile = DataFile.fromHash(digest); if (chunkHashes.length > 0) { dataFile.addChunkHashes(chunkHashes); } @@ -167,7 +167,7 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { byte[] chunkHashes = arbitraryTransactionData.getChunkHashes(); // Load data file(s) - DataFile dataFile = DataFile.fromDigest(digest); + DataFile dataFile = DataFile.fromHash(digest); if (chunkHashes.length > 0) { dataFile.addChunkHashes(chunkHashes); } diff --git a/src/main/java/org/qortal/storage/DataFile.java b/src/main/java/org/qortal/storage/DataFile.java index 585e3711..be78e6b0 100644 --- a/src/main/java/org/qortal/storage/DataFile.java +++ b/src/main/java/org/qortal/storage/DataFile.java @@ -90,8 +90,8 @@ public class DataFile { return new DataFile(hash58); } - public static DataFile fromDigest(byte[] digest) { - return DataFile.fromHash58(Base58.encode(digest)); + public static DataFile fromHash(byte[] hash) { + return DataFile.fromHash58(Base58.encode(hash)); } public static DataFile fromPath(String path) { @@ -100,7 +100,7 @@ public class DataFile { try { byte[] fileContent = Files.readAllBytes(file.toPath()); byte[] digest = Crypto.digest(fileContent); - DataFile dataFile = DataFile.fromDigest(digest); + DataFile dataFile = DataFile.fromHash(digest); // Copy file to base directory if needed Path filePath = Paths.get(path); @@ -194,6 +194,9 @@ public class DataFile { } public void addChunkHashes(byte[] chunks) { + if (chunks == null || chunks.length == 0) { + return; + } ByteBuffer byteBuffer = ByteBuffer.wrap(chunks); while (byteBuffer.remaining() >= TransactionTransformer.SHA256_LENGTH) { byte[] chunkDigest = new byte[TransactionTransformer.SHA256_LENGTH];