if (holder == null) {
ConfigurationItemsBundle configurationItemsBundle = getConfigurationItemsBundle(key);
if (configurationItemsBundle == null) {
ConfigurationItem item = getConfigurationItem(key);
ValueExpression expression = createContextValueExpression(facesContext, item, returnType);
holder = createValueExpressionHolder(facesContext, expression, item.defaultValue(), returnType);
itemsMap.put(key, holder);
} else {
synchronized (key.getClass()) {
Properties properties = loadProperties(configurationItemsBundle.propertiesFile());
Iterator<? extends Enum> keys = EnumSet.allOf(key.getClass()).iterator();
while (keys.hasNext()) {
Enum<?> nextBundleKey = (Enum<?>) keys.next();
ConfigurationItem item = getConfigurationItem(nextBundleKey);
if (item.source() != ConfigurationItemSource.defaultSource) {
throw new IllegalArgumentException(item.toString());
}
String parameterValue = null;
for (String propertyName : item.names()) {
parameterValue = properties.getProperty(propertyName);
if (parameterValue != null) {
break;
}
}
ValueExpression expression = null;
if (parameterValue != null) {
expression = ELUtils.createValueExpression(facesContext, parameterValue, item.literal(), returnType);
}