public T getValue()

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;
    }