pjfanning opened a new pull request, #2948: URL: https://github.com/apache/pekko/pull/2948
part of https://github.com/akka/akka-core/releases/tag/v2.8.2 that is now available under Apache License, v2.0 ### Motivation Port of [akka/akka-core#31936](https://github.com/akka/akka-core/pull/31936). When `serializerOf` cascades through all constructor shapes and finds none, the user gets a `NoSuchMethodException` for `ClassicActorSystemProvider` and `String`, giving the impression that this is the only supported constructor shape. It would be better to have a personalized message saying none of the supported constructors were found, listing all the shapes that are tried. Additionally, serializers with `ActorSystem` or `ClassicActorSystemProvider` constructors (instead of `ExtendedActorSystem`) were not supported even though `ExtendedActorSystem` is a subtype. ### Modification - `serializerOf` now tries constructors in this order: 1. `(ExtendedActorSystem)` 2. `(ActorSystem)` 3. `(ClassicActorSystemProvider)` 4. `()` (no-arg) 5. `(ExtendedActorSystem, String)` – binding name, only when bindingName is non-empty 6. `(ActorSystem, String)` 7. `(ClassicActorSystemProvider, String)` - On total failure, a `NoSuchMethodException` with an informative message listing all supported shapes (in try order) is returned. - Added `ConstructorSerializer` test helper classes (No1–No7 marker types + Constructor1Serializer–Constructor7Serializer covering each constructor shape) to `SerializeSpec.scala`. - Added config entries and a `"look for various constructors"` test case to `SerializeSpec`. ### Result Serializers with `ActorSystem` or `ClassicActorSystemProvider` constructors are now accepted. Failures produce a clear list of supported constructor shapes in the order they are tried. ### Tests - `sbt "actor-tests / Test / testOnly org.apache.pekko.serialization.SerializeSpec"` — All 18 tests passed. ### References Refs https://github.com/akka/akka-core/pull/31936 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
