@@ -3,11 +3,12 @@ package internals
3
3
4
4
import com .github .plokhotnyuk .jsoniter_scala .core ._
5
5
import com .github .plokhotnyuk .jsoniter_scala .macros .JsonCodecMaker
6
+ import com .github .plokhotnyuk .jsoniter_scala .macros .CodecMakerConfig
6
7
7
8
private [jsonrpclib] case class RawMessage (
8
9
jsonrpc : String ,
9
10
method : Option [String ] = None ,
10
- result : Option [Payload ] = None ,
11
+ result : Option [Option [ Payload ] ] = None ,
11
12
error : Option [ErrorPayload ] = None ,
12
13
params : Option [Payload ] = None ,
13
14
id : Option [CallId ] = None
@@ -21,7 +22,7 @@ private[jsonrpclib] case class RawMessage(
21
22
case (Some (callId), None ) =>
22
23
(error, result) match {
23
24
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 ) ))
25
26
case (None , None ) =>
26
27
Left (
27
28
ProtocolError .InvalidRequest (
@@ -48,10 +49,11 @@ private[jsonrpclib] object RawMessage {
48
49
RawMessage (`2.0`, method = Some (method), params = params, id = Some (callId))
49
50
case OutputMessage .ErrorMessage (callId, errorPayload) =>
50
51
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))
52
54
}
53
55
54
56
implicit val rawMessageJsonValueCodecs : JsonValueCodec [RawMessage ] =
55
- JsonCodecMaker .make
57
+ JsonCodecMaker .make( CodecMakerConfig .withSkipNestedOptionValues( true ))
56
58
57
59
}
0 commit comments