@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2018 the original author or authors .
* Copyright 2002 - 2020 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -40,6 +40,8 @@ public abstract class AbstractPropertyAccessor extends TypeConverterSupport impl
@@ -40,6 +40,8 @@ public abstract class AbstractPropertyAccessor extends TypeConverterSupport impl
private boolean autoGrowNestedPaths = false ;
boolean suppressNotWritablePropertyException = false ;
@Override
public void setExtractOldValueForEditor ( boolean extractOldValueForEditor ) {
@ -89,30 +91,41 @@ public abstract class AbstractPropertyAccessor extends TypeConverterSupport impl
@@ -89,30 +91,41 @@ public abstract class AbstractPropertyAccessor extends TypeConverterSupport impl
List < PropertyAccessException > propertyAccessExceptions = null ;
List < PropertyValue > propertyValues = ( pvs instanceof MutablePropertyValues ?
( ( MutablePropertyValues ) pvs ) . getPropertyValueList ( ) : Arrays . asList ( pvs . getPropertyValues ( ) ) ) ;
for ( PropertyValue pv : propertyValues ) {
try {
// This method may throw any BeansException, which won't be caught
if ( ignoreUnknown ) {
this . suppressNotWritablePropertyException = true ;
}
try {
for ( PropertyValue pv : propertyValues ) {
// setPropertyValue may throw any BeansException, which won't be caught
// here, if there is a critical failure such as no matching field.
// We can attempt to deal only with less serious exceptions.
setPropertyValue ( pv ) ;
}
catch ( NotWritablePropertyException ex ) {
if ( ! ignoreUnknown ) {
throw ex ;
try {
setPropertyValue ( pv ) ;
}
// Otherwise, just ignore it and continue...
}
catch ( NullValueInNestedPathException ex ) {
if ( ! ignoreInvalid ) {
throw ex ;
catch ( NotWritablePropertyException ex ) {
if ( ! ignoreUnknown ) {
throw ex ;
}
// Otherwise, just ignore it and continue...
}
// Otherwise, just ignore it and continue...
}
catch ( PropertyAccessException ex ) {
if ( propertyAccessExceptions = = null ) {
propertyAccessExceptions = new ArrayList < > ( ) ;
catch ( NullValueInNestedPathException ex ) {
if ( ! ignoreInvalid ) {
throw ex ;
}
// Otherwise, just ignore it and continue...
}
catch ( PropertyAccessException ex ) {
if ( propertyAccessExceptions = = null ) {
propertyAccessExceptions = new ArrayList < > ( ) ;
}
propertyAccessExceptions . add ( ex ) ;
}
propertyAccessExceptions . add ( ex ) ;
}
}
finally {
if ( ignoreUnknown ) {
this . suppressNotWritablePropertyException = false ;
}
}