@@ -33,9 +33,13 @@ private class EitherDeserializer(javaType: JavaType,
3333 val rightDeserializerConfig = deserializerConfigFor(1 , property)
3434 new EitherDeserializer (javaType, config, leftDeserializerConfig, rightDeserializerConfig)
3535 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+ }
3943 case _ => this
4044 }
4145 }
@@ -58,10 +62,10 @@ private class EitherDeserializer(javaType: JavaType,
5862 val `type` = jp.nextToken()
5963
6064 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))
6569 case _ => ctxt.handleUnexpectedToken(javaType, jp).asInstanceOf [Either [AnyRef , AnyRef ]]
6670 }
6771
@@ -74,10 +78,10 @@ private class EitherDeserializer(javaType: JavaType,
7478 val `type` = jp.nextToken()
7579
7680 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))
8185 case _ => ctxt.handleUnexpectedToken(javaType, jp).asInstanceOf [Either [AnyRef , AnyRef ]]
8286 }
8387
0 commit comments