@@ -34,9 +34,13 @@ private class EitherDeserializer(javaType: JavaType,
3434 val rightDeserializerConfig = deserializerConfigFor(1 , property)
3535 new EitherDeserializer (javaType, deserializationConfig, leftDeserializerConfig, rightDeserializerConfig)
3636 case 1 =>
37- val leftDeserializerConfig = deserializerConfigFor(0 , property)
38- val rightDeserializerConfig = deserializerConfigFor(0 , property)
39- new EitherDeserializer (javaType, deserializationConfig, leftDeserializerConfig, rightDeserializerConfig)
37+ if (javaType.getBindings.getBoundName(0 ) == " A" ) {
38+ val leftDeserializerConfig = deserializerConfigFor(0 , property)
39+ new EitherDeserializer (javaType, deserializationConfig, leftDeserializerConfig, ElementDeserializerConfig .empty)
40+ } else {
41+ val rightDeserializerConfig = deserializerConfigFor(0 , property)
42+ new EitherDeserializer (javaType, deserializationConfig, ElementDeserializerConfig .empty, rightDeserializerConfig)
43+ }
4044 case _ => this
4145 }
4246 }
@@ -59,10 +63,10 @@ private class EitherDeserializer(javaType: JavaType,
5963 val `type` = jp.nextToken()
6064
6165 val result = key match {
62- case ( " l" ) => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
63- case ( " left" ) => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
64- case ( " r" ) => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
65- case ( " right" ) => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
66+ case " l" => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
67+ case " left" => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
68+ case " r" => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
69+ case " right" => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
6670 case _ => ctxt.handleUnexpectedToken(javaType, jp).asInstanceOf [Either [AnyRef , AnyRef ]]
6771 }
6872
@@ -75,10 +79,10 @@ private class EitherDeserializer(javaType: JavaType,
7579 val `type` = jp.nextToken()
7680
7781 val result = key match {
78- case ( " l" ) => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
79- case ( " left" ) => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
80- case ( " r" ) => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
81- case ( " right" ) => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
82+ case " l" => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
83+ case " left" => Left (deserializeValue(`type`, leftDeserializerConfig, jp, ctxt))
84+ case " r" => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
85+ case " right" => Right (deserializeValue(`type`, rightDeserializerConfig, jp, ctxt))
8286 case _ => ctxt.handleUnexpectedToken(javaType, jp).asInstanceOf [Either [AnyRef , AnyRef ]]
8387 }
8488
0 commit comments