summaryrefslogtreecommitdiff
path: root/opendc-integration-jpa/src/main/kotlin/nl/atlarge/opendc/platform/JpaExperimentManager.kt
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2017-09-28 16:56:25 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2017-09-28 16:56:25 +0200
commit504598b320c689cca3d1bbf523a4dd82f69d7a61 (patch)
tree5058464bf8b8f4068240020c639bb1de6721a029 /opendc-integration-jpa/src/main/kotlin/nl/atlarge/opendc/platform/JpaExperimentManager.kt
parentd6d9d37abf17071ff050e45ea37c693e659a4e98 (diff)
Add thread pool for experiment platform
Diffstat (limited to 'opendc-integration-jpa/src/main/kotlin/nl/atlarge/opendc/platform/JpaExperimentManager.kt')
-rw-r--r--opendc-integration-jpa/src/main/kotlin/nl/atlarge/opendc/platform/JpaExperimentManager.kt13
1 files changed, 10 insertions, 3 deletions
diff --git a/opendc-integration-jpa/src/main/kotlin/nl/atlarge/opendc/platform/JpaExperimentManager.kt b/opendc-integration-jpa/src/main/kotlin/nl/atlarge/opendc/platform/JpaExperimentManager.kt
index faa1a771..ce69f84b 100644
--- a/opendc-integration-jpa/src/main/kotlin/nl/atlarge/opendc/platform/JpaExperimentManager.kt
+++ b/opendc-integration-jpa/src/main/kotlin/nl/atlarge/opendc/platform/JpaExperimentManager.kt
@@ -27,14 +27,21 @@ package nl.atlarge.opendc.platform
import nl.atlarge.opendc.integration.jpa.schema.Experiment as InternalExperiment
import nl.atlarge.opendc.integration.jpa.schema.ExperimentState
import javax.persistence.EntityManager
+import javax.persistence.EntityManagerFactory
/**
* A manager for [Experiment]s received from a JPA database.
*
- * @property manager The JPA entity manager to retrieve entities from the database from.
+ * @property factory The JPA entity manager factory to create [EntityManager]s to retrieve entities from the database
+ * from.
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
-class JpaExperimentManager(private val manager: EntityManager) {
+class JpaExperimentManager(private val factory: EntityManagerFactory) {
+ /**
+ * The entity manager for this experiment.
+ */
+ private val manager: EntityManager = factory.createEntityManager()
+
/**
* The amount of experiments in the queue. This property makes a call to the database and does therefore not
* run in O(1) time.
@@ -68,6 +75,6 @@ class JpaExperimentManager(private val manager: EntityManager) {
experiment!!.state = ExperimentState.CLAIMED
}
manager.transaction.commit()
- return experiment?.let { JpaExperiment(manager, it) }
+ return experiment?.let { JpaExperiment(factory.createEntityManager(), it) }
}
}