in core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/ServiceLoaderResolver.java [44:99]
public <K, T> List<T> resolveInstances(ConfiguredValueDescriptor<K, T> descriptor)
{
List<T> result = new ArrayList<T>();
final Class targetType = descriptor.getTargetType();
if(Modifier.isAbstract(targetType.getModifiers()) || Modifier.isInterface(targetType.getModifiers()))
{
@SuppressWarnings({"unchecked"})
List<T> services = ServiceProvider.loadServices(targetType, new EditableServiceProviderContext<T>()
{
private ServiceProviderContext serviceProviderContext =
ServiceProvider.createServiceProviderContext(targetType);
public T postConstruct(T instance)
{
if(serviceProviderContext instanceof EditableServiceProviderContext)
{
return ((EditableServiceProviderContext<T>)serviceProviderContext)
.postConstruct(instance);
}
return instance;
}
public boolean filterService(Class serviceClass)
{
if(serviceProviderContext instanceof EditableServiceProviderContext &&
!(serviceProviderContext instanceof DefaultServiceProviderContext))
{
return ((EditableServiceProviderContext<T>)serviceProviderContext)
.filterService(serviceClass);
}
//do nothing
return false;
}
public void preInstallServices(List<Class<?>> foundServiceClasses)
{
if(serviceProviderContext instanceof EditableServiceProviderContext)
{
((EditableServiceProviderContext<T>)serviceProviderContext)
.preInstallServices(foundServiceClasses);
}
}
public ClassLoader getClassLoader()
{
return serviceProviderContext.getClassLoader();
}
});
for(T currentInstance : services)
{
result.add(currentInstance);
}
}
return result;
}