{
return;
}
//to support local cross-validation (within the same entity)
ProcessedInformationStorage processedInformationStorage = CrossValidationUtils
.getOrInitProcessedInformationStorage();
ProcessedInformationStorageEntry entry;
PropertyDetails propertyDetails =
ExtValUtils.getELHelper().getPropertyDetailsOfValueBinding(uiComponent);
if(propertyDetails == null)
{
return;
}
entry = new ProcessedInformationStorageEntry();
entry.setBean(propertyDetails.getBaseObject());
entry.setConvertedValue(value);
entry.setComponent(uiComponent);
entry.setClientId(uiComponent.getClientId(FacesContext.getCurrentInstance()));
String key = propertyDetails.getKey();
//for local cross-validation
if (processedInformationStorage.containsEntry(key) &&
processedInformationStorage.getEntry(key).getBean() != null &&
!processedInformationStorage.getEntry(key).getBean().equals(entry.getBean()))
{
//for the validation within a complex component e.g. a table
//don't override existing expression (style: #{entry.property}) - make a special mapping
List<ProcessedInformationStorageEntry> furtherEntries =
processedInformationStorage.getEntry(key).getFurtherEntries();
if (furtherEntries == null)
{
furtherEntries = new ArrayList<ProcessedInformationStorageEntry>();
processedInformationStorage.getEntry(key).setFurtherEntries(furtherEntries);
}
furtherEntries.add(entry);
}
else
{
//for normal validation
processedInformationStorage.setEntry(key, entry);
}
}