[hibernate-commits] Hibernate SVN: r18617 - in core/trunk/cache-infinispan/src: test/java/org/hibernate/test/cache/infinispan and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Mon Jan 25 10:47:02 EST 2010


Author: galder.zamarreno at jboss.com
Date: 2010-01-25 10:47:02 -0500 (Mon, 25 Jan 2010)
New Revision: 18617

Modified:
   core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java
   core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/TypeOverrides.java
   core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java
Log:
[HHH-4814] (Configure global/cache level JMX statistics from Hibernate configuration file) Added hibernate.cache.infinispan.statistics that enables cache manager and individual cache statistics.

Modified: core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java
===================================================================
--- core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java	2010-01-25 07:56:21 UTC (rev 18616)
+++ core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java	2010-01-25 15:47:02 UTC (rev 18617)
@@ -55,13 +55,15 @@
    private static final String STRATEGY_SUFFIX = ".eviction.strategy";
 
    private static final String WAKE_UP_INTERVAL_SUFFIX = ".eviction.wake_up_interval";
-   
+
    private static final String MAX_ENTRIES_SUFFIX = ".eviction.max_entries";
-   
+
    private static final String LIFESPAN_SUFFIX = ".expiration.lifespan";
-   
+
    private static final String MAX_IDLE_SUFFIX = ".expiration.max_idle";
-   
+
+//   private static final String STATISTICS_SUFFIX = ".statistics";
+
    /** 
     * Classpath or filesystem resource containing Infinispan configurations the factory should use.
     * 
@@ -69,6 +71,8 @@
     */
    public static final String INFINISPAN_CONFIG_RESOURCE_PROP = "hibernate.cache.infinispan.cfg";
 
+   public static final String INFINISPAN_GLOBAL_STATISTICS_PROP = "hibernate.cache.infinispan.statistics";
+
    private static final String ENTITY_KEY = "entity";
    
    /**
@@ -107,35 +111,35 @@
     * @see #DEF_QUERY_RESOURCE
     */
    public static final String QUERY_CACHE_RESOURCE_PROP = PREFIX + QUERY_KEY + CONFIG_SUFFIX;
-   
+
    /**
     * Default value for {@link #INFINISPAN_RESOURCE_PROP}. Specifies the "infinispan-configs.xml" file in this package.
     */
    public static final String DEF_INFINISPAN_CONFIG_RESOURCE = "org/hibernate/cache/infinispan/builder/infinispan-configs.xml";
-   
+
    /**
     * Default value for {@link #ENTITY_CACHE_RESOURCE_PROP}.
     */
    public static final String DEF_ENTITY_RESOURCE = "entity";
-   
+
    /**
     * Default value for {@link #TIMESTAMPS_CACHE_RESOURCE_PROP}.
     */
    public static final String DEF_TIMESTAMPS_RESOURCE = "timestamps";
-   
+
    /**
     * Default value for {@link #QUERY_CACHE_RESOURCE_PROP}.
     */
    public static final String DEF_QUERY_RESOURCE = "local-query";
-   
+
    private CacheManager manager;
-   
+
    private final Map<String, TypeOverrides> typeOverrides = new HashMap<String, TypeOverrides>();
-   
+
    private final Set<String> definedConfigurations = new HashSet<String>();
-   
+
    private org.infinispan.transaction.lookup.TransactionManagerLookup transactionManagerlookup;
