BeanWrapperImpl.setBeanInstance correctly exposes root object
Issue: SPR-14474
(cherry picked from commit 938b56c)
This commit is contained in:
@@ -94,7 +94,7 @@ public abstract class AbstractNestablePropertyAccessor extends AbstractPropertyA
|
|||||||
|
|
||||||
private String nestedPath = "";
|
private String nestedPath = "";
|
||||||
|
|
||||||
private Object rootObject;
|
Object rootObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Map with cached nested Accessors: nested path -> Accessor instance.
|
* Map with cached nested Accessors: nested path -> Accessor instance.
|
||||||
@@ -914,11 +914,9 @@ public abstract class AbstractNestablePropertyAccessor extends AbstractPropertyA
|
|||||||
return BeanUtils.instantiate(type);
|
return BeanUtils.instantiate(type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Throwable ex) {
|
||||||
// TODO: Root cause exception context is lost here; just exception message preserved.
|
|
||||||
// Should we throw another exception type that preserves context instead?
|
|
||||||
throw new NullValueInNestedPathException(getRootClass(), this.nestedPath + name,
|
throw new NullValueInNestedPathException(getRootClass(), this.nestedPath + name,
|
||||||
"Could not instantiate property type [" + type.getName() + "] to auto-grow nested property path: " + ex);
|
"Could not instantiate property type [" + type.getName() + "] to auto-grow nested property path", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -141,6 +141,7 @@ public class BeanWrapperImpl extends AbstractNestablePropertyAccessor implements
|
|||||||
*/
|
*/
|
||||||
public void setBeanInstance(Object object) {
|
public void setBeanInstance(Object object) {
|
||||||
this.wrappedObject = object;
|
this.wrappedObject = object;
|
||||||
|
this.rootObject = object;
|
||||||
this.typeConverterDelegate = new TypeConverterDelegate(this, this.wrappedObject);
|
this.typeConverterDelegate = new TypeConverterDelegate(this, this.wrappedObject);
|
||||||
setIntrospectionClass(object.getClass());
|
setIntrospectionClass(object.getClass());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user