public synchronized Class getProxyClass()

in core/src/main/java/org/apache/commons/proxy2/impl/ProxyClassCache.java [92:116]


    public synchronized Class<?> getProxyClass(ClassLoader classLoader, Class<?>[] proxyClasses)
    {
        final Map<Set<Class<?>>, WeakReference<Class<?>>> classCache = getClassCache(classLoader);
        final Set<Class<?>> key = toClassCacheKey(proxyClasses);
        Class<?> proxyClass;
        Reference<Class<?>> proxyClassReference = classCache.get(key);
        if (proxyClassReference == null)
        {
            proxyClass = proxyClassGenerator.generateProxyClass(classLoader, proxyClasses);
            classCache.put(key, new WeakReference<Class<?>>(proxyClass));
        }
        else
        {
            synchronized (proxyClassReference)
            {
                proxyClass = proxyClassReference.get();
                if (proxyClass == null)
                {
                    proxyClass = proxyClassGenerator.generateProxyClass(classLoader, proxyClasses);
                    classCache.put(key, new WeakReference<Class<?>>(proxyClass));
                }
            }
        }
        return proxyClass;
    }