diff --git a/src/main/java/de/extio/game_engine/util/ObjectSerialization.java b/src/main/java/de/extio/game_engine/util/ObjectSerialization.java index 3a883dd..20b2d9c 100644 --- a/src/main/java/de/extio/game_engine/util/ObjectSerialization.java +++ b/src/main/java/de/extio/game_engine/util/ObjectSerialization.java @@ -29,7 +29,7 @@ public final class ObjectSerialization { .build(); } - public byte[] serialize(final Object o, final boolean compress, final boolean base64, final boolean digest, final byte[] digestSalt, final Consumer digestConsumer) { + public static byte[] serialize(final Object o, final boolean compress, final boolean base64, final boolean digest, final byte[] digestSalt, final Consumer digestConsumer) { final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1 << 16); OutputStream base64OutputStream = null; ZstdOutputStream zstdOutputStream = null; @@ -81,7 +81,7 @@ public final class ObjectSerialization { return byteArrayOutputStream.toByteArray(); } - public T deserialize(final Class clazz, final byte[] data, final boolean deserializeObjRefs, final boolean decompress, final boolean base64, final byte[] checkDigest, final byte[] digestSalt, final Consumer digestCheckConsumer) { + public static T deserialize(final Class clazz, final byte[] data, final boolean deserializeObjRefs, final boolean decompress, final boolean base64, final byte[] checkDigest, final byte[] digestSalt, final Consumer digestCheckConsumer) { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data); InputStream base64InputStream = null; ZstdInputStream zstdInputStream = null; diff --git a/src/test/java/de/extio/game_engine/util/ObjectSerializationTest.java b/src/test/java/de/extio/game_engine/util/ObjectSerializationTest.java index fa822a5..2b12d51 100644 --- a/src/test/java/de/extio/game_engine/util/ObjectSerializationTest.java +++ b/src/test/java/de/extio/game_engine/util/ObjectSerializationTest.java @@ -11,10 +11,9 @@ public class ObjectSerializationTest { @Test 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 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); @@ -22,7 +21,7 @@ public class ObjectSerializationTest { assertNotNull(serialized); 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); @@ -33,16 +32,15 @@ public class ObjectSerializationTest { @Test 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 serialized = serialization.serialize(original, true, false, false, null, digest -> { + var serialized = ObjectSerialization.serialize(original, true, false, false, null, digest -> { }); assertNotNull(serialized); 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); @@ -53,17 +51,16 @@ public class ObjectSerializationTest { @Test public void testSerializeDeserializeWithBase64() { - var serialization = new ObjectSerialization(); 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); assertTrue(serialized.length > 0); 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); @@ -74,19 +71,18 @@ public class ObjectSerializationTest { @Test public void testSerializeDeserializeWithDigest() { - var serialization = new ObjectSerialization(); var original = new TestObject("Digested", 300, 0.5, List.of("x"), List.of(), Map.of()); var digestSalt = "salt".getBytes(); 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(capturedDigest[0]); assertTrue(capturedDigest[0].length == 32); 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); assertTrue(digestCheckPassed[0]); @@ -97,17 +93,16 @@ public class ObjectSerializationTest { @Test 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 serialized = serialization.serialize(original, true, true, false, null, digest -> { + var serialized = ObjectSerialization.serialize(original, true, true, false, null, digest -> { }); assertNotNull(serialized); assertTrue(serialized.length > 0); 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); @@ -118,19 +113,18 @@ public class ObjectSerializationTest { @Test 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 digestSalt = "salt123".getBytes(); 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(capturedDigest[0]); assertTrue(new String(serialized).matches("[A-Za-z0-9+/=]+")); 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); assertTrue(digestCheckPassed[0]);