in core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/resource/bundle/DefaultResourceBundle.java [93:151]
public String getValue(Class<? extends BundleKey> key)
{
//in case of an inner class
if("".equals(key.getSimpleName()) && BundleKey.class.isAssignableFrom(key.getSuperclass()))
{
key = (Class<? extends BundleKey>) key.getSuperclass();
}
Named named = key.getAnnotation(Named.class);
String resourceKey = null;
if(named != null)
{
resourceKey = named.value();
}
if(resourceKey == null)
{
resourceKey = StringUtils.replaceUpperCaseCharactersWithUnderscores(
key.getSimpleName().substring(0, 1).toLowerCase() + key.getSimpleName().substring(1));
}
Class<?> bundleClass = key.getSuperclass();
if(this.bundleName == null &&
!Object.class.getName().equals(bundleClass.getName()) &&
!BundleValue.class.isAssignableFrom(bundleClass))
{
useBundle(bundleClass);
}
else
{
List<Class> bundleClassCandidates = new ArrayList<Class>();
for(Class interfaceClass : key.getInterfaces())
{
if(interfaceClass.isAnnotationPresent(Bundle.class))
{
useBundle(interfaceClass);
break;
}
if(!BundleKey.class.isAssignableFrom(interfaceClass))
{
bundleClassCandidates.add(interfaceClass);
}
}
if(this.bundleName == null && bundleClassCandidates.size() == 1)
{
useBundle(bundleClassCandidates.iterator().next());
}
else if(this.bundleName == null && bundleClassCandidates.size() > 1)
{
throw new IllegalStateException(key.getName() + " implements multiple custom interfaces and " +
"non of them is annotated with @" + Bundle.class);
}
}
return getValue(resourceKey);
}