KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > hibernate > test > collection > CollectionTest


1 //$Id: CollectionTest.java,v 1.10 2005/07/21 17:14:14 oneovthafew Exp $
2
package org.hibernate.test.collection;
3
4 import java.sql.SQLException JavaDoc;
5
6 import junit.framework.Test;
7 import junit.framework.TestSuite;
8
9 import org.hibernate.Hibernate;
10 import org.hibernate.HibernateException;
11 import org.hibernate.Session;
12 import org.hibernate.Transaction;
13 import org.hibernate.test.TestCase;
14
15 /**
16  * @author Gavin King
17  */

18 public class CollectionTest extends TestCase {
19     
20     public CollectionTest(String JavaDoc str) {
21         super(str);
22     }
23
24     public void testMerge() throws HibernateException, SQLException JavaDoc {
25         Session s = openSession();
26         Transaction t = s.beginTransaction();
27         User u = new User("gavin");
28         u.getPermissions().add( new Permission("obnoxiousness") );
29         u.getPermissions().add( new Permission("pigheadedness") );
30         s.persist(u);
31         t.commit();
32         s.close();
33         
34         s = openSession();
35         t = s.beginTransaction();
36         User u2 = (User) s.createCriteria(User.class).uniqueResult();
37         u2.setPermissions(null); //forces one shot delete
38
s.merge(u);
39         t.commit();
40         s.close();
41         
42         u.getPermissions().add( new Permission("silliness") );
43         
44         s = openSession();
45         t = s.beginTransaction();
46         s.merge(u);
47         t.commit();
48         s.close();
49         
50         s = openSession();
51         t = s.beginTransaction();
52         u2 = (User) s.createCriteria(User.class).uniqueResult();
53         assertEquals( u2.getPermissions().size(), 3 );
54         assertEquals( ( (Permission) u2.getPermissions().get(0) ).getType(), "obnoxiousness" );
55         assertEquals( ( (Permission) u2.getPermissions().get(2) ).getType(), "silliness" );
56         t.commit();
57         s.close();
58         
59         s = openSession();
60         t = s.beginTransaction();
61         s.delete(u2);
62         s.flush();
63         t.commit();
64         s.close();
65         
66     }
67     
68     public void testFetch() {
69         Session s = openSession();
70         Transaction t = s.beginTransaction();
71         User u = new User("gavin");
72         u.getPermissions().add( new Permission("obnoxiousness") );
73         u.getPermissions().add( new Permission("pigheadedness") );
74         u.getEmailAddresses().add( new Email("gavin@hibernate.org") );
75         u.getEmailAddresses().add( new Email("gavin.king@jboss.com") );
76         s.persist(u);
77         t.commit();
78         s.close();
79         
80         s = openSession();
81         t = s.beginTransaction();
82         User u2 = (User) s.createCriteria(User.class).uniqueResult();
83         assertTrue( Hibernate.isInitialized( u2.getEmailAddresses() ) );
84         assertFalse( Hibernate.isInitialized( u2.getPermissions() ) );
85         assertEquals( u2.getEmailAddresses().size(), 2 );
86         s.delete(u2);
87         t.commit();
88         s.close();
89     }
90     
91     public void testUpdateOrder() {
92         Session s = openSession();
93         Transaction t = s.beginTransaction();
94         User u = new User("gavin");
95         u.getSessionData().put("foo", "foo value");
96         u.getSessionData().put("bar", "bar value");
97         u.getEmailAddresses().add( new Email("gavin.king@jboss.com") );
98         u.getEmailAddresses().add( new Email("gavin@hibernate.org") );
99         u.getEmailAddresses().add( new Email("gavin@illflow.com") );
100         u.getEmailAddresses().add( new Email("gavin@nospam.com") );
101         s.persist(u);
102         t.commit();
103         s.close();
104         
105         u.getSessionData().clear();
106         u.getSessionData().put("baz", "baz value");
107         u.getSessionData().put("bar", "bar value");
108         u.getEmailAddresses().remove(0);
109         u.getEmailAddresses().remove(2);
110         
111         s = openSession();
112         t = s.beginTransaction();
113         s.update(u);
114         t.commit();
115         s.close();
116         
117         u.getSessionData().clear();
118         u.getEmailAddresses().add(0, new Email("gavin@nospam.com") );
119         u.getEmailAddresses().add( new Email("gavin.king@jboss.com") );
120         
121         s = openSession();
122         t = s.beginTransaction();
123         s.update(u);
124         t.commit();
125         s.close();
126         
127         s = openSession();
128         t = s.beginTransaction();
129         s.delete(u);
130         t.commit();
131         s.close();
132         
133     }
134     
135     public void testValueMap() {
136         Session s = openSession();
137         Transaction t = s.beginTransaction();
138         User u = new User("gavin");
139         u.getSessionData().put("foo", "foo value");
140         u.getSessionData().put("bar", null);
141         u.getEmailAddresses().add(null);
142         u.getEmailAddresses().add( new Email("gavin.king@jboss.com") );
143         u.getEmailAddresses().add(null);
144         u.getEmailAddresses().add(null);
145         s.persist(u);
146         t.commit();
147         s.close();
148         
149         s = openSession();
150         t = s.beginTransaction();
151         User u2 = (User) s.createCriteria(User.class).uniqueResult();
152         assertFalse( Hibernate.isInitialized( u2.getSessionData() ) );
153         assertEquals( u2.getSessionData().size(), 1 );
154         assertEquals( u2.getEmailAddresses().size(), 2 );
155         u2.getSessionData().put("foo", "new foo value");
156         u2.getEmailAddresses().set( 1, new Email("gavin@hibernate.org") );
157         //u2.getEmailAddresses().remove(3);
158
//u2.getEmailAddresses().remove(2);
159
t.commit();
160         s.close();
161
162         s = openSession();
163         t = s.beginTransaction();
164         u2 = (User) s.createCriteria(User.class).uniqueResult();
165         assertFalse( Hibernate.isInitialized( u2.getSessionData() ) );
166         assertEquals( u2.getSessionData().size(), 1 );
167         assertEquals( u2.getEmailAddresses().size(), 2 );
168         assertEquals( u2.getSessionData().get("foo"), "new foo value" );
169         assertEquals( ( (Email) u2.getEmailAddresses().get(1) ).getAddress(), "gavin@hibernate.org" );
170         s.delete(u2);
171         t.commit();
172         s.close();
173     }
174     
175     
176     
177     protected String JavaDoc[] getMappings() {
178         return new String JavaDoc[] { "collection/UserPermissions.hbm.xml" };
179     }
180
181     public static Test suite() {
182         return new TestSuite(CollectionTest.class);
183     }
184
185 }
186
187
Popular Tags