Make serialize and deserialize methods static in ObjectSerialization class; update tests accordingly
This commit is contained in:
@@ -29,7 +29,7 @@ public final class ObjectSerialization {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] serialize(final Object o, final boolean compress, final boolean base64, final boolean digest, final byte[] digestSalt, final Consumer<byte[]> digestConsumer) {
|
public static byte[] serialize(final Object o, final boolean compress, final boolean base64, final boolean digest, final byte[] digestSalt, final Consumer<byte[]> digestConsumer) {
|
||||||
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1 << 16);
|
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1 << 16);
|
||||||
OutputStream base64OutputStream = null;
|
OutputStream base64OutputStream = null;
|
||||||
ZstdOutputStream zstdOutputStream = null;
|
ZstdOutputStream zstdOutputStream = null;
|
||||||
@@ -81,7 +81,7 @@ public final class ObjectSerialization {
|
|||||||
return byteArrayOutputStream.toByteArray();
|
return byteArrayOutputStream.toByteArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends Object> T deserialize(final Class<T> clazz, final byte[] data, final boolean deserializeObjRefs, final boolean decompress, final boolean base64, final byte[] checkDigest, final byte[] digestSalt, final Consumer<Boolean> digestCheckConsumer) {
|
public static <T extends Object> T deserialize(final Class<T> clazz, final byte[] data, final boolean deserializeObjRefs, final boolean decompress, final boolean base64, final byte[] checkDigest, final byte[] digestSalt, final Consumer<Boolean> digestCheckConsumer) {
|
||||||
final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data);
|
final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data);
|
||||||
InputStream base64InputStream = null;
|
InputStream base64InputStream = null;
|
||||||
ZstdInputStream zstdInputStream = null;
|
ZstdInputStream zstdInputStream = null;
|
||||||
|
|||||||
@@ -11,10 +11,9 @@ public class ObjectSerializationTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerializeDeserializeBasic() {
|
public void testSerializeDeserializeBasic() {
|
||||||
var serialization = new ObjectSerialization();
|
|
||||||
var original = new TestObject("Hello", 42, 3.14, List.of("tag1", "tag2"), List.of(new TestObject2("key", true), new TestObject2("key2", false)), Map.of("attr", 1, "attr2", 2));
|
var original = new TestObject("Hello", 42, 3.14, List.of("tag1", "tag2"), List.of(new TestObject2("key", true), new TestObject2("key2", false)), Map.of("attr", 1, "attr2", 2));
|
||||||
|
|
||||||
var serialized = serialization.serialize(original, false, false, false, null, digest -> {
|
var serialized = ObjectSerialization.serialize(original, false, false, false, null, digest -> {
|
||||||
});
|
});
|
||||||
|
|
||||||
System.out.println("Serialized length: " + serialized.length);
|
System.out.println("Serialized length: " + serialized.length);
|
||||||
@@ -22,7 +21,7 @@ public class ObjectSerializationTest {
|
|||||||
assertNotNull(serialized);
|
assertNotNull(serialized);
|
||||||
assertTrue(serialized.length > 0);
|
assertTrue(serialized.length > 0);
|
||||||
|
|
||||||
var deserialized = serialization.deserialize(TestObject.class, serialized, false, false, false, null, null, result -> {
|
var deserialized = ObjectSerialization.deserialize(TestObject.class, serialized, false, false, false, null, null, result -> {
|
||||||
});
|
});
|
||||||
|
|
||||||
assertNotNull(deserialized);
|
assertNotNull(deserialized);
|
||||||
@@ -33,16 +32,15 @@ public class ObjectSerializationTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerializeDeserializeWithCompression() {
|
public void testSerializeDeserializeWithCompression() {
|
||||||
var serialization = new ObjectSerialization();
|
|
||||||
var original = new TestObject("Compressed", 100, 2.71, List.of("a", "b", "c"), List.of(), Map.of());
|
var original = new TestObject("Compressed", 100, 2.71, List.of("a", "b", "c"), List.of(), Map.of());
|
||||||
|
|
||||||
var serialized = serialization.serialize(original, true, false, false, null, digest -> {
|
var serialized = ObjectSerialization.serialize(original, true, false, false, null, digest -> {
|
||||||
});
|
});
|
||||||
|
|
||||||
assertNotNull(serialized);
|
assertNotNull(serialized);
|
||||||
assertTrue(serialized.length > 0);
|
assertTrue(serialized.length > 0);
|
||||||
|
|
||||||
var deserialized = serialization.deserialize(TestObject.class, serialized, false, true, false, null, null, result -> {
|
var deserialized = ObjectSerialization.deserialize(TestObject.class, serialized, false, true, false, null, null, result -> {
|
||||||
});
|
});
|
||||||
|
|
||||||
assertNotNull(deserialized);
|
assertNotNull(deserialized);
|
||||||
@@ -53,17 +51,16 @@ public class ObjectSerializationTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerializeDeserializeWithBase64() {
|
public void testSerializeDeserializeWithBase64() {
|
||||||
var serialization = new ObjectSerialization();
|
|
||||||
var original = new TestObject("Base64", 200, 1.41, List.of(), List.of(), Map.of());
|
var original = new TestObject("Base64", 200, 1.41, List.of(), List.of(), Map.of());
|
||||||
|
|
||||||
var serialized = serialization.serialize(original, false, true, false, null, digest -> {
|
var serialized = ObjectSerialization.serialize(original, false, true, false, null, digest -> {
|
||||||
});
|
});
|
||||||
|
|
||||||
assertNotNull(serialized);
|
assertNotNull(serialized);
|
||||||
assertTrue(serialized.length > 0);
|
assertTrue(serialized.length > 0);
|
||||||
assertTrue(new String(serialized).matches("[A-Za-z0-9+/=]+"));
|
assertTrue(new String(serialized).matches("[A-Za-z0-9+/=]+"));
|
||||||
|
|
||||||
var deserialized = serialization.deserialize(TestObject.class, serialized, false, false, true, null, null, result -> {
|
var deserialized = ObjectSerialization.deserialize(TestObject.class, serialized, false, false, true, null, null, result -> {
|
||||||
});
|
});
|
||||||
|
|
||||||
assertNotNull(deserialized);
|
assertNotNull(deserialized);
|
||||||
@@ -74,19 +71,18 @@ public class ObjectSerializationTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerializeDeserializeWithDigest() {
|
public void testSerializeDeserializeWithDigest() {
|
||||||
var serialization = new ObjectSerialization();
|
|
||||||
var original = new TestObject("Digested", 300, 0.5, List.of("x"), List.of(), Map.of());
|
var original = new TestObject("Digested", 300, 0.5, List.of("x"), List.of(), Map.of());
|
||||||
var digestSalt = "salt".getBytes();
|
var digestSalt = "salt".getBytes();
|
||||||
var capturedDigest = new byte[32][];
|
var capturedDigest = new byte[32][];
|
||||||
|
|
||||||
var serialized = serialization.serialize(original, false, false, true, digestSalt, digest -> capturedDigest[0] = digest);
|
var serialized = ObjectSerialization.serialize(original, false, false, true, digestSalt, digest -> capturedDigest[0] = digest);
|
||||||
|
|
||||||
assertNotNull(serialized);
|
assertNotNull(serialized);
|
||||||
assertNotNull(capturedDigest[0]);
|
assertNotNull(capturedDigest[0]);
|
||||||
assertTrue(capturedDigest[0].length == 32);
|
assertTrue(capturedDigest[0].length == 32);
|
||||||
|
|
||||||
var digestCheckPassed = new boolean[1];
|
var digestCheckPassed = new boolean[1];
|
||||||
var deserialized = serialization.deserialize(TestObject.class, serialized, false, false, false, capturedDigest[0], digestSalt, result -> digestCheckPassed[0] = result);
|
var deserialized = ObjectSerialization.deserialize(TestObject.class, serialized, false, false, false, capturedDigest[0], digestSalt, result -> digestCheckPassed[0] = result);
|
||||||
|
|
||||||
assertNotNull(deserialized);
|
assertNotNull(deserialized);
|
||||||
assertTrue(digestCheckPassed[0]);
|
assertTrue(digestCheckPassed[0]);
|
||||||
@@ -97,17 +93,16 @@ public class ObjectSerializationTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerializeDeserializeWithCompressionAndBase64() {
|
public void testSerializeDeserializeWithCompressionAndBase64() {
|
||||||
var serialization = new ObjectSerialization();
|
|
||||||
var original = new TestObject("CompressedBase64", 400, 1.23, List.of("p", "q"), List.of(new TestObject2("nested", true)), Map.of("key", 99));
|
var original = new TestObject("CompressedBase64", 400, 1.23, List.of("p", "q"), List.of(new TestObject2("nested", true)), Map.of("key", 99));
|
||||||
|
|
||||||
var serialized = serialization.serialize(original, true, true, false, null, digest -> {
|
var serialized = ObjectSerialization.serialize(original, true, true, false, null, digest -> {
|
||||||
});
|
});
|
||||||
|
|
||||||
assertNotNull(serialized);
|
assertNotNull(serialized);
|
||||||
assertTrue(serialized.length > 0);
|
assertTrue(serialized.length > 0);
|
||||||
assertTrue(new String(serialized).matches("[A-Za-z0-9+/=]+"));
|
assertTrue(new String(serialized).matches("[A-Za-z0-9+/=]+"));
|
||||||
|
|
||||||
var deserialized = serialization.deserialize(TestObject.class, serialized, false, true, true, null, null, result -> {
|
var deserialized = ObjectSerialization.deserialize(TestObject.class, serialized, false, true, true, null, null, result -> {
|
||||||
});
|
});
|
||||||
|
|
||||||
assertNotNull(deserialized);
|
assertNotNull(deserialized);
|
||||||
@@ -118,19 +113,18 @@ public class ObjectSerializationTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerializeDeserializeWithAllOptions() {
|
public void testSerializeDeserializeWithAllOptions() {
|
||||||
var serialization = new ObjectSerialization();
|
|
||||||
var original = new TestObject("AllOptions", 500, 9.99, List.of("all"), List.of(new TestObject2("a", false), new TestObject2("b", true)), Map.of("x", 1, "y", 2));
|
var original = new TestObject("AllOptions", 500, 9.99, List.of("all"), List.of(new TestObject2("a", false), new TestObject2("b", true)), Map.of("x", 1, "y", 2));
|
||||||
var digestSalt = "salt123".getBytes();
|
var digestSalt = "salt123".getBytes();
|
||||||
var capturedDigest = new byte[32][];
|
var capturedDigest = new byte[32][];
|
||||||
|
|
||||||
var serialized = serialization.serialize(original, true, true, true, digestSalt, digest -> capturedDigest[0] = digest);
|
var serialized = ObjectSerialization.serialize(original, true, true, true, digestSalt, digest -> capturedDigest[0] = digest);
|
||||||
|
|
||||||
assertNotNull(serialized);
|
assertNotNull(serialized);
|
||||||
assertNotNull(capturedDigest[0]);
|
assertNotNull(capturedDigest[0]);
|
||||||
assertTrue(new String(serialized).matches("[A-Za-z0-9+/=]+"));
|
assertTrue(new String(serialized).matches("[A-Za-z0-9+/=]+"));
|
||||||
|
|
||||||
var digestCheckPassed = new boolean[1];
|
var digestCheckPassed = new boolean[1];
|
||||||
var deserialized = serialization.deserialize(TestObject.class, serialized, false, true, true, capturedDigest[0], digestSalt, result -> digestCheckPassed[0] = result);
|
var deserialized = ObjectSerialization.deserialize(TestObject.class, serialized, false, true, true, capturedDigest[0], digestSalt, result -> digestCheckPassed[0] = result);
|
||||||
|
|
||||||
assertNotNull(deserialized);
|
assertNotNull(deserialized);
|
||||||
assertTrue(digestCheckPassed[0]);
|
assertTrue(digestCheckPassed[0]);
|
||||||
|
|||||||
Reference in New Issue
Block a user