From 337feca4a10581197656d497b94cde602c1b16a7 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Mon, 19 Mar 2012 19:11:21 -0700 Subject: Fixed [JACKSON-368]; one of infamous 'failing' cases... (yay!) --- .../databind/deser/AbstractDeserializer.java | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'src/main/java/com/fasterxml/jackson/databind/deser/AbstractDeserializer.java') diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/AbstractDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/AbstractDeserializer.java index 17ef72762..b663b8069 100644 --- a/src/main/java/com/fasterxml/jackson/databind/deser/AbstractDeserializer.java +++ b/src/main/java/com/fasterxml/jackson/databind/deser/AbstractDeserializer.java @@ -1,6 +1,7 @@ package com.fasterxml.jackson.databind.deser; import java.io.IOException; +import java.util.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; @@ -22,6 +23,8 @@ public class AbstractDeserializer protected final JavaType _baseType; protected final ObjectIdReader _objectIdReader; + + protected final Map _backRefProperties; // support for "native" types, which require special care: @@ -30,11 +33,13 @@ public class AbstractDeserializer protected final boolean _acceptInt; protected final boolean _acceptDouble; - public AbstractDeserializer(JavaType bt, ObjectIdReader oir) + public AbstractDeserializer(BeanDeserializerBuilder builder, + BeanDescription beanDesc, Map backRefProps) { - _baseType = bt; - _objectIdReader = oir; - Class cls = bt.getRawClass(); + _baseType = beanDesc.getType(); + _objectIdReader = builder.getObjectIdReader(); + _backRefProperties = backRefProps; + Class cls = _baseType.getRawClass(); _acceptString = cls.isAssignableFrom(String.class); _acceptBoolean = (cls == Boolean.TYPE) || cls.isAssignableFrom(Boolean.class); _acceptInt = (cls == Integer.TYPE) || cls.isAssignableFrom(Integer.class); @@ -60,6 +65,15 @@ public class AbstractDeserializer return _objectIdReader; } + /** + * Method called by BeanDeserializer to resolve back reference + * part of managed references. + */ + public SettableBeanProperty findBackReference(String logicalName) + { + return (_backRefProperties == null) ? null : _backRefProperties.get(logicalName); + } + /* /********************************************************** /* Deserializer implementation -- cgit v1.2.3