@@ -3,11 +3,12 @@ package internals
33
44import com .github .plokhotnyuk .jsoniter_scala .core ._
55import com .github .plokhotnyuk .jsoniter_scala .macros .JsonCodecMaker
6+ import com .github .plokhotnyuk .jsoniter_scala .macros .CodecMakerConfig
67
78private [jsonrpclib] case class RawMessage (
89 jsonrpc : String ,
910 method : Option [String ] = None ,
10- result : Option [Payload ] = None ,
11+ result : Option [Option [ Payload ] ] = None ,
1112 error : Option [ErrorPayload ] = None ,
1213 params : Option [Payload ] = None ,
1314 id : Option [CallId ] = None
@@ -21,7 +22,7 @@ private[jsonrpclib] case class RawMessage(
2122 case (Some (callId), None ) =>
2223 (error, result) match {
2324 case (Some (error), _) => Right (OutputMessage .ErrorMessage (callId, error))
24- case (_, Some (data)) => Right (OutputMessage .ResponseMessage (callId, data))
25+ case (_, Some (data)) => Right (OutputMessage .ResponseMessage (callId, data.getOrElse( Payload . NullPayload ) ))
2526 case (None , None ) =>
2627 Left (
2728 ProtocolError .InvalidRequest (
@@ -48,10 +49,11 @@ private[jsonrpclib] object RawMessage {
4849 RawMessage (`2.0`, method = Some (method), params = params, id = Some (callId))
4950 case OutputMessage .ErrorMessage (callId, errorPayload) =>
5051 RawMessage (`2.0`, error = Some (errorPayload), id = Some (callId))
51- case OutputMessage .ResponseMessage (callId, data) => RawMessage (`2.0`, result = Some (data), id = Some (callId))
52+ case OutputMessage .ResponseMessage (callId, data) =>
53+ RawMessage (`2.0`, result = Some (data.stripNull), id = Some (callId))
5254 }
5355
5456 implicit val rawMessageJsonValueCodecs : JsonValueCodec [RawMessage ] =
55- JsonCodecMaker .make
57+ JsonCodecMaker .make( CodecMakerConfig .withSkipNestedOptionValues( true ))
5658
5759}
0 commit comments