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;
}