// $Id$ package org.hibernate.test.annotations.fkcircularity; import java.io.PrintWriter; import java.io.StringWriter; import org.jboss.logging.Logger; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; import org.hibernate.dialect.HSQLDialect; import org.hibernate.dialect.SQLServerDialect; import org.hibernate.service.ServiceRegistry; import org.hibernate.testing.ServiceRegistryBuilder; /** * Test case for ANN-722 and ANN-730. * * @author Hardy Ferentschik */ public class FkCircularityTest { private static final Logger log = Logger.getLogger( FkCircularityTest.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 testJoinedSublcassesInPK() { try { Configuration config = new Configuration(); config.addAnnotatedClass(A.class); config.addAnnotatedClass(B.class); config.addAnnotatedClass(C.class); config.addAnnotatedClass(D.class); config.buildSessionFactory( serviceRegistry ); String[] schema = config .generateSchemaCreationScript(new SQLServerDialect()); for (String s : schema) { log.debug(s); } log.debug("success"); } catch (Exception e) { StringWriter writer = new StringWriter(); e.printStackTrace(new PrintWriter(writer)); log.debug(writer.toString()); Assert.fail( e.getMessage() ); } } @Test public void testDeepJoinedSuclassesHierachy() { try { Configuration config = new Configuration(); config.addAnnotatedClass(ClassA.class); config.addAnnotatedClass(ClassB.class); config.addAnnotatedClass(ClassC.class); config.addAnnotatedClass(ClassD.class); config.buildSessionFactory( serviceRegistry ); String[] schema = config .generateSchemaCreationScript(new HSQLDialect()); for (String s : schema) { log.debug(s); } log.debug("success"); } catch (Exception e) { StringWriter writer = new StringWriter(); e.printStackTrace(new PrintWriter(writer)); log.debug(writer.toString()); Assert.fail(e.getMessage()); } } }