From 8c91c1294852f6c26428934779b83146976a83f2 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Fri, 10 Jan 2014 19:10:42 +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. --- .../postgresql/PostgreSqlPersistenceHandler.java | 7 ++----- .../postgresql/PostgreSqlStrolchTransaction.java | 16 ++++++++-------- .../postgresql/dao/test/ObserverUpdateTest.java | 4 ++-- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/main/java/li/strolch/persistence/postgresql/PostgreSqlPersistenceHandler.java b/src/main/java/li/strolch/persistence/postgresql/PostgreSqlPersistenceHandler.java index 6486cda0e..9dddef4a7 100644 --- a/src/main/java/li/strolch/persistence/postgresql/PostgreSqlPersistenceHandler.java +++ b/src/main/java/li/strolch/persistence/postgresql/PostgreSqlPersistenceHandler.java @@ -30,6 +30,7 @@ import li.strolch.persistence.api.StrolchTransaction; 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.configuration.StrolchConfigurationException; import li.strolch.runtime.observer.ObserverHandler; @@ -99,11 +100,7 @@ public class PostgreSqlPersistenceHandler extends StrolchComponent implements Pe super.start(); } - public StrolchTransaction openTx() { - return openTx(StrolchConstants.DEFAULT_REALM); - } - - public StrolchTransaction openTx(String realm) { + public StrolchTransaction openTx(StrolchRealm realm) { PostgreSqlStrolchTransaction tx = new PostgreSqlStrolchTransaction(realm, this); if (getContainer().hasComponent(ObserverHandler.class)) { tx.setObserverHandler(getContainer().getComponent(ObserverHandler.class)); diff --git a/src/main/java/li/strolch/persistence/postgresql/PostgreSqlStrolchTransaction.java b/src/main/java/li/strolch/persistence/postgresql/PostgreSqlStrolchTransaction.java index bc365fdef..ff2561625 100644 --- a/src/main/java/li/strolch/persistence/postgresql/PostgreSqlStrolchTransaction.java +++ b/src/main/java/li/strolch/persistence/postgresql/PostgreSqlStrolchTransaction.java @@ -21,14 +21,15 @@ import java.util.Date; import java.util.Set; import li.strolch.model.StrolchElement; +import li.strolch.persistence.api.AbstractTransaction; import li.strolch.persistence.api.ModificationResult; 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.persistence.api.TransactionResult; import li.strolch.persistence.api.TransactionState; +import li.strolch.runtime.agent.impl.StrolchRealm; import li.strolch.runtime.observer.ObserverHandler; import org.slf4j.Logger; @@ -36,11 +37,10 @@ import org.slf4j.LoggerFactory; import ch.eitchnet.utils.helper.StringHelper; -public class PostgreSqlStrolchTransaction implements StrolchTransaction { +public class PostgreSqlStrolchTransaction extends AbstractTransaction { private static final Logger logger = LoggerFactory.getLogger(PostgreSqlStrolchTransaction.class); private PostgreSqlPersistenceHandler persistenceHandler; - private String realm; private TransactionCloseStrategy closeStrategy; private ObserverHandler observerHandler; @@ -54,10 +54,10 @@ public class PostgreSqlStrolchTransaction implements StrolchTransaction { private TransactionResult txResult; private boolean open; - public PostgreSqlStrolchTransaction(String realm, PostgreSqlPersistenceHandler persistenceHandler) { + public PostgreSqlStrolchTransaction(StrolchRealm realm, PostgreSqlPersistenceHandler persistenceHandler) { + super(realm); this.startTime = System.nanoTime(); this.startTimeDate = new Date(); - this.realm = realm; this.persistenceHandler = persistenceHandler; this.suppressUpdates = false; this.closeStrategy = TransactionCloseStrategy.COMMIT; @@ -152,7 +152,7 @@ public class PostgreSqlStrolchTransaction implements StrolchTransaction { this.txResult.setStartTime(this.startTimeDate); this.txResult.setTxDuration(txDuration); this.txResult.setCloseDuration(closeDuration); - this.txResult.setRealm(this.realm); + this.txResult.setRealm(getRealm().getRealm()); StringBuilder sb = new StringBuilder(); sb.append("TX was completed after "); //$NON-NLS-1$ @@ -201,7 +201,7 @@ public class PostgreSqlStrolchTransaction implements StrolchTransaction { this.txResult.setStartTime(this.startTimeDate); this.txResult.setTxDuration(txDuration); this.txResult.setCloseDuration(closeDuration); - this.txResult.setRealm(this.realm); + this.txResult.setRealm(getRealm().getRealm()); } @Override @@ -233,7 +233,7 @@ public class PostgreSqlStrolchTransaction implements StrolchTransaction { */ Connection getConnection() { if (this.connection == null) { - this.connection = this.persistenceHandler.getConnection(this.realm); + this.connection = this.persistenceHandler.getConnection(getRealm().getRealm()); } return this.connection; } diff --git a/src/test/java/li/strolch/persistence/postgresql/dao/test/ObserverUpdateTest.java b/src/test/java/li/strolch/persistence/postgresql/dao/test/ObserverUpdateTest.java index 4f24fd470..6b8c6b665 100644 --- a/src/test/java/li/strolch/persistence/postgresql/dao/test/ObserverUpdateTest.java +++ b/src/test/java/li/strolch/persistence/postgresql/dao/test/ObserverUpdateTest.java @@ -113,13 +113,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); }