[Major] moved OrderDao and ResourceDao factory methods to transaction

It makes using transaction feel easier.
This commit is contained in:
Robert von Burg 2013-12-24 00:36:29 +01:00
parent 96e679c973
commit 86dddde196
5 changed files with 29 additions and 29 deletions

View File

@ -21,8 +21,6 @@ import java.util.Properties;
import li.strolch.model.Order;
import li.strolch.model.Resource;
import li.strolch.model.Tags;
import li.strolch.persistence.api.OrderDao;
import li.strolch.persistence.api.ResourceDao;
import li.strolch.persistence.api.PersistenceHandler;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.persistence.impl.model.OrderContextFactory;
@ -68,7 +66,7 @@ public class XmlPersistenceHandler extends StrolchComponent implements Persisten
new ResourceContextFactory());
this.persistenceManager.getCtxFactory().registerPersistenceContextFactory(Order.class, Tags.ORDER,
new OrderContextFactory());
super.initialize(componentConfiguration);
}
@ -86,14 +84,4 @@ public class XmlPersistenceHandler extends StrolchComponent implements Persisten
}
return strolchTx;
}
@Override
public OrderDao getOrderDao(StrolchTransaction tx) {
return new XmlOrderDao(tx);
}
@Override
public ResourceDao getResourceDao(StrolchTransaction tx) {
return new XmlResourceDao(tx);
}
}

View File

@ -18,6 +18,8 @@ package li.strolch.persistence.impl;
import java.util.Set;
import li.strolch.model.StrolchElement;
import li.strolch.persistence.api.OrderDao;
import li.strolch.persistence.api.ResourceDao;
import li.strolch.persistence.api.StrolchPersistenceException;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.persistence.api.TransactionCloseStrategy;
@ -108,4 +110,14 @@ public class XmlStrolchTransaction implements StrolchTransaction {
public boolean isOpen() {
return this.tx.isOpen();
}
@Override
public OrderDao getOrderDao() {
return new XmlOrderDao(this);
}
@Override
public ResourceDao getResourceDao() {
return new XmlResourceDao(this);
}
}

View File

@ -82,13 +82,13 @@ public class ObserverUpdateTest extends AbstractDaoImplTest {
// create order
Order newOrder = createOrder("MyTestOrder", "Test Name", "TestType", new Date(), State.CREATED); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getOrderDao(tx).save(newOrder);
tx.getOrderDao().save(newOrder);
}
// create resource
Resource newResource = createResource("MyTestResource", "Test Name", "TestType"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getResourceDao(tx).save(newResource);
tx.getResourceDao().save(newResource);
}
assertEquals(2, observer.results.size());

View File

@ -40,7 +40,7 @@ public class XmlOrderDaoTest extends AbstractDaoImplTest {
// create
Order newOrder = createOrder("MyTestOrder", "Test Name", "TestType"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getOrderDao(tx).save(newOrder);
tx.getOrderDao().save(newOrder);
}
}
@ -50,13 +50,13 @@ public class XmlOrderDaoTest extends AbstractDaoImplTest {
// create
Order newOrder = createOrder(ID, NAME, TYPE);
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getOrderDao(tx).save(newOrder);
tx.getOrderDao().save(newOrder);
}
// read
Order readOrder = null;
try (StrolchTransaction tx = persistenceHandler.openTx();) {
readOrder = persistenceHandler.getOrderDao(tx).queryBy(TYPE, ID);
readOrder = tx.getOrderDao().queryBy(TYPE, ID);
}
assertNotNull("Should read Order with id " + ID, readOrder); //$NON-NLS-1$
@ -65,13 +65,13 @@ public class XmlOrderDaoTest extends AbstractDaoImplTest {
String newStringValue = "Giddiya!"; //$NON-NLS-1$
sParam.setValue(newStringValue);
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getOrderDao(tx).update(readOrder);
tx.getOrderDao().update(readOrder);
}
// read updated
Order updatedOrder = null;
try (StrolchTransaction tx = persistenceHandler.openTx();) {
updatedOrder = persistenceHandler.getOrderDao(tx).queryBy(TYPE, ID);
updatedOrder = tx.getOrderDao().queryBy(TYPE, ID);
}
assertNotNull("Should read Order with id " + ID, updatedOrder); //$NON-NLS-1$
assertFalse("Objects can't be the same reference after re-reading!", readOrder == updatedOrder); //$NON-NLS-1$
@ -80,12 +80,12 @@ public class XmlOrderDaoTest extends AbstractDaoImplTest {
// delete
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getOrderDao(tx).remove(readOrder);
tx.getOrderDao().remove(readOrder);
}
// fail to re-read
try (StrolchTransaction tx = persistenceHandler.openTx();) {
Order order = persistenceHandler.getOrderDao(tx).queryBy(TYPE, ID);
Order order = tx.getOrderDao().queryBy(TYPE, ID);
assertNull("Should no read Order with id " + ID, order); //$NON-NLS-1$
}
}

View File

@ -40,7 +40,7 @@ public class XmlResourceDaoTest extends AbstractDaoImplTest {
// create
Resource newResource = createResource("MyTestResource", "Test Name", "TestType"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getResourceDao(tx).save(newResource);
tx.getResourceDao().save(newResource);
}
}
@ -50,13 +50,13 @@ public class XmlResourceDaoTest extends AbstractDaoImplTest {
// create
Resource newResource = createResource(ID, NAME, TYPE);
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getResourceDao(tx).save(newResource);
tx.getResourceDao().save(newResource);
}
// read
Resource readResource = null;
try (StrolchTransaction tx = persistenceHandler.openTx();) {
readResource = persistenceHandler.getResourceDao(tx).queryBy(TYPE, ID);
readResource = tx.getResourceDao().queryBy(TYPE, ID);
}
assertNotNull("Should read Resource with id " + ID, readResource); //$NON-NLS-1$
@ -65,13 +65,13 @@ public class XmlResourceDaoTest extends AbstractDaoImplTest {
String newStringValue = "Giddiya!"; //$NON-NLS-1$
sParam.setValue(newStringValue);
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getResourceDao(tx).update(readResource);
tx.getResourceDao().update(readResource);
}
// read updated
Resource updatedResource = null;
try (StrolchTransaction tx = persistenceHandler.openTx();) {
updatedResource = persistenceHandler.getResourceDao(tx).queryBy(TYPE, ID);
updatedResource = tx.getResourceDao().queryBy(TYPE, ID);
}
assertNotNull("Should read Resource with id " + ID, updatedResource); //$NON-NLS-1$
assertFalse("Objects can't be the same reference after re-reading!", readResource == updatedResource); //$NON-NLS-1$
@ -80,12 +80,12 @@ public class XmlResourceDaoTest extends AbstractDaoImplTest {
// delete
try (StrolchTransaction tx = persistenceHandler.openTx();) {
persistenceHandler.getResourceDao(tx).remove(readResource);
tx.getResourceDao().remove(readResource);
}
// fail to re-read
try (StrolchTransaction tx = persistenceHandler.openTx();) {
Resource resource = persistenceHandler.getResourceDao(tx).queryBy(TYPE, ID);
Resource resource = tx.getResourceDao().queryBy(TYPE, ID);
assertNull("Should no read Resource with id " + ID, resource); //$NON-NLS-1$
}
}