blob: 16e22aa20679ef5c318d74a95bedceffbad920fc [file] [log] [blame]
Ayaka Koshibe3a321562015-04-29 13:24:07 -07001package org.onosproject.store.consistent.impl;
2
3import org.onosproject.store.service.TransactionContext;
4import org.onosproject.store.service.TransactionContextBuilder;
5
6/**
7 * The default implementation of a transaction context builder. This builder
8 * generates a {@link DefaultTransactionContext}.
9 */
10public class DefaultTransactionContextBuilder implements TransactionContextBuilder {
11
12 private boolean partitionsEnabled = true;
Madan Jampani50589ac2015-06-08 11:38:46 -070013 private final DatabaseManager manager;
Ayaka Koshibe3a321562015-04-29 13:24:07 -070014 private final long transactionId;
15
Madan Jampani50589ac2015-06-08 11:38:46 -070016 public DefaultTransactionContextBuilder(DatabaseManager manager, long transactionId) {
17 this.manager = manager;
Ayaka Koshibe3a321562015-04-29 13:24:07 -070018 this.transactionId = transactionId;
19 }
20
21 @Override
22 public TransactionContextBuilder withPartitionsDisabled() {
23 partitionsEnabled = false;
24 return this;
25 }
26
27 @Override
28 public TransactionContext build() {
29 return new DefaultTransactionContext(
Madan Jampani50589ac2015-06-08 11:38:46 -070030 transactionId,
31 partitionsEnabled ? manager.partitionedDatabase : manager.inMemoryDatabase,
32 () -> partitionsEnabled ? manager.consistentMapBuilder()
33 : manager.consistentMapBuilder().withPartitionsDisabled());
Ayaka Koshibe3a321562015-04-29 13:24:07 -070034 }
Ayaka Koshibe3a321562015-04-29 13:24:07 -070035}