-   
+
    private TransactionManager transactionManager;
 
    /**
@@ -206,12 +210,12 @@
       return true;
    }
 
-	@Override
-	public AccessType getDefaultAccessType() {
-		return AccessType.TRANSACTIONAL;
-	}
+   @Override
+   public AccessType getDefaultAccessType() {
+      return AccessType.TRANSACTIONAL;
+   }
 
-	/**
+   /**
     * {@inheritDoc}
     */
    public long nextTimestamp() {
@@ -234,7 +238,6 @@
       try {
          transactionManagerlookup = new HibernateTransactionManagerLookup(settings, properties);
          transactionManager = transactionManagerlookup.getTransactionManager();
-         
          manager = createCacheManager(properties);
          initGenericDataTypeOverrides();
          Enumeration keys = properties.propertyNames();
@@ -278,7 +281,13 @@
    protected CacheManager createCacheManager(Properties properties) throws CacheException {
       try {
          String configLoc = PropertiesHelper.getString(INFINISPAN_CONFIG_RESOURCE_PROP, properties, DEF_INFINISPAN_CONFIG_RESOURCE);
-         return new DefaultCacheManager(configLoc);
+         CacheManager manager = new DefaultCacheManager(configLoc, false);
+         String globalStats = PropertiesHelper.extractPropertyValue(INFINISPAN_GLOBAL_STATISTICS_PROP, properties);
+         if (globalStats != null) {
+            manager.getGlobalConfiguration().setExposeGlobalJmxStatistics(Boolean.parseBoolean(globalStats));
+         }
+         manager.start();
+         return manager;
       } catch (IOException e) {
          throw new CacheException("Unable to create default cache manager", e);
       }
@@ -299,12 +308,7 @@
       typeOverrides.put(QUERY_KEY, queryOverrides);
       return typeOverrides;
    }
-   
-//   private boolean isGenericDataTypeProperty(String property) {
-//      return property.startsWith(PREFIX + ENTITY_KEY) || property.startsWith(PREFIX + COLLECTION_KEY) 
-//            || property.startsWith(PREFIX + QUERY_KEY) || property.startsWith(PREFIX + TIMESTAMP_KEY);
-//   }
-   
+
    private void dissectProperty(int prefixLoc, String key, Properties properties) {
       TypeOverrides cfgOverride = null;
       int suffixLoc = -1;
@@ -327,6 +331,10 @@
          cfgOverride = getOrCreateConfig(prefixLoc, key, suffixLoc);
          cfgOverride.setExpirationMaxIdle(Long.parseLong(PropertiesHelper.extractPropertyValue(key, properties)));
       }
+//      else if ((suffixLoc = key.indexOf(STATISTICS_SUFFIX)) != -1) {
+//         cfgOverride = getOrCreateConfig(prefixLoc, key, suffixLoc);
+//         cfgOverride.setExposeStatistics(Boolean.parseBoolean(PropertiesHelper.extractPropertyValue(key, properties)));
+//      }
    }
 
    private TypeOverrides getOrCreateConfig(int prefixLoc, String key, int suffixLoc) {
@@ -338,11 +346,11 @@
       }
       return cfgOverride;
    }
-   
+
    private void defineGenericDataTypeCacheConfigurations(Settings settings, Properties properties) throws CacheException {
       String[] defaultGenericDataTypes = new String[]{ENTITY_KEY, COLLECTION_KEY, TIMESTAMPS_KEY, QUERY_KEY};
       for (String type : defaultGenericDataTypes) {
-         TypeOverrides override = typeOverrides.get(type);
+         TypeOverrides override = overrideStatisticsIfPresent(typeOverrides.get(type), properties);
          String cacheName = override.getCacheName();
          Configuration newCacheCfg = override.createInfinispanConfiguration();
          // Apply overrides
@@ -354,7 +362,7 @@
          override.validateInfinispanConfiguration(cacheConfig);
       }
    }
-   
+
    private Cache getCache(String regionName, String typeKey, Properties properties) {
       TypeOverrides regionOverride = typeOverrides.get(regionName);
       if (!definedConfigurations.contains(regionName)) {
@@ -362,6 +370,7 @@
          Configuration regionCacheCfg = null;
          if (regionOverride != null) {
             if (log.isDebugEnabled()) log.debug("Entity cache region specific configuration exists: " + regionOverride);
+            regionOverride = overrideStatisticsIfPresent(regionOverride, properties);
             regionCacheCfg = regionOverride.createInfinispanConfiguration();
             String cacheName = regionOverride.getCacheName();
             if (cacheName != null) // Region specific override with a given cache name
@@ -381,7 +390,7 @@
       }
       return manager.getCache(regionName);
    }
-   
+
    private Configuration configureTransactionManager(Configuration regionOverrides, String templateCacheName, Properties properties) {
       // Get existing configuration to verify whether a tm was configured or not.
       Configuration templateConfig = manager.defineConfiguration(templateCacheName, new Configuration());
@@ -395,4 +404,12 @@
       }
       return regionOverrides;
    }
+
+   private TypeOverrides overrideStatisticsIfPresent(TypeOverrides override, Properties properties) {
+      String globalStats = PropertiesHelper.extractPropertyValue(INFINISPAN_GLOBAL_STATISTICS_PROP, properties);
+      if (globalStats != null) {
+         override.setExposeStatistics(Boolean.parseBoolean(globalStats));
+      }
+      return override;
+   }
 }
