private static Class resolveImplementation()

in core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ServiceProvider.java [172:215]


    private static <S> Class<S> resolveImplementation(Class<S> type, String customName)
    {
        List<String> classNames = new ArrayList<String>();
        classNames.add(customName);

        List<String> configuredClassNames =
                ConfigUtils.getConfiguredValue(type.getSimpleName() + "." + type.getName());

        if (configuredClassNames != null)
        {
            classNames.addAll(configuredClassNames);
        }

        List<Class<S>> classList = new ArrayList<Class<S>>(classNames.size());

        Class<S> currentClass = null;
        for (String currentClassName : classNames)
        {
            try
            {
                currentClass = ClassUtils.tryToLoadClassForName(currentClassName);
            }
            catch (Exception e)
            {
                if(LOGGER.isLoggable(Level.WARNING))
                {
                    LOGGER.warning("Couldn't load class: " + currentClassName);
                }
            }

            if (currentClass != null)
            {
                classList.add(currentClass);
            }
        }

        Class<S> result = null;
        if (!classList.isEmpty())
        {
            Collections.sort(classList, new InvocationOrderComparator<Object>());
            result = classList.iterator().next();
        }
        return result;
    }