01: /**
02: * Copyright (C) 2001-2006 France Telecom R&D
03: */package org.objectweb.speedo.runtime.inheritance;
04:
05: import org.objectweb.speedo.SpeedoTestHelper;
06: import org.objectweb.speedo.pobjects.inheritance.filtered.jdo2.hid.A;
07: import org.objectweb.speedo.pobjects.inheritance.filtered.jdo2.hid.C;
08: import org.objectweb.speedo.pobjects.inheritance.filtered.jdo2.hid.D;
09: import org.objectweb.speedo.pobjects.inheritance.filtered.jdo2.hid.E;
10:
11: import java.util.ArrayList;
12: import java.util.Arrays;
13: import java.util.Collection;
14: import java.util.Iterator;
15: import java.util.List;
16:
17: import javax.jdo.PersistenceManager;
18: import javax.jdo.Query;
19:
20: public class TestFilteredHID extends SpeedoTestHelper {
21:
22: public TestFilteredHID(String n) {
23: super (n);
24: }
25:
26: protected String getLoggerName() {
27: return LOG_NAME + "rt.inheritance.TestFilteredHID";
28: }
29:
30: public void test1() {
31: E e1 = new E();
32: e1.setMyA(new A("a1"));
33: e1.setMyC(new C("c1"));
34: e1.setMyD(new D("d1"));
35:
36: E e2 = new E();
37: e2.setMyA(new D("d2"));
38: e2.setMyC(new D("d3"));
39: e2.setMyD(new D("d4"));
40: PersistenceManager pm = pmf.getPersistenceManager();
41: pm.currentTransaction().begin();
42: pm.makePersistent(e1);
43: Object oide1 = pm.getObjectId(e1);
44: pm.makePersistent(e2);
45: Object oide2 = pm.getObjectId(e2);
46: e1 = null;
47: e2 = null;
48: pm.currentTransaction().commit();
49:
50: pm.evictAll();
51:
52: pm.currentTransaction().begin();
53: e1 = (E) pm.getObjectById(E.class, oide1);
54: assertEquals("bad e1.myA.aid", e1.getMyA().getAid(), "a1");
55: assertEquals("bad e1.myC.aid", e1.getMyC().getAid(), "c1");
56: assertEquals("bad e1.myD.aid", e1.getMyD().getAid(), "d1");
57: e1 = null;
58: e2 = (E) pm.getObjectById(E.class, oide2);
59: assertEquals("bad e2.myA.aid", e2.getMyA().getAid(), "d2");
60: assertEquals("bad e2.myC.aid", e2.getMyC().getAid(), "d3");
61: assertEquals("bad e2.myD.aid", e2.getMyD().getAid(), "d4");
62: e2 = null;
63: pm.currentTransaction().commit();
64:
65: pm.evictAll();
66:
67: pm.currentTransaction().begin();
68: Query q = pm.newQuery(A.class);
69: Collection c = (Collection) q.execute();
70: List expected = Arrays.asList(new String[] { "a1", "c1", "d1",
71: "d2", "d3", "d4" });
72: ArrayList found = new ArrayList();
73: for (Iterator it = c.iterator(); it.hasNext();) {
74: A a = (A) it.next();
75: found.add(a.getAid());
76: }
77: q.closeAll();
78: assertSameCollection("Bad result of query on all A instances",
79: expected, found);
80: pm.currentTransaction().commit();
81:
82: pm.currentTransaction().begin();
83: q = pm.newQuery(A.class);
84: c = new ArrayList((Collection) q.execute());
85: q.closeAll();
86: q = pm.newQuery(E.class);
87: c.addAll((Collection) q.execute());
88: q.closeAll();
89: pm.deletePersistentAll(c);
90: pm.currentTransaction().commit();
91:
92: pm.close();
93: }
94:
95: }
|