Hi there
I met an issue when I use optional query parameter. For example, I have a service method like:
ServiceCall<NotUsed, Done> updateNationality(Optional<Country> country)
And the service is defined like:
Service.restCall(Method.PUT, "/user/nationality?country", this::updateNationality)
If I get a request like PUT /nationality, it works fine then nationality is clear. However, if the request is /nationality?country=, I get this error:
Caused by: java.lang.NullPointerException: null
at java.util.Objects.requireNonNull(Objects.java:203) ~[na:1.8.0_72]
at java.util.Optional.<init>(Optional.java:96) ~[na:1.8.0_72]
at java.util.Optional.of(Optional.java:108) ~[na:1.8.0_72]
at com.lightbend.lagom.javadsl.api.deser.PathParamSerializers$2.deserialize(PathParamSerializers.java:58) ~[lagom-javadsl-api_2.11-1.3.3.jar:1.3.3]
at com.lightbend.lagom.javadsl.api.deser.PathParamSerializers$2.deserialize(PathParamSerializers.java:47) ~[lagom-javadsl-api_2.11-1.3.3.jar:1.3.3]
at com.lightbend.lagom.internal.javadsl.api.ServiceReader$$anon$1$$anonfun$7.apply(ServiceReader.scala:240) ~[lagom-javadsl-api_2.11-1.3.3.jar:1.3.3]
at com.lightbend.lagom.internal.javadsl.api.ServiceReader$$anon$1$$anonfun$7.apply(ServiceReader.scala:239) ~[lagom-javadsl-api_2.11-1.3.3.jar:1.3.3]
I think the PathParamSerializer should interpret empty string as empty Optional.