protected Class resolveBeanClass()

in extscript-core-root/extscript-spring/src/main/java/org/apache/myfaces/extensions/scripting/spring/bean/CompilationAwareRefreshableBeanFactory.java [133:173]


    protected Class resolveBeanClass(RootBeanDefinition beanDefinition, String beanName, Class[] typesToMatch) throws CannotLoadBeanClassException
    {
        try
        {
            // Note that this implementation doesn't check if the bean class has
            // already been resolved previously (i.e. there's no check whether
            // mbd.getBeanClass() is null). In doing so, it's possible to
            // reload recompiled Class files.

            if (typesToMatch != null)
            {
                ClassLoader tempClassLoader = getTempClassLoader();
                if (tempClassLoader != null)
                {
                    if (tempClassLoader instanceof DecoratingClassLoader)
                    {
                        DecoratingClassLoader dcl = (DecoratingClassLoader) tempClassLoader;
                        for (int i = 0; i < typesToMatch.length; i++)
                        {
                            dcl.excludeClass(typesToMatch[i].getName());
                        }
                    }
                    String className = beanDefinition.getBeanClassName();
                    return (className != null ? ClassUtils.forName(className, tempClassLoader) : null);
                }
            }

            Class retVal = beanDefinition.resolveBeanClass(getBeanClassLoader());
            return retVal;
        }
        catch (ClassNotFoundException ex)
        {
            throw new CannotLoadBeanClassException(
                    beanDefinition.getResourceDescription(), beanName, beanDefinition.getBeanClassName(), ex);
        }
        catch (LinkageError err)
        {
            throw new CannotLoadBeanClassException(
                    beanDefinition.getResourceDescription(), beanName, beanDefinition.getBeanClassName(), err);
        }
    }