code: @Override
      public synchronized void init(Map<?, ?> properties)
      {
          if (manager != null)
          {
              log.warn("Attempt to restart an already started CacheFactory. Using previously created EhCacheFactory.");
              return;
          }
          initializing = true;
          try
          {
              String configurationResourceName = null;
              if (properties != null)
              {
                  configurationResourceName = (String) properties.get(NET_SF_EHCACHE_CONFIGURATION_RESOURCE_NAME);
              }
              if (configurationResourceName == null || configurationResourceName.length() == 0)
              {
                  manager = CacheManager.create();
              }
              else
              {
                  if (!configurationResourceName.startsWith("/"))
                  {
                      configurationResourceName = "/" + configurationResourceName;
                      log.info("prepending / to " + configurationResourceName + ". It should be placed in the root"
                              + "of the classpath rather than in a package.");
                  }
                  URL url = loadResource(configurationResourceName);
                  manager = CacheManager.create(url);
              }
          }
          catch (net.sf.ehcache.CacheException e)
          {
              if (e.getMessage().startsWith(
                      "Cannot parseConfiguration CacheManager. Attempt to create a new instance of "
                              + "CacheManager using the diskStorePath"))
              {
                  throw new CacheException("Could not init EhCacheFactory.", e);
              }
              else
              {
                  throw new CacheException(e);
              }
          }
          finally
          {
              initializing = false;
          }
  
      }
docs: /*
  (non-Javadoc)
  
  @see com.impetus.kundera.cache.CacheProvider#init(java.util.Map)