You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ol...@apache.org on 2004/02/28 22:38:38 UTC
cvs commit: db-ojb/src/test/org/apache/ojb/otm AbstractPerson.java Address2.java Debitor.java LegalPerson.java NaturalPerson.java DependentTests.java
olegnitz 2004/02/28 13:38:38
Modified: src/test/org/apache/ojb/otm DependentTests.java
Added: src/test/org/apache/ojb/otm AbstractPerson.java
Address2.java Debitor.java LegalPerson.java
NaturalPerson.java
Log:
Added test by Joerg Heinicke <jo...@gmx.de>
Revision Changes Path
1.3 +83 -0 db-ojb/src/test/org/apache/ojb/otm/DependentTests.java
Index: DependentTests.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/otm/DependentTests.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DependentTests.java 27 Jul 2003 10:20:09 -0000 1.2
+++ DependentTests.java 28 Feb 2004 21:38:38 -0000 1.3
@@ -122,4 +122,87 @@
assertTrue("addresses don't exist", !it.hasNext());
tx.commit();
}
+
+ public void testDependent2() throws Exception
+ {
+ LegalPerson person = new LegalPerson();
+ Debitor debitor = new Debitor();
+ Address2 address = new Address2();
+ Criteria emptyCriteria = new Criteria();
+ Query q;
+ Iterator it;
+
+ person.getAddresses().add(address);
+ debitor.setAbstractPerson(person);
+
+ Transaction tx = _kit.getTransaction(_conn);
+ tx.begin();
+ // Cascade create
+ _conn.makePersistent(debitor);
+ tx.commit();
+
+ Identity debitorOid = _conn.getIdentity(debitor);
+ Identity personOid = _conn.getIdentity(person);
+ int addrId = address.getId();
+
+ _conn.invalidateAll();
+ tx = _kit.getTransaction(_conn);
+ tx.begin();
+ debitor = (Debitor) _conn.getObjectByIdentity(debitorOid);
+ assertTrue("debitor exists", (debitor != null));
+ assertTrue("person exists", (debitor.getAbstractPerson() != null));
+ assertTrue("person has correct type", (debitor.getAbstractPerson() instanceof LegalPerson));
+ person = (LegalPerson) debitor.getAbstractPerson();
+ assertTrue("address exists", (person.getAddresses().size() == 1));
+ address = (Address2) person.getAddresses().iterator().next();
+ assertEquals("address is correct", address.getId(), addrId);
+
+ // Delete dependent
+ person.getAddresses().clear();
+ tx.commit();
+
+ _conn.invalidateAll();
+ tx = _kit.getTransaction(_conn);
+ tx.begin();
+ debitor = (Debitor) _conn.getObjectByIdentity(debitorOid);
+ person = (LegalPerson) debitor.getAbstractPerson();
+ assertTrue("address doesn't exist", (person.getAddresses().size() == 0));
+
+ // Create dependent
+ person.getAddresses().add(address);
+ tx.commit();
+
+ _conn.invalidateAll();
+ tx = _kit.getTransaction(_conn);
+ tx.begin();
+ debitor = (Debitor) _conn.getObjectByIdentity(debitorOid);
+ person = (LegalPerson) debitor.getAbstractPerson();
+ assertTrue("address exists", (person.getAddresses().size() == 1));
+
+ // Change dependent reference, should delete old dependant
+ debitor.setAbstractPerson(new NaturalPerson());
+ tx.commit();
+
+ _conn.invalidateAll();
+ tx = _kit.getTransaction(_conn);
+ tx.begin();
+ assertTrue("old person has been deleted", (_conn.getObjectByIdentity(personOid) == null));
+
+ // Cascade delete
+ _conn.deletePersistent(debitor);
+ tx.commit();
+
+ _conn.invalidateAll();
+ tx = _kit.getTransaction(_conn);
+ tx.begin();
+ debitor = (Debitor) _conn.getObjectByIdentity(debitorOid);
+ assertTrue("debitor doesn't exist", (debitor == null));
+ q = QueryFactory.newQuery(LegalPerson.class, emptyCriteria);
+ it = _conn.getIteratorByQuery(q);
+ assertTrue("persons don't exist", !it.hasNext());
+ q = QueryFactory.newQuery(Address2.class, emptyCriteria);
+ it = _conn.getIteratorByQuery(q);
+ assertTrue("addresses don't exist", !it.hasNext());
+ tx.commit();
+ }
}
1.1 db-ojb/src/test/org/apache/ojb/otm/AbstractPerson.java
Index: AbstractPerson.java
===================================================================
package org.apache.ojb.otm;
import java.util.ArrayList;
import java.util.Collection;
public abstract class AbstractPerson
{
private int id;
protected Collection addresses = new ArrayList();
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public Collection getAddresses()
{
return addresses;
}
public void setAddresses(Collection addresses)
{
this.addresses = addresses;
}
}
1.1 db-ojb/src/test/org/apache/ojb/otm/Address2.java
Index: Address2.java
===================================================================
package org.apache.ojb.otm;
public class Address2
{
private int id;
private int personId;
private Person person;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public int getPersonId()
{
return personId;
}
public void setPersonId(int personId)
{
this.personId = personId;
}
public Person getPerson()
{
return person;
}
public void setPerson(Person person)
{
this.person = person;
}
}
1.1 db-ojb/src/test/org/apache/ojb/otm/Debitor.java
Index: Debitor.java
===================================================================
package org.apache.ojb.otm;
public class Debitor
{
private int id;
private AbstractPerson abstractPerson;
private int personId;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public AbstractPerson getAbstractPerson()
{
return abstractPerson;
}
public void setAbstractPerson(AbstractPerson abstractPerson)
{
this.abstractPerson = abstractPerson;
}
public int getPersonId()
{
return personId;
}
public void setPersonId(int personId)
{
this.personId = personId;
}
}
1.1 db-ojb/src/test/org/apache/ojb/otm/LegalPerson.java
Index: LegalPerson.java
===================================================================
package org.apache.ojb.otm;
public class LegalPerson extends AbstractPerson
{
}
1.1 db-ojb/src/test/org/apache/ojb/otm/NaturalPerson.java
Index: NaturalPerson.java
===================================================================
package org.apache.ojb.otm;
public class NaturalPerson extends AbstractPerson
{
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org