diff --git a/hibernate-core/src/test/java/org/hibernate/test/cfg/cache/DefaultCacheConcurrencyPropertyTest.java b/hibernate-core/src/test/java/org/hibernate/test/cfg/cache/DefaultCacheConcurrencyPropertyTest.java new file mode 100644 index 0000000000..f6c3e8772b --- /dev/null +++ b/hibernate-core/src/test/java/org/hibernate/test/cfg/cache/DefaultCacheConcurrencyPropertyTest.java @@ -0,0 +1,82 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later. + * See the lgpl.txt file in the root directory or . + */ +package org.hibernate.test.cfg.cache; + +import javax.persistence.Cacheable; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.Immutable; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.boot.spi.MetadataImplementor; +import org.hibernate.cache.spi.access.AccessType; +import org.hibernate.cfg.AvailableSettings; +import org.hibernate.engine.config.spi.ConfigurationService; +import org.hibernate.engine.spi.SessionFactoryImplementor; +import org.hibernate.persister.entity.EntityPersister; + +import org.hibernate.testing.FailureExpected; +import org.hibernate.testing.TestForIssue; +import org.hibernate.testing.junit4.BaseUnitTestCase; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +/** + * @author Gail Badner + */ +public class DefaultCacheConcurrencyPropertyTest extends BaseUnitTestCase { + + @Test + @TestForIssue( jiraKey = "HHH-9763" ) + @FailureExpected( jiraKey = "HHH-9763" ) + public void testExplicitDefault() { + + final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() + .applySetting( AvailableSettings.DEFAULT_CACHE_CONCURRENCY_STRATEGY, "read-only" ) + .build(); + try { + assertEquals( + "read-only", + ssr.getService( ConfigurationService.class ).getSettings().get( + AvailableSettings.DEFAULT_CACHE_CONCURRENCY_STRATEGY + ) + ); + final MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) + .addAnnotatedClass( TheEntity.class ) + .buildMetadata(); + assertEquals( + AccessType.READ_ONLY, + metadata.getMetadataBuildingOptions().getMappingDefaults().getImplicitCacheAccessType() + ); + final SessionFactoryImplementor sf = (SessionFactoryImplementor) metadata.buildSessionFactory(); + try { + final EntityPersister persister = sf.getMetamodel().entityPersister( TheEntity.class.getName() ); + assertNotNull( persister.getCacheAccessStrategy() ); + } + finally { + sf.close(); + } + } + finally { + StandardServiceRegistryBuilder.destroy( ssr ); + } + } + + @Entity(name = "TheEntity") + @Table(name = "THE_ENTITY") + @Cacheable + @Immutable + public static class TheEntity { + @Id + public Long id; + } +}