BeanWrapperImpl.setBeanInstance correctly exposes root object
Issue: SPR-14474
(cherry picked from commit 938b56c)
This commit is contained in:
parent
b583aa1579
commit
fe17f8da41
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue