in core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/CodiUtils.java [543:604]
public static <T extends Serializable> T lookupConfigFromEnvironment(String key,
Class<T> targetType,
T defaultValue)
{
if(key == null)
{
@SuppressWarnings({"ThrowableInstanceNeverThrown"})
RuntimeException runtimeException = new RuntimeException();
String baseKey = runtimeException.getStackTrace()[1].getMethodName();
if(baseKey.startsWith("get"))
{
baseKey = baseKey.substring(3);
}
else if(baseKey.startsWith("is"))
{
baseKey = baseKey.substring(2);
}
baseKey = baseKey.substring(0, 1).toLowerCase() + baseKey.substring(1);
String className = runtimeException.getStackTrace()[1].getClassName();
Class configClass = ClassUtils.tryToLoadClassForName(className);
if(configClass != null && CodiConfig.class.isAssignableFrom(configClass.getSuperclass()))
{
//config class extends the default impl. -> use the name of the default impl.
className = configClass.getSuperclass().getSimpleName();
}
else
{
className = className.substring(className.lastIndexOf(".") + 1);
}
String convertedKey = StringUtils.replaceUpperCaseCharactersWithUnderscores(baseKey);
key = className + "." + convertedKey;
}
String result = lookupFromEnvironment(key, String.class, null, null);
if(result == null)
{
return defaultValue != null ? defaultValue : null;
}
if(String.class.isAssignableFrom(targetType))
{
return targetType.cast(result);
}
if(Boolean.class.isAssignableFrom(targetType))
{
return targetType.cast(Boolean.parseBoolean(result));
}
if(Integer.class.isAssignableFrom(targetType))
{
return targetType.cast(Integer.parseInt(result));
}
throw new IllegalArgumentException(targetType.getName() + " isn't supported");
}