From 4a0fb74d210892ea36776ef79ea4072ba9e9d86b Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Fri, 10 Jan 2014 19:10:45 +0100 Subject: [PATCH] [Major] refactored how transactions are opened Now the ElementMapHandler is the central object and clients do not use access DAOs or the PersistenceHandler anymore. This is now transparent. --- .../persistence/xml/XmlPersistenceHandler.java | 15 +++++---------- .../persistence/xml/XmlStrolchTransaction.java | 8 +++++--- .../impl/dao/test/ObserverUpdateTest.java | 4 ++-- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/main/java/li/strolch/persistence/xml/XmlPersistenceHandler.java b/src/main/java/li/strolch/persistence/xml/XmlPersistenceHandler.java index fef399353..2eb9570d7 100644 --- a/src/main/java/li/strolch/persistence/xml/XmlPersistenceHandler.java +++ b/src/main/java/li/strolch/persistence/xml/XmlPersistenceHandler.java @@ -25,9 +25,9 @@ import li.strolch.persistence.api.PersistenceHandler; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.persistence.xml.model.OrderContextFactory; import li.strolch.persistence.xml.model.ResourceContextFactory; -import li.strolch.runtime.StrolchConstants; import li.strolch.runtime.agent.api.StrolchComponent; import li.strolch.runtime.agent.impl.ComponentContainerImpl; +import li.strolch.runtime.agent.impl.StrolchRealm; import li.strolch.runtime.configuration.ComponentConfiguration; import li.strolch.runtime.observer.ObserverHandler; import ch.eitchnet.xmlpers.api.IoMode; @@ -69,15 +69,10 @@ public class XmlPersistenceHandler extends StrolchComponent implements Persisten super.initialize(componentConfiguration); } - public StrolchTransaction openTx() { - return openTx(StrolchConstants.DEFAULT_REALM); - } - - @SuppressWarnings("resource") - // caller will/must close - public StrolchTransaction openTx(String realm) { - PersistenceTransaction tx = this.persistenceManager.openTx(realm); - XmlStrolchTransaction strolchTx = new XmlStrolchTransaction(tx); + @Override + public StrolchTransaction openTx(StrolchRealm realm) { + PersistenceTransaction tx = this.persistenceManager.openTx(realm.getRealm()); + XmlStrolchTransaction strolchTx = new XmlStrolchTransaction(realm, tx); if (getContainer().hasComponent(ObserverHandler.class)) { strolchTx.setObserverHandler(getContainer().getComponent(ObserverHandler.class)); } diff --git a/src/main/java/li/strolch/persistence/xml/XmlStrolchTransaction.java b/src/main/java/li/strolch/persistence/xml/XmlStrolchTransaction.java index a73955571..a29e07451 100644 --- a/src/main/java/li/strolch/persistence/xml/XmlStrolchTransaction.java +++ b/src/main/java/li/strolch/persistence/xml/XmlStrolchTransaction.java @@ -18,24 +18,26 @@ package li.strolch.persistence.xml; import java.util.Set; import li.strolch.model.StrolchElement; +import li.strolch.persistence.api.AbstractTransaction; 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; +import li.strolch.runtime.agent.impl.StrolchRealm; import li.strolch.runtime.observer.ObserverHandler; import ch.eitchnet.xmlpers.api.ModificationResult; import ch.eitchnet.xmlpers.api.PersistenceTransaction; import ch.eitchnet.xmlpers.api.TransactionResult; -public class XmlStrolchTransaction implements StrolchTransaction { +public class XmlStrolchTransaction extends AbstractTransaction { private ObserverHandler observerHandler; private boolean suppressUpdates; private PersistenceTransaction tx; private TransactionCloseStrategy closeStrategy; - public XmlStrolchTransaction(PersistenceTransaction tx) { + public XmlStrolchTransaction(StrolchRealm realm, PersistenceTransaction tx) { + super(realm); this.suppressUpdates = false; this.tx = tx; this.closeStrategy = TransactionCloseStrategy.COMMIT; diff --git a/src/test/java/li/strolch/persistence/impl/dao/test/ObserverUpdateTest.java b/src/test/java/li/strolch/persistence/impl/dao/test/ObserverUpdateTest.java index 95cb81ee0..1eb75f687 100644 --- a/src/test/java/li/strolch/persistence/impl/dao/test/ObserverUpdateTest.java +++ b/src/test/java/li/strolch/persistence/impl/dao/test/ObserverUpdateTest.java @@ -110,13 +110,13 @@ public class ObserverUpdateTest { // 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 = runtimeMock.getOrderMap().openTx()) { + try (StrolchTransaction tx = runtimeMock.getDefaultRealm().openTx()) { 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 = runtimeMock.getResourceMap().openTx()) { + try (StrolchTransaction tx = runtimeMock.getDefaultRealm().openTx()) { tx.getResourceDao().save(newResource); }