in core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/DefaultValidationParameterExtractor.java [304:348]
private Object processFoundMethod(
Class paramClass, Method currentMethod, List<Object> parameterValues, Object key, Class valueId)
{
Object newKey = null;
if(key == null && currentMethod.isAnnotationPresent(ParameterKey.class))
{
try
{
if(!(Modifier.isAbstract(paramClass.getModifiers()) || Modifier.isInterface(paramClass.getModifiers())))
{
newKey = currentMethod.invoke(paramClass.newInstance());
}
}
catch (Exception e)
{
this.logger.log(Level.WARNING, "invalid method", e);
}
}
//no "else if" to allow both at one field
if(currentMethod.isAnnotationPresent(ParameterValue.class))
{
if(valueId == null || valueId.equals(currentMethod.getAnnotation(ParameterValue.class).id()))
{
currentMethod.setAccessible(true);
try
{
parameterValues.add(currentMethod.invoke(paramClass.newInstance()));
}
catch (Exception e)
{
//check if it's a none-static inner class -> return this class
if(paramClass.getEnclosingClass() != null)
{
parameterValues.add(paramClass);
}
else
{
this.logger.log(Level.WARNING, "invalid method", e);
}
}
}
}
return newKey != null ? newKey : key;
}