\ No newline at end of file

Modified: core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/TypeOverrides.java
===================================================================
--- core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/TypeOverrides.java	2010-01-25 07:56:21 UTC (rev 18616)
+++ core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/TypeOverrides.java	2010-01-25 15:47:02 UTC (rev 18617)
@@ -21,7 +21,9 @@
  */
 package org.hibernate.cache.infinispan;
 
+import java.util.HashSet;
 import java.util.Locale;
+import java.util.Set;
 
 import org.hibernate.cache.CacheException;
 import org.infinispan.config.Configuration;
@@ -36,19 +38,23 @@
  * @since 3.5
  */
 public class TypeOverrides {
-   
+
+   private final Set<String> overridden = new HashSet<String>();
+
    private String cacheName;
-   
+
    private EvictionStrategy evictionStrategy;
-   
-   private long evictionWakeUpInterval = Long.MIN_VALUE;
-   
-   private int evictionMaxEntries = Integer.MIN_VALUE;
-   
-   private long expirationLifespan = Long.MIN_VALUE;
-   
-   private long expirationMaxIdle = Long.MIN_VALUE;
 
+   private long evictionWakeUpInterval;
+
+   private int evictionMaxEntries;
+
+   private long expirationLifespan;
+
+   private long expirationMaxIdle;
+
+   private boolean isExposeStatistics;
+
    public String getCacheName() {
       return cacheName;
    }
@@ -62,6 +68,7 @@
    }
 
    public void setEvictionStrategy(String evictionStrategy) {
+      markAsOverriden("evictionStrategy");
       this.evictionStrategy = EvictionStrategy.valueOf(uc(evictionStrategy));
    }
 
@@ -70,6 +77,7 @@
    }
 
    public void setEvictionWakeUpInterval(long evictionWakeUpInterval) {
+      markAsOverriden("evictionWakeUpInterval");
       this.evictionWakeUpInterval = evictionWakeUpInterval;
    }
 
@@ -78,6 +86,7 @@
    }
 
    public void setEvictionMaxEntries(int evictionMaxEntries) {
+      markAsOverriden("evictionMaxEntries");
       this.evictionMaxEntries = evictionMaxEntries;
    }
 
@@ -86,6 +95,7 @@
    }
 
    public void setExpirationLifespan(long expirationLifespan) {
+      markAsOverriden("expirationLifespan");
       this.expirationLifespan = expirationLifespan;
    }
 
@@ -94,32 +104,34 @@
    }
 
    public void setExpirationMaxIdle(long expirationMaxIdle) {
+      markAsOverriden("expirationMaxIdle");
       this.expirationMaxIdle = expirationMaxIdle;
    }
-   
-//   public boolean isConvertedToInfinispanConfiguration() {
-//      return convertedToInfinispanConfiguration;
-//   }
-   
+
+   public boolean isExposeStatistics() {
+      return isExposeStatistics;
+   }
+
+   public void setExposeStatistics(boolean isExposeStatistics) {
+      markAsOverriden("isExposeStatistics");
+      this.isExposeStatistics = isExposeStatistics;
+   }
+
    public Configuration createInfinispanConfiguration() {
       Configuration cacheCfg = new Configuration();
-      // If eviction strategy is different from null, an override has been defined
-      if (evictionStrategy != null) cacheCfg.setEvictionStrategy(evictionStrategy);
-      // If eviction wake up interval is different from min value, an override has been defined
-      // Checking for -1 might not be enough because user might have defined -1 in the config.
-      // Same applies to other configuration options.
-      if (evictionWakeUpInterval != Long.MIN_VALUE) cacheCfg.setEvictionWakeUpInterval(evictionWakeUpInterval);
-      if (evictionMaxEntries != Integer.MIN_VALUE) cacheCfg.setEvictionMaxEntries(evictionMaxEntries);
-      if (expirationLifespan != Long.MIN_VALUE) cacheCfg.setExpirationLifespan(expirationLifespan); 
-      if (expirationMaxIdle != Long.MIN_VALUE) cacheCfg.setExpirationMaxIdle(expirationMaxIdle);
-//      convertedToInfinispanConfiguration = true;
+      if (overridden.contains("evictionStrategy")) cacheCfg.setEvictionStrategy(evictionStrategy);
+      if (overridden.contains("evictionWakeUpInterval")) cacheCfg.setEvictionWakeUpInterval(evictionWakeUpInterval);
+      if (overridden.contains("evictionMaxEntries")) cacheCfg.setEvictionMaxEntries(evictionMaxEntries);
+      if (overridden.contains("expirationLifespan")) cacheCfg.setExpirationLifespan(expirationLifespan);
+      if (overridden.contains("expirationMaxIdle")) cacheCfg.setExpirationMaxIdle(expirationMaxIdle);
+      if (overridden.contains("isExposeStatistics")) cacheCfg.setExposeJmxStatistics(isExposeStatistics);
       return cacheCfg;
    }
