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