Index: cpa/src/main/java/org/castor/persist/AbstractTransactionContext.java =================================================================== --- cpa/src/main/java/org/castor/persist/AbstractTransactionContext.java (revision 8335) +++ cpa/src/main/java/org/castor/persist/AbstractTransactionContext.java (working copy) @@ -537,7 +537,11 @@ throw new PersistenceException(Messages.format( "persist.lockConflict", molder.getName(), identity)); } - + + proposedObject.setProposedEntityClass(objectInTx.getClass()); + proposedObject.setActualEntityClass(objectInTx.getClass()); + proposedObject.setEntity(objectInTx); + return objectInTx; } @@ -1257,7 +1261,7 @@ engine.delete(this, oid); } } - + /** * {@inheritDoc} * @see org.castor.persist.TransactionContext#commit() Index: cpactf/src/test/ddl/org/castor/cpa/test/test2861/derby-create.sql =================================================================== --- cpactf/src/test/ddl/org/castor/cpa/test/test2861/derby-create.sql (revision 0) +++ cpactf/src/test/ddl/org/castor/cpa/test/test2861/derby-create.sql (revision 0) @@ -0,0 +1,102 @@ +CREATE TABLE test2861_person ( + oid VARCHAR(8) NOT NULL, + name VARCHAR(32), + creator VARCHAR(8), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_person +ADD FOREIGN KEY (creator) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_naturalperson ( + oid VARCHAR(8) NOT NULL, + socialsecuritynumber VARCHAR(16), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_naturalperson +ADD FOREIGN KEY (oid) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_legalperson ( + oid VARCHAR(8) NOT NULL, + federaltaxnumber VARCHAR(16), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_legalperson +ADD FOREIGN KEY (oid) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_product ( + oid VARCHAR(8) NOT NULL, + eancode VARCHAR(13), + PRIMARY KEY (OID) +); + +CREATE TABLE test2861_motorcycle ( + oid VARCHAR(8) NOT NULL, + chassisnumber VARCHAR(16), + holder VARCHAR(8) NOT NULL, + reseller VARCHAR(8) NOT NULL, + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (oid) +REFERENCES test2861_product (oid); + +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (holder) +REFERENCES test2861_person (oid); + +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (reseller) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_invoice ( + oid VARCHAR(8), + nb INTEGER, + emitter VARCHAR(8), + billto VARCHAR(8), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_invoice +ADD FOREIGN KEY (emitter) +REFERENCES test2861_person (oid); + +ALTER TABLE test2861_invoice +ADD FOREIGN KEY (billTo) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_invoiceitem ( + oid VARCHAR(8) NOT NULL, + invoice VARCHAR(8), + product VARCHAR(8), + quantity INTEGER, + price DECIMAL(12,2), + total DECIMAL(12,2), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_invoiceitem +ADD FOREIGN KEY (invoice) +REFERENCES test2861_invoice (oid); + +ALTER TABLE test2861_invoiceitem +ADD FOREIGN KEY (product) +REFERENCES test2861_product (oid); + +CREATE TABLE test2861_parameter ( + oid VARCHAR(8) NOT NULL, + person VARCHAR(8), + idsys VARCHAR(6), + intvalue INTEGER, + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_parameter +ADD FOREIGN KEY (person) +REFERENCES test2861_person (oid); \ No newline at end of file Index: cpactf/src/test/ddl/org/castor/cpa/test/test2861/derby-drop.sql =================================================================== --- cpactf/src/test/ddl/org/castor/cpa/test/test2861/derby-drop.sql (revision 0) +++ cpactf/src/test/ddl/org/castor/cpa/test/test2861/derby-drop.sql (revision 0) @@ -0,0 +1,8 @@ +DROP TABLE test2861_parameter; +DROP TABLE test2861_invoiceitem; +DROP TABLE test2861_invoice; +DROP TABLE test2861_motorcycle; +DROP TABLE test2861_product; +DROP TABLE test2861_legalperson; +DROP TABLE test2861_naturalperson; +DROP TABLE test2861_person; \ No newline at end of file Index: cpactf/src/test/ddl/org/castor/cpa/test/test2861/mysql-create.sql =================================================================== --- cpactf/src/test/ddl/org/castor/cpa/test/test2861/mysql-create.sql (revision 0) +++ cpactf/src/test/ddl/org/castor/cpa/test/test2861/mysql-create.sql (revision 0) @@ -0,0 +1,102 @@ +CREATE TABLE test2861_person ( + oid VARCHAR(8) NOT NULL, + name VARCHAR(32), + creator VARCHAR(8), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_person +ADD FOREIGN KEY (creator) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_naturalperson ( + oid VARCHAR(8) NOT NULL, + socialsecuritynumber VARCHAR(16), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_naturalperson +ADD FOREIGN KEY (oid) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_legalperson ( + oid VARCHAR(8) NOT NULL, + federaltaxnumber VARCHAR(16), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_legalperson +ADD FOREIGN KEY (oid) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_product ( + oid VARCHAR(8) NOT NULL, + eancode VARCHAR(13), + PRIMARY KEY (OID) +); + +CREATE TABLE test2861_motorcycle ( + oid VARCHAR(8) NOT NULL, + chassisnumber VARCHAR(16), + holder VARCHAR(8) NOT NULL, + reseller VARCHAR(8) NOT NULL, + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (oid) +REFERENCES test2861_product (oid); + +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (holder) +REFERENCES test2861_person (oid); + +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (reseller) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_invoice ( + oid VARCHAR(8), + nb INTEGER, + emitter VARCHAR(8), + billto VARCHAR(8), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_invoice +ADD FOREIGN KEY (emitter) +REFERENCES test2861_person (oid); + +ALTER TABLE test2861_invoice +ADD FOREIGN KEY (billTo) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_invoiceitem ( + oid VARCHAR(8) NOT NULL, + invoice VARCHAR(8), + product VARCHAR(8), + quantity INTEGER, + price DECIMAL(12,2), + total DECIMAL(12,2), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_invoiceitem +ADD FOREIGN KEY (invoice) +REFERENCES test2861_invoice (oid); + +ALTER TABLE test2861_invoiceitem +ADD FOREIGN KEY (product) +REFERENCES test2861_product (oid); + +CREATE TABLE test2861_parameter ( + oid VARCHAR(8) NOT NULL, + person VARCHAR(8), + idsys VARCHAR(6), + intvalue INTEGER, + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_parameter +ADD FOREIGN KEY (person) +REFERENCES test2861_person (oid); \ No newline at end of file Index: cpactf/src/test/ddl/org/castor/cpa/test/test2861/mysql-drop.sql =================================================================== --- cpactf/src/test/ddl/org/castor/cpa/test/test2861/mysql-drop.sql (revision 0) +++ cpactf/src/test/ddl/org/castor/cpa/test/test2861/mysql-drop.sql (revision 0) @@ -0,0 +1,8 @@ +DROP TABLE test2861_parameter; +DROP TABLE test2861_invoiceitem; +DROP TABLE test2861_invoice; +DROP TABLE test2861_motorcycle; +DROP TABLE test2861_product; +DROP TABLE test2861_legalperson; +DROP TABLE test2861_naturalperson; +DROP TABLE test2861_person; \ No newline at end of file Index: cpactf/src/test/ddl/org/castor/cpa/test/test2861/postgresql-create.sql =================================================================== --- cpactf/src/test/ddl/org/castor/cpa/test/test2861/postgresql-create.sql (revision 0) +++ cpactf/src/test/ddl/org/castor/cpa/test/test2861/postgresql-create.sql (revision 0) @@ -0,0 +1,102 @@ +CREATE TABLE test2861_person ( + oid VARCHAR(8) NOT NULL, + name VARCHAR(32), + creator VARCHAR(8), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_person +ADD FOREIGN KEY (creator) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_naturalperson ( + oid VARCHAR(8) NOT NULL, + socialsecuritynumber VARCHAR(16), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_naturalperson +ADD FOREIGN KEY (oid) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_legalperson ( + oid VARCHAR(8) NOT NULL, + federaltaxnumber VARCHAR(16), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_legalperson +ADD FOREIGN KEY (oid) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_product ( + oid VARCHAR(8) NOT NULL, + eancode VARCHAR(13), + PRIMARY KEY (OID) +); + +CREATE TABLE test2861_motorcycle ( + oid VARCHAR(8) NOT NULL, + chassisnumber VARCHAR(16), + holder VARCHAR(8) NOT NULL, + reseller VARCHAR(8) NOT NULL, + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (oid) +REFERENCES test2861_product (oid); + +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (holder) +REFERENCES test2861_person (oid); + +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (reseller) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_invoice ( + oid VARCHAR(8), + nb INTEGER, + emitter VARCHAR(8), + billto VARCHAR(8), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_invoice +ADD FOREIGN KEY (emitter) +REFERENCES test2861_person (oid); + +ALTER TABLE test2861_invoice +ADD FOREIGN KEY (billTo) +REFERENCES test2861_person (oid); + +CREATE TABLE test2861_invoiceitem ( + oid VARCHAR(8) NOT NULL, + invoice VARCHAR(8), + product VARCHAR(8), + quantity INTEGER, + price NUMERIC(12,2), + total NUMERIC(12,2), + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_invoiceitem +ADD FOREIGN KEY (invoice) +REFERENCES test2861_invoice (oid); + +ALTER TABLE test2861_invoiceitem +ADD FOREIGN KEY (product) +REFERENCES test2861_product (oid); + +CREATE TABLE test2861_parameter ( + oid VARCHAR(8) NOT NULL, + person VARCHAR(8), + idsys VARCHAR(6), + intvalue INTEGER, + PRIMARY KEY (OID) +); + +ALTER TABLE test2861_parameter +ADD FOREIGN KEY (person) +REFERENCES test2861_person (oid); \ No newline at end of file Index: cpactf/src/test/ddl/org/castor/cpa/test/test2861/postgresql-drop.sql =================================================================== --- cpactf/src/test/ddl/org/castor/cpa/test/test2861/postgresql-drop.sql (revision 0) +++ cpactf/src/test/ddl/org/castor/cpa/test/test2861/postgresql-drop.sql (revision 0) @@ -0,0 +1,8 @@ +DROP TABLE test2861_parameter; +DROP TABLE test2861_invoiceitem; +DROP TABLE test2861_invoice; +DROP TABLE test2861_motorcycle; +DROP TABLE test2861_product; +DROP TABLE test2861_legalperson; +DROP TABLE test2861_naturalperson; +DROP TABLE test2861_person; \ No newline at end of file Index: cpactf/src/test/ddl/org/castor/cpa/test/test2861/sapdb-create.sql =================================================================== --- cpactf/src/test/ddl/org/castor/cpa/test/test2861/sapdb-create.sql (revision 0) +++ cpactf/src/test/ddl/org/castor/cpa/test/test2861/sapdb-create.sql (revision 0) @@ -0,0 +1,105 @@ +CREATE TABLE test2861_person ( + oid VARCHAR(8) NOT NULL, + name VARCHAR(32), + creator VARCHAR(8), + PRIMARY KEY (OID) +) +// +ALTER TABLE test2861_person +ADD FOREIGN KEY (creator) +REFERENCES test2861_person (oid) +// +CREATE TABLE test2861_naturalperson ( + oid VARCHAR(8) NOT NULL, + socialsecuritynumber VARCHAR(16), + PRIMARY KEY (OID) +) +// +ALTER TABLE test2861_naturalperson +ADD FOREIGN KEY (oid) +REFERENCES test2861_person (oid) +// +CREATE TABLE test2861_legalperson ( + oid VARCHAR(8) NOT NULL, + federaltaxnumber VARCHAR(16), + PRIMARY KEY (OID) +) +// +ALTER TABLE test2861_legalperson +ADD FOREIGN KEY (oid) +REFERENCES test2861_person (oid) +// +CREATE TABLE test2861_product ( + oid VARCHAR(8) NOT NULL, + eancode VARCHAR(13), + PRIMARY KEY (OID) +) +// +CREATE TABLE test2861_motorcycle ( + oid VARCHAR(8) NOT NULL, + chassisnumber VARCHAR(16), + holder VARCHAR(8) NOT NULL, + reseller VARCHAR(8) NOT NULL, + PRIMARY KEY (OID) +) +// +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (oid) +REFERENCES test2861_product (oid) +// +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (holder) +REFERENCES test2861_person (oid) +// +ALTER TABLE test2861_motorcycle +ADD FOREIGN KEY (reseller) +REFERENCES test2861_person (oid) +// +CREATE TABLE test2861_invoice ( + oid VARCHAR(8), + nb INTEGER, + emitter VARCHAR(8), + billto VARCHAR(8), + PRIMARY KEY (OID) +) +// +ALTER TABLE test2861_invoice +ADD FOREIGN KEY (emitter) +REFERENCES test2861_person (oid) +// +ALTER TABLE test2861_invoice +ADD FOREIGN KEY (billTo) +REFERENCES test2861_person (oid) +// +CREATE TABLE test2861_invoiceitem ( + oid VARCHAR(8) NOT NULL, + invoice VARCHAR(8), + product VARCHAR(8), + quantity INTEGER, + price DECIMAL(12,2), + total DECIMAL(12,2), + PRIMARY KEY (OID) +) +// +ALTER TABLE test2861_invoiceitem +ADD FOREIGN KEY (invoice) +REFERENCES test2861_invoice (oid) +// +ALTER TABLE test2861_invoiceitem +ADD FOREIGN KEY (product) +REFERENCES test2861_product (oid) +// + + +CREATE TABLE test2861_parameter ( + oid VARCHAR(8) NOT NULL, + person VARCHAR(8), + idsys VARCHAR(6), + intvalue INTEGER, + PRIMARY KEY (OID) +) +// +ALTER TABLE test2861_parameter +ADD FOREIGN KEY (person) +REFERENCES test2861_person (oid) +// \ No newline at end of file Index: cpactf/src/test/ddl/org/castor/cpa/test/test2861/sapdb-drop.sql =================================================================== --- cpactf/src/test/ddl/org/castor/cpa/test/test2861/sapdb-drop.sql (revision 0) +++ cpactf/src/test/ddl/org/castor/cpa/test/test2861/sapdb-drop.sql (revision 0) @@ -0,0 +1,16 @@ +DROP TABLE test2861_parameter +// +DROP TABLE test2861_invoiceitem +// +DROP TABLE test2861_invoice +// +DROP TABLE test2861_motorcycle +// +DROP TABLE test2861_product +// +DROP TABLE test2861_legalperson +// +DROP TABLE test2861_naturalperson +// +DROP TABLE test2861_person +// \ No newline at end of file Index: cpactf/src/test/java/org/castor/cpa/test/test2861/BusinessObject.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test2861/BusinessObject.java (revision 0) +++ cpactf/src/test/java/org/castor/cpa/test/test2861/BusinessObject.java (revision 0) @@ -0,0 +1,21 @@ +package org.castor.cpa.test.test2861; + +import org.exolab.castor.jdo.TimeStampable; +import org.junit.Ignore; + +/** + * @author cwichoski + */ +@Ignore +public class BusinessObject implements TimeStampable { + private String _oid; + private long _timeStamp; + + public String getOid() { return _oid; } + public void setOid(final String oid) { _oid = oid; } + + public long jdoGetTimeStamp() { return _timeStamp; } + public void jdoSetTimeStamp(final long timeStamp) { + _timeStamp = timeStamp; + } +} \ No newline at end of file Index: cpactf/src/test/java/org/castor/cpa/test/test2861/Invoice.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test2861/Invoice.java (revision 0) +++ cpactf/src/test/java/org/castor/cpa/test/test2861/Invoice.java (revision 0) @@ -0,0 +1,30 @@ +package org.castor.cpa.test.test2861; + +import java.util.Vector; + +import org.junit.Ignore; + +/** + * @author cwichoski + */ +@Ignore +public class Invoice extends BusinessObject { + Integer _number; + Person _emitter; + Person _billTo; + Vector _invoiceItem; + + public Integer getNumber() { return _number; } + public void setNumber(final Integer number) { _number = number; } + + public Person getEmitter() { return _emitter; } + public void setEmitter(final Person emitter) { _emitter = emitter; } + + public Person getBillTo() { return _billTo; } + public void setBillTo(final Person billTo) { _billTo = billTo; } + + public Vector getInvoiceItem() { return _invoiceItem; } + public void setInvoiceItem(final Vector invoiceItem) { + _invoiceItem = invoiceItem; + } +} Index: cpactf/src/test/java/org/castor/cpa/test/test2861/InvoiceItem.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test2861/InvoiceItem.java (revision 0) +++ cpactf/src/test/java/org/castor/cpa/test/test2861/InvoiceItem.java (revision 0) @@ -0,0 +1,30 @@ +package org.castor.cpa.test.test2861; + +import org.junit.Ignore; + +/** + * @author cwichoski + */ +@Ignore +public class InvoiceItem extends BusinessObject { + Invoice _invoice; + Product _product; + Integer _quantity; + Double _price; + Double _total; + + public Invoice getInvoice() { return _invoice; } + public void setInvoice(final Invoice invoice) { _invoice = invoice; } + + public Product getProduct() { return _product; } + public void setProduct(final Product product) { _product = product; } + + public Integer getQuantity() { return _quantity; } + public void setQuantity(final Integer quantity) { _quantity = quantity; } + + public Double getPrice() { return _price; } + public void setPrice(final Double price) { _price = price; } + + public Double getTotal() { return _total; } + public void setTotal(final Double total) { _total = total; } +} \ No newline at end of file Index: cpactf/src/test/java/org/castor/cpa/test/test2861/LegalPerson.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test2861/LegalPerson.java (revision 0) +++ cpactf/src/test/java/org/castor/cpa/test/test2861/LegalPerson.java (revision 0) @@ -0,0 +1,16 @@ +package org.castor.cpa.test.test2861; + +import org.junit.Ignore; + +/** + * @author cwichoski + */ +@Ignore +public class LegalPerson extends Person { + String _federalTaxNumber; + + public String getFederalTaxNumber() { return _federalTaxNumber; } + public void setFederalTaxNumber(final String federalTaxNumber) { + _federalTaxNumber = federalTaxNumber; + } +} Index: cpactf/src/test/java/org/castor/cpa/test/test2861/Motorcycle.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test2861/Motorcycle.java (revision 0) +++ cpactf/src/test/java/org/castor/cpa/test/test2861/Motorcycle.java (revision 0) @@ -0,0 +1,24 @@ +package org.castor.cpa.test.test2861; + +import org.junit.Ignore; + +/** + * @author cwichoski + */ +@Ignore +public class Motorcycle extends Product { + String _chassisNumber; + Person _holder; + Person _reseller; + + public String getChassisNumber() { return _chassisNumber; } + public void setChassisNumber(final String chassisNumber) { + _chassisNumber = chassisNumber; + } + + public Person getHolder() { return _holder; } + public void setHolder(final Person holder) { _holder = holder; } + + public Person getReseller() { return _reseller; } + public void setReseller(final Person reseller) { _reseller = reseller; } +} Index: cpactf/src/test/java/org/castor/cpa/test/test2861/NaturalPerson.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test2861/NaturalPerson.java (revision 0) +++ cpactf/src/test/java/org/castor/cpa/test/test2861/NaturalPerson.java (revision 0) @@ -0,0 +1,16 @@ +package org.castor.cpa.test.test2861; + +import org.junit.Ignore; + +/** + * @author cwichoski + */ +@Ignore +public class NaturalPerson extends Person { + String _socialSecurityNumber; + + public String getSocialSecurityNumber() { return _socialSecurityNumber; } + public void setSocialSecurityNumber(final String socialSecurityNumber) { + _socialSecurityNumber = socialSecurityNumber; + } +} Index: cpactf/src/test/java/org/castor/cpa/test/test2861/Parameter.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test2861/Parameter.java (revision 0) +++ cpactf/src/test/java/org/castor/cpa/test/test2861/Parameter.java (revision 0) @@ -0,0 +1,22 @@ +package org.castor.cpa.test.test2861; + +import org.junit.Ignore; + +/** + * @author cwichoski + */ +@Ignore +public class Parameter extends BusinessObject { + Person _person; + String _idSys; + Integer _intValue; + + public Person getPerson() { return _person; } + public void setPerson(final Person person) { _person = person; } + + public String getIdSys() { return _idSys; } + public void setIdSys(final String idSys) { _idSys = idSys; } + + public Integer getIntValue() { return _intValue; } + public void setIntValue(final Integer intValue) { _intValue = intValue; } +} \ No newline at end of file Index: cpactf/src/test/java/org/castor/cpa/test/test2861/Person.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test2861/Person.java (revision 0) +++ cpactf/src/test/java/org/castor/cpa/test/test2861/Person.java (revision 0) @@ -0,0 +1,20 @@ +package org.castor.cpa.test.test2861; + +import org.junit.Ignore; + +/** + * @author cwichoski + */ +@Ignore +public class Person extends BusinessObject { + String _name; + Person _creator; + + public String getName() { return _name; } + public void setName(final String name) { _name = name; } + + public Person getCreator() { return _creator; } + public void setCreator(final Person creator) { + _creator = creator; + } +} Index: cpactf/src/test/java/org/castor/cpa/test/test2861/Product.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test2861/Product.java (revision 0) +++ cpactf/src/test/java/org/castor/cpa/test/test2861/Product.java (revision 0) @@ -0,0 +1,14 @@ +package org.castor.cpa.test.test2861; + +import org.junit.Ignore; + +/** + * @author cwichoski + */ +@Ignore +public class Product extends BusinessObject { + String _eanCode; + + public String getEanCode() { return _eanCode; } + public void setEanCode(final String eanCode) { _eanCode = eanCode; } +} Index: cpactf/src/test/java/org/castor/cpa/test/test2861/TestReferenceChange.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test2861/TestReferenceChange.java (revision 0) +++ cpactf/src/test/java/org/castor/cpa/test/test2861/TestReferenceChange.java (revision 0) @@ -0,0 +1,142 @@ +package org.castor.cpa.test.test2861; + +import java.util.Vector; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.castor.cpa.test.framework.CPATestCase; +import org.castor.cpa.test.framework.xml.types.DatabaseEngineType; +import org.exolab.castor.jdo.Database; +import org.exolab.castor.jdo.OQLQuery; +import org.exolab.castor.jdo.QueryResults; + +public final class TestReferenceChange extends CPATestCase { + private static final String DBNAME = "test2861"; + private static final String MAPPING = "/org/castor/cpa/test/test2861/mapping.xml"; + + public static Test suite() throws Exception { + TestSuite suite = new TestSuite(TestReferenceChange.class.getName()); + + suite.addTest(new TestReferenceChange("createObjects")); + suite.addTest(new TestReferenceChange("testCreateInvoice")); + + return suite; + } + + public TestReferenceChange(final String name) { + super(name); + } + + // Test are only included/excluded for engines that have been tested with this test suite. + + public boolean include(final DatabaseEngineType engine) { + return (engine == DatabaseEngineType.DERBY) + || (engine == DatabaseEngineType.MYSQL) + || (engine == DatabaseEngineType.POSTGRESQL) + || (engine == DatabaseEngineType.SAPDB); + } + + public void createObjects() throws Exception { + LegalPerson acme = new LegalPerson(); + acme.setOid("AAAAacme"); + acme.setName("ACME INC."); + acme.setFederalTaxNumber("1"); + + NaturalPerson marvin = new NaturalPerson(); + marvin.setOid("AAmarvin"); + marvin.setName("MARVIN ACME"); + marvin.setSocialSecurityNumber("2"); + marvin.setCreator(acme); + + Motorcycle motorcycle = new Motorcycle(); + motorcycle.setOid("AAAAMT01"); + motorcycle.setChassisNumber("CHASSIS00001"); + motorcycle.setHolder(marvin); + motorcycle.setReseller(acme); + + Parameter invoiceSeq = new Parameter(); + invoiceSeq.setOid("AAAINVSQ"); + invoiceSeq.setIdSys("INVSEQ"); + invoiceSeq.setIntValue(new Integer(0)); + invoiceSeq.setPerson(acme); + + Database db = getJDOManager(DBNAME, MAPPING).getDatabase(); + db.setAutoStore(false); + db.begin(); + + db.create(acme); + db.create(marvin); + db.create(motorcycle); + db.create(invoiceSeq); + + db.commit(); + db.close(); + } + + public void testCreateInvoice() throws Exception { + LegalPerson acme = null; + NaturalPerson marvin = null; + Motorcycle motorcycle = null; + + Database db = getJDOManager(DBNAME, MAPPING).getDatabase(); + db.setAutoStore(false); + db.begin(); + acme = db.load(LegalPerson.class, "AAAAacme"); + marvin = db.load(NaturalPerson.class, "AAmarvin"); + motorcycle = db.load(Motorcycle.class, "AAAAMT01"); + db.commit(); + + Vector vInvoiceItem = new Vector(); + Invoice invoice = new Invoice(); + invoice.setOid("AAAINV01"); + invoice.setEmitter(marvin); + invoice.setBillTo(acme); + invoice.setInvoiceItem(vInvoiceItem); + + InvoiceItem invoiceItem = new InvoiceItem(); + invoiceItem.setOid("AINVIT01"); + invoiceItem.setInvoice(invoice); + invoiceItem.setProduct(motorcycle); + invoiceItem.setQuantity(new Integer(1)); + invoiceItem.setPrice(new Double(12000)); + invoiceItem.setTotal(new Double(12000)); + vInvoiceItem.add(invoiceItem); + + motorcycle.setHolder(acme); + + db.setAutoStore(false); + db.begin(); + + OQLQuery oql = db.getOQLQuery( + "SELECT obj FROM " + Parameter.class.getName() + " obj " + + "WHERE person.oid = $1 AND idSys = $2"); + oql.bind(acme.getOid()); + oql.bind("INVSEQ"); + QueryResults results = oql.execute(); + + Parameter invoiceSeq = null; + if (results.hasMore()) { + invoiceSeq = (Parameter) results.nextElement(); + } + int newInvoiceSeq = invoiceSeq.getIntValue().intValue() + 1; + invoiceSeq.setIntValue(new Integer(newInvoiceSeq)); + invoice.setNumber(invoiceSeq.getIntValue()); + + oql.close(); + results.close(); + + db.update(motorcycle); + db.create(invoice); + + db.commit(); + + db.begin(); + motorcycle = db.load(Motorcycle.class, "AAAAMT01"); + db.commit(); + + assertEquals(motorcycle.getHolder().getName(), acme.getName()); + + db.close(); + } +} Index: cpactf/src/test/resources/CPACTF-Matrix.ods =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: cpactf/src/test/resources/org/castor/cpa/test/test2861/mapping.xml =================================================================== --- cpactf/src/test/resources/org/castor/cpa/test/test2861/mapping.xml (revision 0) +++ cpactf/src/test/resources/org/castor/cpa/test/test2861/mapping.xml (revision 0) @@ -0,0 +1,144 @@ + + + + + + Person + + + + + + + + + + + + + + + NaturalPerson + + + + + + + + + + + + + LegalPerson + + + + + + + + + + + + Product + + + + + + + + + + + + Motorcycle + + + + + + + + + + + + + + + + + + Invoice + + + + + + + + + + + + + + + + + + + + + org.castor.cpa.test.test2861.InvoiceItem + + + + + + + + + + + + + + + + + + + + + + + + Invoice + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: src/doc/release-notes.xml =================================================================== --- src/doc/release-notes.xml (revision 8470) +++ src/doc/release-notes.xml (working copy) @@ -91,6 +91,26 @@ ]]> + + + Reference set to null during long transaction. + + + Clovis Wichoski + clovis.wichoski@gmail.com + + + Ralf Joachim + ralf.joachim@syscon.eu + + + Clovis Wichoski + clovis.wichoski@gmail.com + + Bug + JDO + 20091231 + Create junit tests for SQL class hierarchy. @@ -109,7 +129,7 @@ Enh. JDO - 20090903 + 20091228