package org.castor.cpa.test.test87;
import java.sql.Connection;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.JDOManager;
import org.exolab.castor.jdo.OQLQuery;
import org.exolab.castor.jdo.QueryResults;
public final class TestExtended extends CPATestCase {
private static final String DBNAME = "test87";
private static final String MAPPING = "/org/castor/cpa/test/test87/mapping.xml";
private static final Log LOG = LogFactory.getLog(TestExtended.class);
private static long _baseTimestamp;
private static long _extTimestamp;
public static Test suite() throws Exception {
TestSuite suite = new TestSuite(TestExtended.class.getName());
suite.addTest(new TestExtended("delete"));
suite.addTest(new TestExtended("create"));
suite.addTest(new TestExtended("loadBase"));
suite.addTest(new TestExtended("loadExtended"));
suite.addTest(new TestExtended("queryBase"));
suite.addTest(new TestExtended("queryExtended"));
suite.addTest(new TestExtended("updateBaseShort"));
suite.addTest(new TestExtended("updateExtendedShort"));
suite.addTest(new TestExtended("updateBaseLongCached"));
suite.addTest(new TestExtended("updateExtendedLongCached"));
suite.addTest(new TestExtended("updateBaseLongExpired"));
suite.addTest(new TestExtended("updateExtendedLongExpired"));
suite.addTest(new TestExtended("remove"));
return suite;
}
public TestExtended(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.HSQL)
|| (engine == DatabaseEngineType.MYSQL)
|| (engine == DatabaseEngineType.ORACLE)
|| (engine == DatabaseEngineType.POSTGRESQL)
|| (engine == DatabaseEngineType.SAPDB)
|| (engine == DatabaseEngineType.SQL_SERVER);
}
public void delete() throws Exception {
JDOManager jdo = getJDOManager(DBNAME, MAPPING);
// Delete all records to avoid problems with previous runs
Connection conn = jdo.getConnectionFactory().createConnection();
conn.setAutoCommit(true);
conn.createStatement().execute("DELETE FROM test87_extended");
conn.createStatement().execute("DELETE FROM test87_base");
conn.close();
LOG.debug("Deleted all records from database.");
// Expire all objects in cache
Database db = jdo.getDatabase();
db.getCacheManager().expireCache();
db.close();
LOG.debug("Expired all objects from cache.");
}
public void create() throws Exception {
TimeStampableBase base = new TimeStampableBase(
TimeStampableBase.DEFAULT_ID, TimeStampableBase.DEFAULT_NAME);
TimeStampableExtended ext = new TimeStampableExtended(
TimeStampableExtended.DEFAULT_ID, TimeStampableExtended.DEFAULT_NAME,
TimeStampableExtended.DEFAULT_NOTE);
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
db.begin();
// Timestamp should have been initialized to 0 by constructor
long beginBaseTimestamp = base.jdoGetTimeStamp();
LOG.debug("Timestamp of base after begin: " + beginBaseTimestamp);
assertEquals(TimeStampableBase.DEFAULT_TIMESTAMP, beginBaseTimestamp);
long beginExtTimestamp = ext.jdoGetTimeStamp();
LOG.debug("Timestamp of extended after begin: " + beginExtTimestamp);
assertEquals(TimeStampableExtended.DEFAULT_TIMESTAMP, beginExtTimestamp);
db.create(base);
db.create(ext);
// Timestamp should have been changed at create.
long createBaseTimestamp = base.jdoGetTimeStamp();
LOG.debug("Timestamp of base after create: " + createBaseTimestamp);
assertTrue(beginBaseTimestamp != createBaseTimestamp);
long createExtTimestamp = ext.jdoGetTimeStamp();
LOG.debug("Timestamp of extended after create: " + createExtTimestamp);
assertTrue(beginExtTimestamp != createExtTimestamp);
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.commit();
// Timestamp should not been changed by commit.
long commitBaseTimestamp = base.jdoGetTimeStamp();
LOG.debug("Timestamp of base after commit: " + commitBaseTimestamp);
assertEquals(createBaseTimestamp, commitBaseTimestamp);
long commitExtTimestamp = ext.jdoGetTimeStamp();
LOG.debug("Timestamp of extended after commit: " + commitExtTimestamp);
assertEquals(createExtTimestamp, commitExtTimestamp);
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.close();
// Timestamp should not been changed by database close.
long closeBaseTimestamp = base.jdoGetTimeStamp();
LOG.debug("Timestamp of base after close: " + closeBaseTimestamp);
assertEquals(commitBaseTimestamp, closeBaseTimestamp);
long closeExtTimestamp = ext.jdoGetTimeStamp();
LOG.debug("Timestamp of extended after close: " + closeExtTimestamp);
assertEquals(commitExtTimestamp, closeExtTimestamp);
// Properties should not been changed
assertEquals(TimeStampableBase.DEFAULT_ID, base.getId());
assertEquals(TimeStampableBase.DEFAULT_NAME, base.getName());
assertEquals(TimeStampableExtended.DEFAULT_ID, ext.getId());
assertEquals(TimeStampableExtended.DEFAULT_NAME, ext.getName());
assertEquals(TimeStampableExtended.DEFAULT_NOTE, ext.getNote());
// Remember timestamp for later compare.
_baseTimestamp = commitBaseTimestamp;
_extTimestamp = commitExtTimestamp;
}
public void loadBase() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableBase first = db.load(
TimeStampableBase.class, TimeStampableBase.DEFAULT_ID);
db.commit();
assertEquals(TimeStampableBase.DEFAULT_ID, first.getId());
assertEquals(TimeStampableBase.DEFAULT_NAME, first.getName());
LOG.debug("Timestamp of base after first load: " + first.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_baseTimestamp, first.jdoGetTimeStamp());
// Expire all objects in cache
db.getCacheManager().expireCache();
LOG.debug("Expired all objects from cache.");
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableBase second = db.load(
TimeStampableBase.class, TimeStampableBase.DEFAULT_ID);
db.commit();
db.close();
assertEquals(TimeStampableBase.DEFAULT_ID, second.getId());
assertEquals(TimeStampableBase.DEFAULT_NAME, second.getName());
LOG.debug("Timestamp of base after second load: " + second.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_baseTimestamp, second.jdoGetTimeStamp());
// Remember timestamp for later compare.
_baseTimestamp = second.jdoGetTimeStamp();
}
public void loadExtended() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableExtended first = db.load(
TimeStampableExtended.class, TimeStampableExtended.DEFAULT_ID);
db.commit();
assertEquals(TimeStampableExtended.DEFAULT_ID, first.getId());
assertEquals(TimeStampableExtended.DEFAULT_NAME, first.getName());
assertEquals(TimeStampableExtended.DEFAULT_NOTE, first.getNote());
LOG.debug("Timestamp of extended after first load: " + first.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_extTimestamp, first.jdoGetTimeStamp());
// Expire all objects in cache
db.getCacheManager().expireCache();
LOG.debug("Expired all objects from cache.");
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableExtended second = db.load(
TimeStampableExtended.class, TimeStampableExtended.DEFAULT_ID);
db.commit();
db.close();
assertEquals(TimeStampableExtended.DEFAULT_ID, second.getId());
assertEquals(TimeStampableExtended.DEFAULT_NAME, second.getName());
assertEquals(TimeStampableExtended.DEFAULT_NOTE, second.getNote());
LOG.debug("Timestamp of extended after second load: " + second.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_extTimestamp, second.jdoGetTimeStamp());
// Remember timestamp for later compare.
_extTimestamp = second.jdoGetTimeStamp();
}
public void queryBase() throws Exception {
OQLQuery query;
QueryResults results;
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
query = db.getOQLQuery("SELECT entity FROM "
+ TimeStampableBase.class.getName() + " entity WHERE id = $1");
query.bind(TimeStampableBase.DEFAULT_ID);
results = query.execute();
assertTrue(results.hasMore());
TimeStampableBase first = (TimeStampableBase) results.next();
db.commit();
assertEquals(TimeStampableBase.DEFAULT_ID, first.getId());
assertEquals(TimeStampableBase.DEFAULT_NAME, first.getName());
LOG.debug("Timestamp of base after first query: " + first.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_baseTimestamp, first.jdoGetTimeStamp());
// Expire all objects in cache
db.getCacheManager().expireCache();
LOG.debug("Expired all objects from cache.");
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
query = db.getOQLQuery("SELECT entity FROM "
+ TimeStampableBase.class.getName() + " entity WHERE id = $1");
query.bind(TimeStampableBase.DEFAULT_ID);
results = query.execute();
assertTrue(results.hasMore());
TimeStampableBase second = (TimeStampableBase) results.next();
db.commit();
db.close();
assertEquals(TimeStampableBase.DEFAULT_ID, second.getId());
assertEquals(TimeStampableBase.DEFAULT_NAME, second.getName());
LOG.debug("Timestamp of base after second query: " + second.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_baseTimestamp, second.jdoGetTimeStamp());
// Remember timestamp for later compare.
_baseTimestamp = second.jdoGetTimeStamp();
}
public void queryExtended() throws Exception {
OQLQuery query;
QueryResults results;
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
query = db.getOQLQuery("SELECT entity FROM "
+ TimeStampableExtended.class.getName() + " entity WHERE id = $1");
query.bind(TimeStampableExtended.DEFAULT_ID);
results = query.execute();
assertTrue(results.hasMore());
TimeStampableExtended first = (TimeStampableExtended) results.next();
db.commit();
assertEquals(TimeStampableExtended.DEFAULT_ID, first.getId());
assertEquals(TimeStampableExtended.DEFAULT_NAME, first.getName());
assertEquals(TimeStampableExtended.DEFAULT_NOTE, first.getNote());
LOG.debug("Timestamp of extended after first query: " + first.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_extTimestamp, first.jdoGetTimeStamp());
// Expire all objects in cache
db.getCacheManager().expireCache();
LOG.debug("Expired all objects from cache.");
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
query = db.getOQLQuery("SELECT entity FROM "
+ TimeStampableExtended.class.getName() + " entity WHERE id = $1");
query.bind(TimeStampableExtended.DEFAULT_ID);
results = query.execute();
assertTrue(results.hasMore());
TimeStampableExtended second = (TimeStampableExtended) results.next();
db.commit();
db.close();
assertEquals(TimeStampableExtended.DEFAULT_ID, second.getId());
assertEquals(TimeStampableExtended.DEFAULT_NAME, second.getName());
assertEquals(TimeStampableExtended.DEFAULT_NOTE, second.getNote());
LOG.debug("Timestamp of extended after second query: " + second.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_extTimestamp, second.jdoGetTimeStamp());
// Remember timestamp for later compare.
_extTimestamp = second.jdoGetTimeStamp();
}
public void updateBaseShort() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableBase entity = db.load(
TimeStampableBase.class, TimeStampableBase.DEFAULT_ID);
LOG.debug("Timestamp of base before short update: " + entity.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_baseTimestamp, entity.jdoGetTimeStamp());
entity.setName(TimeStampableBase.ALTERNATE_NAME);
db.commit();
assertEquals(TimeStampableBase.DEFAULT_ID, entity.getId());
assertEquals(TimeStampableBase.ALTERNATE_NAME, entity.getName());
LOG.debug("Timestamp of base after short update: " + entity.jdoGetTimeStamp());
// Timestamp should have been changed at update.
assertFalse(_baseTimestamp == entity.getTimeStamp());
// Remember timestamp for later compare.
_baseTimestamp = entity.jdoGetTimeStamp();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableBase check = db.load(
TimeStampableBase.class, TimeStampableBase.DEFAULT_ID);
db.commit();
db.close();
assertEquals(TimeStampableBase.DEFAULT_ID, check.getId());
assertEquals(TimeStampableBase.ALTERNATE_NAME, check.getName());
LOG.debug("Timestamp of base check after short update: " + check.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_baseTimestamp, check.jdoGetTimeStamp());
}
public void updateExtendedShort() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableExtended entity = db.load(
TimeStampableExtended.class, TimeStampableExtended.DEFAULT_ID);
LOG.debug("Timestamp of extended before short update: " + entity.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_extTimestamp, entity.jdoGetTimeStamp());
entity.setName(TimeStampableExtended.ALTERNATE_NAME);
entity.setNote(TimeStampableExtended.ALTERNATE_NOTE);
db.commit();
assertEquals(TimeStampableExtended.DEFAULT_ID, entity.getId());
assertEquals(TimeStampableExtended.ALTERNATE_NAME, entity.getName());
assertEquals(TimeStampableExtended.ALTERNATE_NOTE, entity.getNote());
LOG.debug("Timestamp of extended after short update: " + entity.jdoGetTimeStamp());
// Timestamp should have been changed at update.
assertFalse(_extTimestamp == entity.getTimeStamp());
// Remember timestamp for later compare.
_extTimestamp = entity.jdoGetTimeStamp();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableExtended check = db.load(
TimeStampableExtended.class, TimeStampableExtended.DEFAULT_ID);
db.commit();
db.close();
assertEquals(TimeStampableExtended.DEFAULT_ID, check.getId());
assertEquals(TimeStampableExtended.ALTERNATE_NAME, check.getName());
assertEquals(TimeStampableExtended.ALTERNATE_NOTE, check.getNote());
LOG.debug("Timestamp of extended check after short update: " + check.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_extTimestamp, check.jdoGetTimeStamp());
}
public void updateBaseLongCached() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableBase entity = db.load(
TimeStampableBase.class, TimeStampableBase.DEFAULT_ID);
db.commit();
LOG.debug("Timestamp of base before long update (cached): " + entity.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_baseTimestamp, entity.jdoGetTimeStamp());
entity.setName(TimeStampableBase.DEFAULT_NAME);
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
db.update(entity);
db.commit();
assertEquals(TimeStampableBase.DEFAULT_ID, entity.getId());
assertEquals(TimeStampableBase.DEFAULT_NAME, entity.getName());
LOG.debug("Timestamp of base after long update (cached): " + entity.jdoGetTimeStamp());
// Timestamp should have been changed at update.
assertFalse(_baseTimestamp == entity.getTimeStamp());
// Remember timestamp for later compare.
_baseTimestamp = entity.jdoGetTimeStamp();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableBase check = db.load(
TimeStampableBase.class, TimeStampableBase.DEFAULT_ID);
db.commit();
db.close();
assertEquals(TimeStampableBase.DEFAULT_ID, check.getId());
assertEquals(TimeStampableBase.DEFAULT_NAME, check.getName());
LOG.debug("Timestamp of base check (cached): " + check.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_baseTimestamp, check.jdoGetTimeStamp());
}
public void updateExtendedLongCached() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableExtended entity = db.load(
TimeStampableExtended.class, TimeStampableExtended.DEFAULT_ID);
db.commit();
LOG.debug("Timestamp of extended before long update (cached): "
+ entity.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_extTimestamp, entity.jdoGetTimeStamp());
entity.setName(TimeStampableExtended.DEFAULT_NAME);
entity.setNote(TimeStampableExtended.DEFAULT_NOTE);
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
db.update(entity);
db.commit();
assertEquals(TimeStampableExtended.DEFAULT_ID, entity.getId());
assertEquals(TimeStampableExtended.DEFAULT_NAME, entity.getName());
assertEquals(TimeStampableExtended.DEFAULT_NOTE, entity.getNote());
LOG.debug("Timestamp of extended after long update (cached): "
+ entity.jdoGetTimeStamp());
// Timestamp should have been changed at update.
assertFalse(_extTimestamp == entity.getTimeStamp());
// Remember timestamp for later compare.
_extTimestamp = entity.jdoGetTimeStamp();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableExtended check = db.load(
TimeStampableExtended.class, TimeStampableExtended.DEFAULT_ID);
db.commit();
db.close();
assertEquals(TimeStampableExtended.DEFAULT_ID, check.getId());
assertEquals(TimeStampableExtended.DEFAULT_NAME, check.getName());
assertEquals(TimeStampableExtended.DEFAULT_NOTE, check.getNote());
LOG.debug("Timestamp of extended check (cached): " + check.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_extTimestamp, check.jdoGetTimeStamp());
}
public void updateBaseLongExpired() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableBase entity = db.load(
TimeStampableBase.class, TimeStampableBase.DEFAULT_ID);
db.commit();
LOG.debug("Timestamp of base before long update (expired): " + entity.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_baseTimestamp, entity.jdoGetTimeStamp());
// Expire all objects in cache
db.getCacheManager().expireCache();
entity.setName(TimeStampableBase.ALTERNATE_NAME);
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
db.update(entity);
db.commit();
assertEquals(TimeStampableBase.DEFAULT_ID, entity.getId());
assertEquals(TimeStampableBase.ALTERNATE_NAME, entity.getName());
LOG.debug("Timestamp of base after long update (expired): " + entity.jdoGetTimeStamp());
// Timestamp should have been changed at update.
assertFalse(_baseTimestamp == entity.getTimeStamp());
// Remember timestamp for later compare.
_baseTimestamp = entity.jdoGetTimeStamp();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableBase check = db.load(
TimeStampableBase.class, TimeStampableBase.DEFAULT_ID);
db.commit();
db.close();
assertEquals(TimeStampableBase.DEFAULT_ID, check.getId());
assertEquals(TimeStampableBase.ALTERNATE_NAME, check.getName());
LOG.debug("Timestamp of base check (expired): " + check.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_baseTimestamp, check.jdoGetTimeStamp());
}
public void updateExtendedLongExpired() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableExtended entity = db.load(
TimeStampableExtended.class, TimeStampableExtended.DEFAULT_ID);
db.commit();
LOG.debug("Timestamp of extended before long update (expired): "
+ entity.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_extTimestamp, entity.jdoGetTimeStamp());
// Expire all objects in cache
db.getCacheManager().expireCache();
entity.setName(TimeStampableExtended.ALTERNATE_NAME);
entity.setNote(TimeStampableExtended.ALTERNATE_NOTE);
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
db.update(entity);
db.commit();
assertEquals(TimeStampableExtended.DEFAULT_ID, entity.getId());
assertEquals(TimeStampableExtended.ALTERNATE_NAME, entity.getName());
assertEquals(TimeStampableExtended.ALTERNATE_NOTE, entity.getNote());
LOG.debug("Timestamp of extended after long update (expired): "
+ entity.jdoGetTimeStamp());
// Timestamp should have been changed at update.
assertFalse(_extTimestamp == entity.getTimeStamp());
// Remember timestamp for later compare.
_extTimestamp = entity.jdoGetTimeStamp();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableExtended check = db.load(
TimeStampableExtended.class, TimeStampableExtended.DEFAULT_ID);
db.commit();
db.close();
assertEquals(TimeStampableExtended.DEFAULT_ID, check.getId());
assertEquals(TimeStampableExtended.ALTERNATE_NAME, check.getName());
assertEquals(TimeStampableExtended.ALTERNATE_NOTE, check.getNote());
LOG.debug("Timestamp of extended check (expired): " + check.jdoGetTimeStamp());
// Compare current timestamp with the remembert one;
assertEquals(_extTimestamp, check.jdoGetTimeStamp());
}
public void remove() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.begin();
TimeStampableBase base = db.load(
TimeStampableBase.class, TimeStampableBase.DEFAULT_ID);
TimeStampableExtended ext = db.load(
TimeStampableExtended.class, TimeStampableExtended.DEFAULT_ID);
// Compare current timestamp with the remembert one;
assertEquals(_baseTimestamp, base.jdoGetTimeStamp());
assertEquals(_extTimestamp, ext.jdoGetTimeStamp());
LOG.debug("Timestamp of base before remove: " + base.jdoGetTimeStamp());
LOG.debug("Timestamp of extended before remove: " + ext.jdoGetTimeStamp());
// Wait 10ms to ensure System.currentTimeMillis() return different values.
Thread.sleep(10);
db.remove(base);
db.remove(ext);
db.commit();
db.close();
assertEquals(TimeStampableBase.DEFAULT_ID, base.getId());
assertEquals(TimeStampableBase.ALTERNATE_NAME, base.getName());
assertEquals(TimeStampableExtended.DEFAULT_ID, ext.getId());
assertEquals(TimeStampableExtended.ALTERNATE_NAME, ext.getName());
assertEquals(TimeStampableExtended.ALTERNATE_NOTE, ext.getNote());
LOG.debug("Timestamp of base after remove: " + base.jdoGetTimeStamp());
LOG.debug("Timestamp of extended after remove: " + ext.jdoGetTimeStamp());
}
}