if (propertyName.toLowerCase().equals(CLASS_PROPERTY_NAME)) {
continue;
}
// use the writeable property descriptor (appropriate setter method) from writing the property
WriteablePropertyDescriptor descriptor = findDescriptor(applicableClass, propertyName, writables);
if (descriptor != null) {
Object coerceProperty = coerceProperty(propertyName, applicableClass, property.getValue(), descriptor.getType(), engineImportService, false);
try {
descriptor.getWriteMethod().invoke(top, new Object[] {coerceProperty});
}
catch (IllegalArgumentException e) {
throw new ExprValidationException("Illegal argument invoking setter method for property '" + propertyName + "' for class " + applicableClass.getName() + " method " + descriptor.getWriteMethod().getName() + " provided value " + coerceProperty, e);
}
catch (IllegalAccessException e) {
throw new ExprValidationException("Illegal access invoking setter method for property '" + propertyName + "' for class " + applicableClass.getName() + " method " + descriptor.getWriteMethod().getName(), e);
}
catch (InvocationTargetException e) {
throw new ExprValidationException("Exception invoking setter method for property '" + propertyName + "' for class " + applicableClass.getName() + " method " + descriptor.getWriteMethod().getName() + ": " + e.getTargetException().getMessage(), e);
}
continue;
}
// find the field annotated with {@link @GraphOpProperty}