private String resolveStringValue()

in deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/TypedResolverImpl.java [411:487]


    private String resolveStringValue()
    {
        ProjectStage ps = null;
        String value = null;
        keyResolved = keyOriginal;
        int keySuffices = 0;

        // make the longest key
        // first, try appending resolved parameter
        if (propertyParameter != null && !propertyParameter.isEmpty())
        {
            if (parameterValue != null && !parameterValue.isEmpty())
            {
                keyResolved += "." + parameterValue;
                keySuffices++;
            }
            // if parameter value can't be resolved and strictly
            else if (strictly)
            {
                return null;
            }
        }

        // try appending projectstage
        if (projectStageAware)
        {
            ps = getProjectStage();
            keyResolved += "." + ps;
            keySuffices++;
        }

        // make initial resolution of longest key
        value = getPropertyValue(keyResolved);

        // try fallbacks if not strictly
        if (value == null && !strictly)
        {

            // by the length of the longest resolved key already tried
            // breaks are left out intentionally
            switch (keySuffices)
            {

                case 2:
                    // try base.param
                    keyResolved = keyOriginal + "." + parameterValue;
                    value = getPropertyValue(keyResolved);

                    if (value != null)
                    {
                        return value;
                    }

                    // try base.ps
                    ps = getProjectStage();
                    keyResolved = keyOriginal + "." + ps;
                    value = getPropertyValue(keyResolved);

                    if (value != null)
                    {
                        return value;
                    }

                case 1:
                    // try base
                    keyResolved = keyOriginal;
                    value = getPropertyValue(keyResolved);
                    return value;

                default:
                    // the longest key was the base, no fallback
                    return null;
            }
        }

        return value;
    }