@@ -33,9 +33,13 @@ private class EitherDeserializer(javaType: JavaType,
33
33
val rightDeserializerConfig = deserializerConfigFor(1 , property)
34
34
new EitherDeserializer (javaType, config, leftDeserializerConfig, rightDeserializerConfig)
35
35
case 1 =>
36
- val leftDeserializerConfig = deserializerConfigFor(0 , property)
37
- val rightDeserializerConfig = deserializerConfigFor(0 , property)
38
- new EitherDeserializer (javaType, config, leftDeserializerConfig, rightDeserializerConfig)
36
+ if (javaType.getBindings.getBoundName(0 ) == " A" ) {
37
+ val leftDeserializerConfig = deserializerConfigFor(0 , property)
38
+ new EitherDeserializer (javaType, config, leftDeserializerConfig, ElementDeserializerConfig .empty)
39
+ } else {
40
+ val rightDeserializerConfig = deserializerConfigFor(0 , property)
41
+ new EitherDeserializer (javaType, config, ElementDeserializerConfig .empty, rightDeserializerConfig)
42
+ }
39
43
case _ => this
40
44
}
41
45
}
@@ -58,10 +62,10 @@ private class EitherDeserializer(javaType: JavaType,
58
62
val `type` = jp.nextToken()
59
63
60
64
val result = key match {
61
- case ( " l" ) => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
62
- case ( " left" ) => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
63
- case ( " r" ) => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
64
- case ( " right" ) => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
65
+ case " l" => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
66
+ case " left" => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
67
+ case " r" => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
68
+ case " right" => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
65
69
case _ => ctxt.handleUnexpectedToken(javaType, jp).asInstanceOf [Either [AnyRef , AnyRef ]]
66
70
}
67
71
@@ -74,10 +78,10 @@ private class EitherDeserializer(javaType: JavaType,
74
78
val `type` = jp.nextToken()
75
79
76
80
val result = key match {
77
- case ( " l" ) => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
78
- case ( " left" ) => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
79
- case ( " r" ) => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
80
- case ( " right" ) => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
81
+ case " l" => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
82
+ case " left" => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
83
+ case " r" => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
84
+ case " right" => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
81
85
case _ => ctxt.handleUnexpectedToken(javaType, jp).asInstanceOf [Either [AnyRef , AnyRef ]]
82
86
}
83
87
0 commit comments