{
Class<?> type;
Class<? extends ExoContainer>[] containers;
if (definitionType == DefinitionType.TYPE)
{
DefinitionByType definition = componentType.getAnnotation(DefinitionByType.class);
containers = definition.target();
type = definition.type();
}
else if (definitionType == DefinitionType.NAME)
{
DefinitionByName definition = componentType.getAnnotation(DefinitionByName.class);
if (!definition.named().equals(componentKey))
{
return false;
}
containers = definition.target();
type = definition.type();
}
else
{
DefinitionByQualifier definition = componentType.getAnnotation(DefinitionByQualifier.class);
if (!definition.qualifier().equals(componentKey))
{
return false;
}
containers = definition.target();
type = definition.type();
}
if (!accepts(containers))
{
// The class of the current container is not part of the allowed classes.
return false;