[Major] moved OrderDao and ResourceDao factory methods to transaction
It makes using transaction feel easier.
This commit is contained in:
parent
96e679c973
commit
86dddde196
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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$
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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$
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue