in deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/TypedResolverImpl.java [253:325]
public T getValue()
{
long now = -1;
if (cacheTimeMs > 0)
{
now = System.nanoTime();
if (now <= reloadAfter)
{
// now check if anything in the underlying Config got changed
long lastCfgChange = config.getLastChanged();
if (lastCfgChange < lastReloadedAt)
{
return lastValue;
}
}
}
T value;
if (beanConverter != null)
{
value = getValueByBeanConverter(beanConverter);
}
else
{
String valueStr = resolveStringValue();
if (isList)
{
value = splitAndConvertListValue(valueStr);
}
else
{
value = convert(valueStr);
}
if (withDefault)
{
ConfigResolverContext configResolverContext = new ConfigResolverContext()
.setEvaluateVariables(evaluateVariables)
.setProjectStageAware(projectStageAware);
value = fallbackToDefaultIfEmpty(keyResolved, value, defaultValue, configResolverContext);
if (isList && String.class.isInstance(value))
{
value = splitAndConvertListValue(String.class.cast(value));
}
}
if ((logChanges || valueChangedCallback != null)
&& (value != null && !value.equals(lastValue) || (value == null && lastValue != null)))
{
if (logChanges)
{
LOG.log(Level.INFO, "New value {0} for key {1}.",
new Object[]{ConfigResolver.filterConfigValueForLog(keyOriginal, valueStr), keyOriginal});
}
if (valueChangedCallback != null)
{
valueChangedCallback.onValueChange(keyOriginal, lastValue, value);
}
}
}
lastValue = value;
if (cacheTimeMs > 0)
{
reloadAfter = now + TimeUnit.MILLISECONDS.toNanos(cacheTimeMs);
lastReloadedAt = now;
}
return value;
}