private void runTest(TransactionWithQuery<Root, Entity> createEntityTransaction) throws Exception { // Create or load existing prevalence layer from journal and/or snapshot. String dataPath = "target/PrevalenceBase_" + System.currentTimeMillis(); Prevayler<Root> prevayler = PrevaylerFactory.createPrevayler(new Root(), dataPath); try { final Entity entity = prevayler.execute(createEntityTransaction); final long timestampWhenInitiallyCreated = entity.getCreated(); // close and reopen prevalence so the journal is replayed prevayler.close(); prevayler = PrevaylerFactory.createPrevayler(new Root(), dataPath); long timestampAfterRestart = prevayler.execute( new Query<Root, Long>() { public Long query(Root prevalentSystem, Date executionTime) throws Exception { return prevalentSystem.getEntities().get(entity.getIdentity()).getCreated(); } }); assertEquals( "timestamp should not have changed", timestampWhenInitiallyCreated, timestampAfterRestart); } finally { prevayler.close(); } }
public void open() throws Exception { prevayler = PrevaylerFactory.createPrevayler(new Root(), "PrevalenceBase"); if (prevayler.prevalentSystem().getCreated() == null) { prevayler.execute(new InitializeServiceTransaction()); prevayler.takeSnapshot(); } }