This is an automated email from the ASF dual-hosted git repository. He-Pin pushed a commit to branch refactor/replace-reflection-with-methodhandles in repository https://gitbox.apache.org/repos/asf/pekko-persistence-dynamodb.git
commit 1f7a83cffb0dc24b3cc89292d2e4da14e9692755 Author: 虎鸣 <[email protected]> AuthorDate: Mon Jul 6 19:43:46 2026 +0800 refactor: load serializer classes with method handles Motivation: Avoid Class.forName in the DynamoDB test serializer path on modern JVMs. Modification: Use MethodHandles.Lookup.findClass and ensureInitialized before delegating to JavaSerializer deserialization. Result: The serializer test helper preserves class initialization behavior without direct Class.forName usage. --- .../pekko/persistence/dynamodb/journal/TestSerializer.scala | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/test/scala/org/apache/pekko/persistence/dynamodb/journal/TestSerializer.scala b/src/test/scala/org/apache/pekko/persistence/dynamodb/journal/TestSerializer.scala index 766a836..ff16e6a 100644 --- a/src/test/scala/org/apache/pekko/persistence/dynamodb/journal/TestSerializer.scala +++ b/src/test/scala/org/apache/pekko/persistence/dynamodb/journal/TestSerializer.scala @@ -13,6 +13,8 @@ package org.apache.pekko.persistence.dynamodb.journal +import java.lang.invoke.MethodHandles + import org.apache.pekko.actor.ExtendedActorSystem import org.apache.pekko.serialization.{ AsyncSerializerWithStringManifest, JavaSerializer } @@ -29,7 +31,12 @@ class TestSerializer(system: ExtendedActorSystem) extends AsyncSerializerWithStr val javaSerializer: JavaSerializer = new JavaSerializer(system) override def fromBinaryAsync(bytes: Array[Byte], manifest: String): Future[AnyRef] = - Future.successful(javaSerializer.fromBinary(bytes, Class.forName(manifest))) + Future.successful { + val lookup = MethodHandles.lookup() + val clazz = lookup.findClass(manifest) + lookup.ensureInitialized(clazz) + javaSerializer.fromBinary(bytes, clazz) + } override def toBinaryAsync(obj: AnyRef): Future[Array[Byte]] = Future.successful(javaSerializer.toBinary(obj)) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
