in core/src/main/java/org/apache/myfaces/extensions/validator/core/el/FaceletsTaglibExpressionHelper.java [140:192]
private static String tryToTransformToRealBinding(
String originalBinding, Map<String, String> addedVirtualNames, Map<String, String> virtualVars)
{
originalBinding = "#{" + originalBinding + "}";
Iterator nameIterator = addedVirtualNames.keySet().iterator();
String currentKey;
String currentValue;
while(nameIterator.hasNext())
{
currentKey = (String) nameIterator.next();
currentValue = addedVirtualNames.get(currentKey);
currentValue = currentValue.substring(currentValue.indexOf("{") + 1, currentValue.indexOf("}"));
originalBinding = originalBinding.replace("{" + currentKey + ".", "{" + currentValue + ".");
//dynamic base and property
originalBinding = originalBinding.replace("{" + currentKey + "[", "{" + currentValue + "[");
originalBinding = originalBinding.replace("." + currentKey + ".", "." + currentValue + ".");
//dynamic base and property
originalBinding = originalBinding.replace("." + currentKey + "[", "." + currentValue + "[");
originalBinding = originalBinding.replace("[" + currentKey + "]", "['" + currentValue + "']");
//dynamic base and property
originalBinding = originalBinding.replace("[" + currentKey + "[", "[" + currentValue + "[");
originalBinding = originalBinding.replace("[" + currentKey + ".", "[" + currentValue + ".");
}
nameIterator = virtualVars.keySet().iterator();
while(nameIterator.hasNext())
{
currentKey = (String) nameIterator.next();
currentValue = virtualVars.get(currentKey);
originalBinding = originalBinding.replace("{" + currentKey + ".", "{" + currentValue + ".");
//dynamic base and property
originalBinding = originalBinding.replace("{" + currentKey + "[", "{" + currentValue + "[");
originalBinding = originalBinding.replace("." + currentKey + ".", "." + currentValue + ".");
//dynamic base and property
originalBinding = originalBinding.replace("." + currentKey + "[", "." + currentValue + "[");
originalBinding = originalBinding.replace("[" + currentKey + "]", "['" + currentValue + "']");
//dynamic base and property
originalBinding = originalBinding.replace("[" + currentKey + "[", "[" + currentValue + "[");
originalBinding = originalBinding.replace("[" + currentKey + ".", "[" + currentValue + ".");
}
return originalBinding.substring(2, originalBinding.length() - 1);
}