/*
* Copyright (c) 2000, 2020, Oracle and/or its affiliates.
*
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
package com.tangosol.net.internal;
import com.oracle.coherence.common.base.Blocking;
import com.oracle.coherence.common.base.IdentityHolder;
import com.tangosol.io.ClassLoaderAware;
import com.tangosol.net.NamedCache;
import com.tangosol.net.security.Security;
import com.tangosol.util.ConcurrentMap;
import com.tangosol.util.SegmentedConcurrentMap;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
/**
* {@link ScopedCacheReferenceStore} holds scoped cache references.
*
* Cache references are scoped by ClassLoader and, optionally, Subject.
* ScopedCacheReferenceStore requires no explicit input about
* Subjects from its clients. Subject scoping is configured in the operational
* configuration and applies only to remote cache.
*
* Thread safety documented in {@link AbstractScopedReferenceStore}.
*
* @author jf 2015.06.22
*
* @since Coherence 12.2.1
*/
public class ScopedCacheReferenceStore
extends AbstractScopedReferenceStore
{
// ----- ScopedCacheReferenceStore methods ------------------------------------------------------------------------
/**
* Remove cache references from this store for all destroyed and released caches.
*/
public void clearInactiveCacheRefs()
{
for (Iterator