{
logger.warn("Expression '" + expression.getExpressionType() + ": Property " + propertyMetaData.getName() + ": Property Type is not valid");
}
// should not crash!
final PropertyDescriptor propertyDescriptor = propertyMetaData.getBeanDescriptor();
if (propertyMetaData.isDeprecated())
{
final String deprecateMessage = propertyMetaData.getDeprecationMessage(locale);
if (isValid(deprecateMessage, "Deprecated") == false)
{
logger.warn("Expression '" + expression.getExpressionType() + ": Property " + propertyMetaData.getName() + ": No valid deprecate message");
}
}
}
try
{
final BeanInfo beanInfo = Introspector.getBeanInfo(expression.getExpressionType());
final PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors();
for (int propIdx = 0; propIdx < descriptors.length; propIdx++)
{
final PropertyDescriptor descriptor = descriptors[propIdx];
final String key = descriptor.getName();
if ("runtime".equals(key))
{
continue;
}
if ("active".equals(key))
{
continue;
}
if ("preserve".equals(key))
{
continue;
}
if (descriptor.getReadMethod() == null || descriptor.getWriteMethod() == null)
{
continue;
}
if (expression.getPropertyDescription(key) == null)