// $Id$
package org.hibernate.test.annotations.fkcircularity;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.jboss.logging.Logger;
import junit.framework.TestCase;
import org.hibernate.cfg.AnnotationConfiguration;
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;
import org.hibernate.testing.TestForIssue;
/**
* Test case for ANN-722 and ANN-730.
*
* @author Hardy Ferentschik
*/
public class FkCircularityTest extends TestCase {
private static final Logger log = Logger.getLogger( FkCircularityTest.class );
private ServiceRegistry serviceRegistry;
@Override
protected void setUp() {
serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( Environment.getProperties() );
}
@Override
protected void tearDown() {
if (serviceRegistry != null) ServiceRegistryBuilder.destroy(serviceRegistry);
}
public void testJoinedSublcassesInPK() {
try {
AnnotationConfiguration config = new AnnotationConfiguration();
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());
fail(e.getMessage());
}
}
public void testDeepJoinedSuclassesHierachy() {
try {
AnnotationConfiguration config = new AnnotationConfiguration();
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());
fail(e.getMessage());
}
}
}