MetaDataExtractor extractor = DefaultPropertyScanningMetaDataExtractor.getInstance();
String[] targetExpressions = metaDataEntry.getValue(JoinValidation.class).value();
ValidationStrategy validationStrategy;
MetaDataTransformer metaDataTransformer;
Map<String, Object> results = new HashMap<String, Object>();
PropertyDetails propertyDetails;
for (String targetExpression : targetExpressions)
{
propertyDetails = ExtValUtils
.createPropertyDetailsForNewTarget(metaDataEntry, targetExpression);
for (MetaDataEntry entry : extractor.extract(FacesContext.getCurrentInstance(),
propertyDetails).getMetaDataEntries())
{
validationStrategy = ExtValUtils.getValidationStrategyForMetaData(entry.getKey());
if(validationStrategy == null ||
PropertyValidationUtils.isValidationSkipped(FacesContext.getCurrentInstance(),
validationStrategy, entry))
{
continue;
}
metaDataTransformer = ExtValUtils.getMetaDataTransformerForValidationStrategy(validationStrategy);
if (metaDataTransformer != null)
{
if(!(entry.getValue() instanceof Annotation &&
ExtValUtils.getValidationParameterExtractor()
.extract(entry.getValue(Annotation.class),
ExtValUtils
.getValidationParameterClassFor(DisableClientSideValidation.class))
.iterator().hasNext()))
{
results.putAll(metaDataTransformer.convertMetaData(entry));
}
}
}
}
return results;