-   
+
    public void validateInfinispanConfiguration(Configuration configuration) throws CacheException {
       // no-op
    }
-   
+
    @Override
    public String toString() {
       return new StringBuilder().append(getClass().getSimpleName()).append('{')
@@ -131,8 +143,12 @@
          .append(", maxIdle=").append(expirationMaxIdle)
          .append('}').toString();
    }
-   
+
    private String uc(String s) {
       return s == null ? null : s.toUpperCase(Locale.ENGLISH);
    }
+
+   private void markAsOverriden(String fieldName) {
+      overridden.add(fieldName);
+   }
 }

Modified: core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java
===================================================================
--- core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java	2010-01-25 07:56:21 UTC (rev 18616)
+++ core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java	2010-01-25 15:47:02 UTC (rev 18617)
@@ -121,6 +121,7 @@
       CacheManager manager = factory.getCacheManager();
       manager.getGlobalConfiguration().setTransportClass(null);
       try {
+         assertFalse(manager.getGlobalConfiguration().isExposeGlobalJmxStatistics());
          assertNotNull(factory.getTypeOverrides().get(person));
          assertFalse(factory.getDefinedConfigurations().contains(person));
          assertNotNull(factory.getTypeOverrides().get(addresses));
@@ -138,6 +139,7 @@
          assertEquals(5000, cacheCfg.getEvictionMaxEntries());
          assertEquals(60000, cacheCfg.getExpirationLifespan());
          assertEquals(30000, cacheCfg.getExpirationMaxIdle());
+         assertFalse(cacheCfg.isExposeJmxStatistics());
 
          region = (EntityRegionImpl) factory.buildEntityRegion(address, p, null);
          assertNotNull(factory.getTypeOverrides().get(person));
@@ -148,6 +150,7 @@
          assertEquals(EvictionStrategy.FIFO, cacheCfg.getEvictionStrategy());
          assertEquals(3000, cacheCfg.getEvictionWakeUpInterval());
          assertEquals(20000, cacheCfg.getEvictionMaxEntries());
+         assertFalse(cacheCfg.isExposeJmxStatistics());
 
          region = (EntityRegionImpl) factory.buildEntityRegion(car, p, null);
          assertNotNull(factory.getTypeOverrides().get(person));
@@ -158,6 +161,7 @@
          assertEquals(EvictionStrategy.FIFO, cacheCfg.getEvictionStrategy());
          assertEquals(3000, cacheCfg.getEvictionWakeUpInterval());
          assertEquals(20000, cacheCfg.getEvictionMaxEntries());
+         assertFalse(cacheCfg.isExposeJmxStatistics());
 
          CollectionRegionImpl collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion(addresses, p, null);
          assertNotNull(factory.getTypeOverrides().get(addresses));
@@ -170,6 +174,7 @@
          assertEquals(5500, cacheCfg.getEvictionMaxEntries());
          assertEquals(65000, cacheCfg.getExpirationLifespan());
          assertEquals(35000, cacheCfg.getExpirationMaxIdle());
+         assertFalse(cacheCfg.isExposeJmxStatistics());
 
          collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion(parts, p, null);
          assertNotNull(factory.getTypeOverrides().get(addresses));
@@ -180,6 +185,7 @@
          assertEquals(EvictionStrategy.LRU, cacheCfg.getEvictionStrategy());
          assertEquals(3500, cacheCfg.getEvictionWakeUpInterval());
          assertEquals(25000, cacheCfg.getEvictionMaxEntries());
+         assertFalse(cacheCfg.isExposeJmxStatistics());
 
          collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion(parts, p, null);
          assertNotNull(factory.getTypeOverrides().get(addresses));
@@ -190,6 +196,7 @@
          assertEquals(EvictionStrategy.LRU, cacheCfg.getEvictionStrategy());
          assertEquals(3500, cacheCfg.getEvictionWakeUpInterval());
          assertEquals(25000, cacheCfg.getEvictionMaxEntries());
+         assertFalse(cacheCfg.isExposeJmxStatistics());
       } finally {
          factory.stop();
       }
@@ -282,7 +289,7 @@
       } catch(CacheException ce) {
       }
    }
-   
+
    public void testBuildDefaultTimestampsRegion() {
       final String timestamps = "org.hibernate.cache.UpdateTimestampsCache";
       Properties p = new Properties();
@@ -302,6 +309,7 @@
          assertEquals(EvictionStrategy.NONE, cacheCfg.getEvictionStrategy());
          assertEquals(CacheMode.REPL_ASYNC, cacheCfg.getCacheMode());
          assertTrue(cacheCfg.isUseLazyDeserialization());
+         assertFalse(cacheCfg.isExposeJmxStatistics());
       } finally {
          factory.stop();
       }
@@ -329,11 +337,12 @@
          assertEquals(EvictionStrategy.NONE, cacheCfg.getEvictionStrategy());
          assertEquals(CacheMode.REPL_SYNC, cacheCfg.getCacheMode());
          assertFalse(cacheCfg.isUseLazyDeserialization());
+         assertFalse(cacheCfg.isExposeJmxStatistics());
       } finally {
          factory.stop();
       }
    }
-   
+
    public void testBuildTimestamRegionWithCacheNameOverride() {
       final String timestamps = "org.hibernate.cache.UpdateTimestampsCache";
       Properties p = new Properties();
@@ -370,7 +379,7 @@
          factory.stop();
       }
    }
-   
+
    public void testBuildTimestamRegionWithNoneEvictionOverride() {
       final String timestamps = "org.hibernate.cache.UpdateTimestampsCache";
       Properties p = new Properties();
@@ -389,7 +398,7 @@
          factory.stop();
       }
    }
-   
+
    public void testBuildQueryRegion() {
       final String query = "org.hibernate.cache.StandardQueryCache";
       Properties p = new Properties();
@@ -403,9 +412,107 @@
          CacheAdapter cache = region.getCacheAdapter();
          Configuration cacheCfg = cache.getConfiguration();
          assertEquals(CacheMode.LOCAL, cacheCfg.getCacheMode());
+         assertFalse(cacheCfg.isExposeJmxStatistics());
       } finally {
          factory.stop();
       }
    }
 
