AccessorLValue reliably downcasts to CompilablePropertyAccessor in concurrent scenarios
Issue: SPR-14850
This commit is contained in:
parent
b7d3a969a4
commit
e2b1dcbaca
|
@ -354,10 +354,12 @@ public class PropertyOrFieldReference extends SpelNodeImpl {
|
|||
|
||||
@Override
|
||||
public TypedValue getValue() {
|
||||
TypedValue value = this.ref.getValueInternal(this.contextObject, this.evalContext, this.autoGrowNullReferences);
|
||||
if (this.ref.cachedReadAccessor instanceof CompilablePropertyAccessor) {
|
||||
CompilablePropertyAccessor accessor = (CompilablePropertyAccessor) this.ref.cachedReadAccessor;
|
||||
this.ref.exitTypeDescriptor = CodeFlow.toDescriptor(accessor.getPropertyType());
|
||||
TypedValue value =
|
||||
this.ref.getValueInternal(this.contextObject, this.evalContext, this.autoGrowNullReferences);
|
||||
PropertyAccessor accessorToUse = this.ref.cachedReadAccessor;
|
||||
if (accessorToUse instanceof CompilablePropertyAccessor) {
|
||||
this.ref.exitTypeDescriptor =
|
||||
CodeFlow.toDescriptor(((CompilablePropertyAccessor) accessorToUse).getPropertyType());
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue