in core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java [113:184]
static <T> List<T> resolveFromEnvironment(final String key,
final Class<T> targetType,
boolean supportOfMultipleArtifacts,
T defaultImplementation)
{
List<T> results = new ArrayList<T>();
List<T> resolverResult;
List<ConfiguredValueResolver> resolvers = getConfiguredValueResolvers();
for(ConfiguredValueResolver configuredValueResolver : resolvers)
{
resolverResult = configuredValueResolver.resolveInstances(new ConfiguredValueDescriptor<String, T>()
{
/**
* {@inheritDoc}
*/
public String getKey()
{
return key;
}
/**
* {@inheritDoc}
*/
public Class<T> getTargetType()
{
return targetType;
}
});
Field defaultInjectionPoint;
if(resolverResult != null)
{
for(T currentResult : resolverResult)
{
if(defaultImplementation != null && currentResult.getClass().isAnnotationPresent(Advanced.class))
{
defaultInjectionPoint = findInjectionPointForDefaultImplementation(currentResult, targetType);
if(defaultInjectionPoint != null)
{
try
{
//TODO
defaultInjectionPoint.setAccessible(true);
defaultInjectionPoint.set(currentResult, defaultImplementation);
}
catch (Exception e)
{
Logger logger = Logger.getLogger(ConfiguredArtifactUtils.class.getName());
if(logger.isLoggable(Level.SEVERE))
{
logger.log(Level.SEVERE, currentResult.getClass().getName() + " is annotated with" +
Advanced.class.getName() + " but it wasn't possible to inject the default" +
" implementation into " + defaultInjectionPoint.getName() + "." +
" Please contact the community or remove the annotation.", e);
}
}
}
}
results.add(currentResult);
}
}
}
checkArtifacts(targetType, results, supportOfMultipleArtifacts);
return results;
}