/* * 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: ExtendsTest.java 10977 2006-12-12 23:28:04Z steve.ebersole@jboss.com $ package org.hibernate.test.extendshbm; import org.hibernate.HibernateException; import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.internal.StandardServiceRegistryImpl; import org.hibernate.testing.ServiceRegistryBuilder; import org.hibernate.testing.junit4.BaseUnitTestCase; import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; /** * @author Gavin King */ public class ExtendsTest extends BaseUnitTestCase { private StandardServiceRegistryImpl serviceRegistry; @Before public void setUp() { serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry(); } @After public void tearDown() { ServiceRegistryBuilder.destroy( serviceRegistry ); } private String getBaseForMappings() { return "org/hibernate/test/"; } @Test public void testAllInOne() { Metadata metadata = new MetadataSources( serviceRegistry ) .addResource( getBaseForMappings() + "extendshbm/allinone.hbm.xml" ) .buildMetadata(); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Customer" ) ); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Person" ) ); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Employee" ) ); } @Test public void testOutOfOrder() { Metadata metadata = new MetadataSources( serviceRegistry ) .addResource( getBaseForMappings() + "extendshbm/Customer.hbm.xml" ) .addResource( getBaseForMappings() + "extendshbm/Person.hbm.xml" ) .addResource( getBaseForMappings() + "extendshbm/Employee.hbm.xml" ) .buildMetadata(); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Customer" ) ); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Person" ) ); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Employee" ) ); } @Test public void testNwaitingForSuper() { Metadata metadata = new MetadataSources( serviceRegistry ) .addResource( getBaseForMappings() + "extendshbm/Customer.hbm.xml" ) .addResource( getBaseForMappings() + "extendshbm/Employee.hbm.xml" ) .addResource( getBaseForMappings() + "extendshbm/Person.hbm.xml" ) .buildMetadata(); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Customer" ) ); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Person" ) ); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Employee" ) ); } @Test public void testMissingSuper() { try { Metadata metadata = new MetadataSources( serviceRegistry ) .addResource( getBaseForMappings() + "extendshbm/Customer.hbm.xml" ) .addResource( getBaseForMappings() + "extendshbm/Employee.hbm.xml" ) .buildMetadata(); fail( "Should not be able to build sessionFactory without a Person" ); } catch ( HibernateException e ) { } } @Test public void testAllSeparateInOne() { Metadata metadata = new MetadataSources( serviceRegistry ) .addResource( getBaseForMappings() + "extendshbm/allseparateinone.hbm.xml" ) .buildMetadata(); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Customer" ) ); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Person" ) ); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Employee" ) ); } @Test public void testJoinedSubclassAndEntityNamesOnly() { Metadata metadata = new MetadataSources( serviceRegistry ) .addResource( getBaseForMappings() + "extendshbm/entitynames.hbm.xml" ) .buildMetadata(); assertNotNull( metadata.getEntityBinding( "EntityHasName" ) ); assertNotNull( metadata.getEntityBinding( "EntityCompany" ) ); } @Test public void testEntityNamesWithPackage() { Metadata metadata = new MetadataSources( serviceRegistry ) .addResource( getBaseForMappings() + "extendshbm/packageentitynames.hbm.xml" ) .buildMetadata(); assertNotNull( metadata.getEntityBinding( "EntityHasName" ) ); assertNotNull( metadata.getEntityBinding( "EntityCompany" ) ); } @Test public void testUnionSubclass() { Metadata metadata = new MetadataSources( serviceRegistry ) .addResource( getBaseForMappings() + "extendshbm/unionsubclass.hbm.xml" ) .buildMetadata(); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Person" ) ); assertNotNull( metadata.getEntityBinding( "org.hibernate.test.extendshbm.Customer" ) ); } }