/**
   * Tries to load the class specified otherwise defaults to null
   *
   * @return a map of CacheManagerPeerProviders
   */
  public Map<String, CacheManagerPeerProvider> createCachePeerProviders() {
    String className = null;
    Map<String, CacheManagerPeerProvider> cacheManagerPeerProviders =
        new HashMap<String, CacheManagerPeerProvider>();
    List<FactoryConfiguration> cachePeerProviderFactoryConfiguration =
        configuration.getCacheManagerPeerProviderFactoryConfiguration();
    for (FactoryConfiguration factoryConfiguration : cachePeerProviderFactoryConfiguration) {

      if (factoryConfiguration != null) {
        className = factoryConfiguration.getFullyQualifiedClassPath();
      }
      if (className == null) {
        LOG.fine(
            "No CachePeerProviderFactoryConfiguration specified. Not configuring a CacheManagerPeerProvider.");
        return null;
      } else {
        CacheManagerPeerProviderFactory cacheManagerPeerProviderFactory =
            (CacheManagerPeerProviderFactory) ClassLoaderUtil.createNewInstance(className);
        Properties properties =
            PropertyUtil.parseProperties(
                factoryConfiguration.getProperties(), factoryConfiguration.getPropertySeparator());
        CacheManagerPeerProvider cacheManagerPeerProvider =
            cacheManagerPeerProviderFactory.createCachePeerProvider(cacheManager, properties);
        cacheManagerPeerProviders.put(
            cacheManagerPeerProvider.getScheme(), cacheManagerPeerProvider);
      }
    }
    return cacheManagerPeerProviders;
  }
 /** Given an {@link CacheManager} get the corresponding instance of this class. */
 public static JGroupsCacheManagerPeerProvider getCachePeerProvider(CacheManager cacheManager) {
   final CacheManagerPeerProvider provider =
       cacheManager.getCacheManagerPeerProvider(JGroupsCacheManagerPeerProvider.SCHEME_NAME);
   if (provider == null) {
     LOG.warn(
         "No CacheManagerPeerProvider registered for {} scheme.",
         JGroupsCacheManagerPeerProvider.SCHEME_NAME);
     return null;
   }
   if (!(provider instanceof JGroupsCacheManagerPeerProvider)) {
     LOG.warn(
         "{} for scheme {} cannot be cast to {}.",
         new Object[] {
           provider.getClass(),
           JGroupsCacheManagerPeerProvider.SCHEME_NAME,
           JGroupsCacheManagerPeerProvider.class,
         });
     return null;
   }
   return (JGroupsCacheManagerPeerProvider) provider;
 }
 private void tracePeers() {
   CacheManagerPeerProvider peerProvider = manager.getCacheManagerPeerProvider("RMI");
   int peers = peerProvider.listRemoteCachePeers(manager.getEhcache(cacheName)).size();
   log.trace("Found {} remote cache peer(s)", peers);
 }