2
* Created on 06-Dec-2004
5
package org.hibernate.test.mapping;
7
import junit.framework.Test;
8
import junit.framework.TestSuite;
10
import org.hibernate.mapping.JoinedSubclass;
11
import org.hibernate.mapping.PersistentClassVisitor;
12
import org.hibernate.mapping.RootClass;
13
import org.hibernate.mapping.SingleTableSubclass;
14
import org.hibernate.mapping.Subclass;
15
import org.hibernate.mapping.UnionSubclass;
16
import org.hibernate.junit.UnitTestCase;
22
public class PersistentClassVisitorTest extends UnitTestCase {
24
public PersistentClassVisitorTest(String string) {
28
static public class PersistentClassVisitorValidator implements PersistentClassVisitor {
30
private Object validate(Class expectedClass, Object visitee) {
31
if (!visitee.getClass().getName().equals(expectedClass.getName())) {
32
throw new IllegalStateException(visitee.getClass().getName()
33
+ " did not call proper accept method. Was "
34
+ expectedClass.getName());
39
public Object accept(RootClass class1) {
40
return validate(RootClass.class, class1);
43
public Object accept(UnionSubclass subclass) {
44
return validate(UnionSubclass.class, subclass);
47
public Object accept(SingleTableSubclass subclass) {
48
return validate(SingleTableSubclass.class, subclass);
51
public Object accept(JoinedSubclass subclass) {
52
return validate(JoinedSubclass.class, subclass);
55
public Object accept(Subclass subclass) {
56
return validate(Subclass.class, subclass);
62
public void testProperCallbacks() {
64
PersistentClassVisitorValidator vv = new PersistentClassVisitorValidator();
66
new RootClass().accept(vv);
67
new Subclass(new RootClass()).accept(vv);
68
new JoinedSubclass(new RootClass()).accept(vv);
69
new SingleTableSubclass(new RootClass()).accept(vv);
70
new UnionSubclass(new RootClass()).accept(vv);
74
public static Test suite() {
75
return new TestSuite(PersistentClassVisitorTest.class);