+   public void testEnableStatistics() {
+      Properties p = new Properties();
+      p.setProperty("hibernate.cache.infinispan.statistics", "true");
+      p.setProperty("hibernate.cache.infinispan.com.acme.Person.expiration.lifespan", "60000");
+      p.setProperty("hibernate.cache.infinispan.com.acme.Person.expiration.max_idle", "30000");
+      p.setProperty("hibernate.cache.infinispan.entity.cfg", "myentity-cache");
+      p.setProperty("hibernate.cache.infinispan.entity.eviction.strategy", "FIFO");
+      p.setProperty("hibernate.cache.infinispan.entity.eviction.wake_up_interval", "3000");
+      p.setProperty("hibernate.cache.infinispan.entity.eviction.max_entries", "10000");
+      InfinispanRegionFactory factory = new InfinispanRegionFactory();
+      factory.start(null, p);
+      CacheManager manager = factory.getCacheManager();
+      manager.getGlobalConfiguration().setTransportClass(null);
+      try {
+         assertTrue(manager.getGlobalConfiguration().isExposeGlobalJmxStatistics());
+         EntityRegionImpl region = (EntityRegionImpl) factory.buildEntityRegion("com.acme.Address", p, null);
+         CacheAdapter cache = region.getCacheAdapter();
+         assertTrue(factory.getTypeOverrides().get("entity").isExposeStatistics());
+         assertTrue(cache.getConfiguration().isExposeJmxStatistics());
+
+         region = (EntityRegionImpl) factory.buildEntityRegion("com.acme.Person", p, null);
+         cache = region.getCacheAdapter();
+         assertTrue(factory.getTypeOverrides().get("com.acme.Person").isExposeStatistics());
+         assertTrue(cache.getConfiguration().isExposeJmxStatistics());
+
+         final String query = "org.hibernate.cache.StandardQueryCache";
+         QueryResultsRegionImpl queryRegion = (QueryResultsRegionImpl) factory.buildQueryResultsRegion(query, p);
+         cache = queryRegion.getCacheAdapter();
+         assertTrue(factory.getTypeOverrides().get("query").isExposeStatistics());
+         assertTrue(cache.getConfiguration().isExposeJmxStatistics());
+
+         final String timestamps = "org.hibernate.cache.UpdateTimestampsCache";
+         Configuration config = new Configuration();
+         config.setFetchInMemoryState(false);
+         manager.defineConfiguration("timestamps", config);
+         TimestampsRegionImpl timestampsRegion = (TimestampsRegionImpl) factory.buildTimestampsRegion(timestamps, p);
+         cache = timestampsRegion.getCacheAdapter();
+         assertTrue(factory.getTypeOverrides().get("timestamps").isExposeStatistics());
+         assertTrue(cache.getConfiguration().isExposeJmxStatistics());
+
+         CollectionRegionImpl collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion("com.acme.Person.addresses", p, null);
+         cache = collectionRegion.getCacheAdapter();
+         assertTrue(factory.getTypeOverrides().get("collection").isExposeStatistics());
+         assertTrue(cache.getConfiguration().isExposeJmxStatistics());
+      } finally {
+         factory.stop();
+      }
+   }
+
+   public void testDisableStatistics() {
+      Properties p = new Properties();
+      p.setProperty("hibernate.cache.infinispan.statistics", "false");
+      p.setProperty("hibernate.cache.infinispan.com.acme.Person.expiration.lifespan", "60000");
+      p.setProperty("hibernate.cache.infinispan.com.acme.Person.expiration.max_idle", "30000");
+      p.setProperty("hibernate.cache.infinispan.entity.cfg", "myentity-cache");
+      p.setProperty("hibernate.cache.infinispan.entity.eviction.strategy", "FIFO");
+      p.setProperty("hibernate.cache.infinispan.entity.eviction.wake_up_interval", "3000");
+      p.setProperty("hibernate.cache.infinispan.entity.eviction.max_entries", "10000");
+      InfinispanRegionFactory factory = new InfinispanRegionFactory();
+      factory.start(null, p);
+      CacheManager manager = factory.getCacheManager();
+      manager.getGlobalConfiguration().setTransportClass(null);
+      try {
+         assertFalse(manager.getGlobalConfiguration().isExposeGlobalJmxStatistics());
+         EntityRegionImpl region = (EntityRegionImpl) factory.buildEntityRegion("com.acme.Address", p, null);
+         CacheAdapter cache = region.getCacheAdapter();
+         assertFalse(factory.getTypeOverrides().get("entity").isExposeStatistics());
+         assertFalse(cache.getConfiguration().isExposeJmxStatistics());
+
+         region = (EntityRegionImpl) factory.buildEntityRegion("com.acme.Person", p, null);
+         cache = region.getCacheAdapter();
+         assertFalse(factory.getTypeOverrides().get("com.acme.Person").isExposeStatistics());
+         assertFalse(cache.getConfiguration().isExposeJmxStatistics());
+
+         final String query = "org.hibernate.cache.StandardQueryCache";
+         QueryResultsRegionImpl queryRegion = (QueryResultsRegionImpl) factory.buildQueryResultsRegion(query, p);
+         cache = queryRegion.getCacheAdapter();
+         assertFalse(factory.getTypeOverrides().get("query").isExposeStatistics());
+         assertFalse(cache.getConfiguration().isExposeJmxStatistics());
+
+         final String timestamps = "org.hibernate.cache.UpdateTimestampsCache";
+         Configuration config = new Configuration();
+         config.setFetchInMemoryState(false);
+         manager.defineConfiguration("timestamps", config);
+         TimestampsRegionImpl timestampsRegion = (TimestampsRegionImpl) factory.buildTimestampsRegion(timestamps, p);
+         cache = timestampsRegion.getCacheAdapter();
+         assertFalse(factory.getTypeOverrides().get("timestamps").isExposeStatistics());
+         assertFalse(cache.getConfiguration().isExposeJmxStatistics());
+
+         CollectionRegionImpl collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion("com.acme.Person.addresses", p, null);
+         cache = collectionRegion.getCacheAdapter();
+         assertFalse(factory.getTypeOverrides().get("collection").isExposeStatistics());
+         assertFalse(cache.getConfiguration().isExposeJmxStatistics());
+      } finally {
+         factory.stop();
+      }
+   }
 }



More information about the hibernate-commits mailing list