/* * 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 <http://www.gnu.org/licenses/lgpl-2.1.html>. */ // $Id$ package org.hibernate.test.annotations.namingstrategy; import java.util.Locale; import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl; import org.hibernate.cfg.Environment; import org.hibernate.mapping.Collection; import org.hibernate.service.ServiceRegistry; import org.hibernate.testing.ServiceRegistryBuilder; import org.hibernate.testing.junit4.BaseUnitTestCase; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.jboss.logging.Logger; import static org.junit.Assert.assertEquals; /** * Test harness for ANN-716. * * @author Hardy Ferentschik */ public class NamingStrategyTest extends BaseUnitTestCase { private static final Logger log = Logger.getLogger( NamingStrategyTest.class ); private ServiceRegistry serviceRegistry; @Before public void setUp() { serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( Environment.getProperties() ); } @After public void tearDown() { if ( serviceRegistry != null ) { ServiceRegistryBuilder.destroy( serviceRegistry ); } } @Test public void testWithCustomNamingStrategy() throws Exception { new MetadataSources( serviceRegistry ) .addAnnotatedClass(Address.class) .addAnnotatedClass(Person.class) .getMetadataBuilder() .applyPhysicalNamingStrategy( new DummyNamingStrategy() ) .build(); } @Test public void testWithJpaCompliantNamingStrategy() throws Exception { Metadata metadata = new MetadataSources( serviceRegistry ) .addAnnotatedClass( A.class ) .addAnnotatedClass( AddressEntry.class ) .getMetadataBuilder() .applyImplicitNamingStrategy( ImplicitNamingStrategyJpaCompliantImpl.INSTANCE ) .build(); Collection collectionBinding = metadata.getCollectionBinding( A.class.getName() + ".address" ); assertEquals( "Expecting A#address collection table name (implicit) to be [A_address] per JPA spec (section 11.1.8)", "A_ADDRESS", collectionBinding.getCollectionTable().getQuotedName().toUpperCase(Locale.ROOT) ); } @Test public void testWithoutCustomNamingStrategy() throws Exception { new MetadataSources( serviceRegistry ) .addAnnotatedClass( Address.class ) .addAnnotatedClass( Person.class ) .buildMetadata(); } }