blob: 61360fdd2b00a6a92be38500dbf633eea1c6ec0d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.openjpa.persistence.jdbc.meta;
import javax.persistence.EntityManager;
import org.apache.openjpa.persistence.common.utils.*;
import org.apache.openjpa.persistence.jdbc.common.apps.*;
import junit.framework.*;
public class TestEJBEager extends org.apache.openjpa.persistence.jdbc.kernel.BaseJDBCTest
{
private int _oid;
public TestEJBEager(String name)
{
super(name);
}
@SuppressWarnings("unchecked")
public void setUp()
{
deleteAll(EagerPCSub.class);
deleteAll(EagerPC.class);
deleteAll(HelperPC.class);
deleteAll(HelperPC2.class);
deleteAll(HelperPC4.class);
deleteAll(HelperPC3.class);
EagerPCSub pc = new EagerPCSub (1);
pc.setStringField ("string1");
EagerPCSub pc2 = new EagerPCSub (2);
pc2.setStringField ("string2");
HelperPC helper1 = new HelperPC (4);
helper1.setStringField ("helper1");
pc.setHelper (helper1);
HelperPC2 helperCollection1 = new HelperPC2 ();
helperCollection1.setStringField ("helperCollection1");
helperCollection1.getHelperCollection ().add (new HelperPC (5));
HelperPC2 helperCollection2 = new HelperPC2 (6);
helperCollection2.setStringField ("helperCollection2");
pc.getHelperCollection ().add (helperCollection1);
pc.getHelperCollection ().add (helperCollection2);
HelperPC eager = new HelperPC (7);
eager.setStringField ("eager");
pc.setEager (eager);
HelperPC4 eagerSub = new HelperPC4 ();
eagerSub.setStringField ("eagerSub");
eagerSub.setIntField (1);
pc.setEagerSub (eagerSub);
HelperPC eagerCollection1 = new HelperPC (8);
eagerCollection1.setStringField ("eagerCollection1");
HelperPC eagerCollection2 = new HelperPC (9);
eagerCollection2.setStringField ("eagerCollection2");
pc.getEagerCollection ().add (eagerCollection1);
pc.getEagerCollection ().add (eagerCollection2);
eagerCollection1.setEager (pc);
eagerCollection2.setEager (pc);
pc.getEagerCollection2 ().add (eagerCollection1);
pc.getEagerCollection2 ().add (eagerCollection2);
HelperPC eagerCollection3 = new HelperPC (10);
eagerCollection3.setStringField ("eagerCollection3");
pc2.getEagerCollection ().add (eagerCollection3);
HelperPC2 recurse = new HelperPC2 (11);
recurse.setStringField ("recurse");
HelperPC3 helper3 = new HelperPC3 (12);
helper3.setStringField ("helper3");
recurse.setHelper (helper3);
eager.setHelper (helper1);
pc.setRecurse (recurse);
HelperPC2 recurseCollection1 = new HelperPC2 (13);
recurseCollection1.setStringField ("recurseCollection1");
HelperPC2 recurseCollection2 = new HelperPC2 (14);
recurseCollection2.setStringField ("recurseCollection2");
pc.getRecurseCollection ().add (recurseCollection1);
pc.getRecurseCollection ().add (recurseCollection2);
recurseCollection1.getHelperCollection ().add (helper1);
HelperPC helper2 = new HelperPC (15);
helper2.setStringField ("helper2");
recurseCollection1.getHelperCollection ().add (helper2);
EntityManager pm = currentEntityManager();
startTx(pm);
pm.persist(pc);
pm.persist(pc2);
endTx(pm);
_oid = pc.getId();
endEm(pm);
}
public void testOuterJoin ()
{
EntityManager pm = currentEntityManager();
startTx(pm);
EagerPCSub pc = pm.find(EagerPCSub.class, _oid);
pc.setEager (null);
endTx(pm);
endEm(pm);
pm = currentEntityManager();
pc = pm.find(EagerPCSub.class, _oid);
assertNull (pc.getEager());
assertNotNull (pc.getRecurse ());
assertEquals ("helper3", pc.getRecurse ().getHelper ().
getStringField ());
endEm(pm);
}
public void testOuterJoinToSubclass ()
{
EntityManager pm = currentEntityManager();
startTx(pm);
EagerPCSub pc = pm.find(EagerPCSub.class, _oid);
pc.setEagerSub (null);
endTx(pm);
endEm(pm);
pm = currentEntityManager();
startTx(pm);
pc = pm.find(EagerPCSub.class, _oid);
assertNull (pc.getEagerSub ());
assertNotNull (pc.getRecurse ());
assertEquals ("helper3", pc.getRecurse ().getHelper ().getStringField ());
endTx(pm);
endEm(pm);
}
}