1
//$Id: ExtraLazyTest.java 10976 2006-12-12 23:22:26Z steve.ebersole@jboss.com $
2
package org.hibernate.test.extralazy;
7
import junit.framework.Test;
9
import org.hibernate.Hibernate;
10
import org.hibernate.Session;
11
import org.hibernate.Transaction;
12
import org.hibernate.junit.functional.FunctionalTestCase;
13
import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
18
public class ExtraLazyTest extends FunctionalTestCase {
20
public ExtraLazyTest(String str) {
24
public String[] getMappings() {
25
return new String[] { "extralazy/UserGroup.hbm.xml" };
28
public static Test suite() {
29
return new FunctionalTestClassTestSuite( ExtraLazyTest.class );
32
public void testOrphanDelete() {
33
Session s = openSession();
34
Transaction t = s.beginTransaction();
35
User gavin = new User("gavin", "secret");
36
Document hia = new Document("HiA", "blah blah blah", gavin);
37
Document hia2 = new Document("HiA2", "blah blah blah blah", gavin);
43
t = s.beginTransaction();
44
gavin = (User) s.get(User.class, "gavin");
45
assertEquals( 2, gavin.getDocuments().size() );
46
gavin.getDocuments().remove(hia2);
47
assertFalse( gavin.getDocuments().contains(hia2) );
48
assertTrue( gavin.getDocuments().contains(hia) );
49
assertEquals( 1, gavin.getDocuments().size() );
50
assertFalse( Hibernate.isInitialized( gavin.getDocuments() ) );
55
t = s.beginTransaction();
56
gavin = (User) s.get(User.class, "gavin");
57
assertEquals( 1, gavin.getDocuments().size() );
58
assertFalse( gavin.getDocuments().contains(hia2) );
59
assertTrue( gavin.getDocuments().contains(hia) );
60
assertFalse( Hibernate.isInitialized( gavin.getDocuments() ) );
61
assertNull( s.get(Document.class, "HiA2") );
62
gavin.getDocuments().clear();
63
assertTrue( Hibernate.isInitialized( gavin.getDocuments() ) );
69
public void testGet() {
70
Session s = openSession();
71
Transaction t = s.beginTransaction();
72
User gavin = new User("gavin", "secret");
73
User turin = new User("turin", "tiger");
74
Group g = new Group("developers");
75
g.getUsers().put("gavin", gavin);
76
g.getUsers().put("turin", turin);
78
gavin.getSession().put( "foo", new SessionAttribute("foo", "foo bar baz") );
79
gavin.getSession().put( "bar", new SessionAttribute("bar", "foo bar baz 2") );
84
t = s.beginTransaction();
85
g = (Group) s.get(Group.class, "developers");
86
gavin = (User) g.getUsers().get("gavin");
87
turin = (User) g.getUsers().get("turin");
90
assertNull( g.getUsers().get("emmanuel") );
91
assertFalse( Hibernate.isInitialized( g.getUsers() ) );
92
assertNotNull( gavin.getSession().get("foo") );
93
assertNull( turin.getSession().get("foo") );
94
assertFalse( Hibernate.isInitialized( gavin.getSession() ) );
95
assertFalse( Hibernate.isInitialized( turin.getSession() ) );
103
public void testRemoveClear() {
104
Session s = openSession();
105
Transaction t = s.beginTransaction();
106
User gavin = new User("gavin", "secret");
107
User turin = new User("turin", "tiger");
108
Group g = new Group("developers");
109
g.getUsers().put("gavin", gavin);
110
g.getUsers().put("turin", turin);
112
gavin.getSession().put( "foo", new SessionAttribute("foo", "foo bar baz") );
113
gavin.getSession().put( "bar", new SessionAttribute("bar", "foo bar baz 2") );
118
t = s.beginTransaction();
119
g = (Group) s.get(Group.class, "developers");
120
gavin = (User) g.getUsers().get("gavin");
121
turin = (User) g.getUsers().get("turin");
122
assertFalse( Hibernate.isInitialized( g.getUsers() ) );
123
g.getUsers().clear();
124
gavin.getSession().remove("foo");
125
assertTrue( Hibernate.isInitialized( g.getUsers() ) );
126
assertTrue( Hibernate.isInitialized( gavin.getSession() ) );
131
t = s.beginTransaction();
132
g = (Group) s.get(Group.class, "developers");
133
assertTrue( g.getUsers().isEmpty() );
134
assertFalse( Hibernate.isInitialized( g.getUsers() ) );
135
gavin = (User) s.get(User.class, "gavin");
136
assertFalse( gavin.getSession().containsKey("foo") );
137
assertFalse( Hibernate.isInitialized( gavin.getSession() ) );
145
public void testIndexFormulaMap() {
146
Session s = openSession();
147
Transaction t = s.beginTransaction();
148
User gavin = new User("gavin", "secret");
149
User turin = new User("turin", "tiger");
150
Group g = new Group("developers");
151
g.getUsers().put("gavin", gavin);
152
g.getUsers().put("turin", turin);
154
gavin.getSession().put( "foo", new SessionAttribute("foo", "foo bar baz") );
155
gavin.getSession().put( "bar", new SessionAttribute("bar", "foo bar baz 2") );
160
t = s.beginTransaction();
161
g = (Group) s.get(Group.class, "developers");
162
assertEquals( g.getUsers().size(), 2 );
163
g.getUsers().remove("turin");
164
Map smap = ( (User) g.getUsers().get("gavin") ).getSession();
165
assertEquals(smap.size(), 2);
171
t = s.beginTransaction();
172
g = (Group) s.get(Group.class, "developers");
173
assertEquals( g.getUsers().size(), 1 );
174
smap = ( (User) g.getUsers().get("gavin") ).getSession();
175
assertEquals(smap.size(), 1);
176
gavin = (User) g.getUsers().put("gavin", turin);
178
assertEquals( s.createQuery("select count(*) from SessionAttribute").uniqueResult(), new Long(0) );
183
t = s.beginTransaction();
184
g = (Group) s.get(Group.class, "developers");
185
assertEquals( g.getUsers().size(), 1 );
186
turin = (User) g.getUsers().get("turin");
187
smap = turin.getSession();
188
assertEquals(smap.size(), 0);
189
assertEquals( s.createQuery("select count(*) from User").uniqueResult(), new Long(1) );
192
assertEquals( s.createQuery("select count(*) from User").uniqueResult(), new Long(0) );
197
public void testSQLQuery() {
198
Session s = openSession();
199
Transaction t = s.beginTransaction();
200
User gavin = new User("gavin", "secret");
201
User turin = new User("turin", "tiger");
202
gavin.getSession().put( "foo", new SessionAttribute("foo", "foo bar baz") );
203
gavin.getSession().put( "bar", new SessionAttribute("bar", "foo bar baz 2") );
208
List results = s.getNamedQuery("userSessionData").setParameter("uname", "%in").list();
209
assertEquals( results.size(), 2 );
210
gavin = (User) ( (Object[]) results.get(0) )[0];
211
assertEquals( gavin.getName(), "gavin" );
212
assertEquals( gavin.getSession().size(), 2 );
213
s.createQuery("delete SessionAttribute").executeUpdate();
214
s.createQuery("delete User").executeUpdate();