From: Robert Varga Date: Fri, 12 Sep 2014 12:31:49 +0000 (+0200) Subject: BUG-650: AbstractDOMForwardedTransactionFactory X-Git-Tag: release/helium~94 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=95f5bb216ceaa7b244f4f9dcc805fc609fcdbf3f BUG-650: AbstractDOMForwardedTransactionFactory ImmutableMap is not really what we want to track datastores -- EnumMap has constant time lookups for everything, plus its use eliminates a needless builder object allocation. Change-Id: I0bea628b82d8366bf14532d3bc321067584a84b5 Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/AbstractDOMForwardedCompositeTransaction.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/AbstractDOMForwardedCompositeTransaction.java index 03f77c3edd..15d53f5310 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/AbstractDOMForwardedCompositeTransaction.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/AbstractDOMForwardedCompositeTransaction.java @@ -7,8 +7,8 @@ package org.opendaylight.controller.md.sal.dom.broker.impl; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; import java.util.Collection; +import java.util.Map; import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransaction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -29,7 +29,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; abstract class AbstractDOMForwardedCompositeTransaction implements AsyncTransaction> { - private final ImmutableMap backingTxs; + private final Map backingTxs; private final Object identifier; /** @@ -41,7 +41,7 @@ abstract class AbstractDOMForwardedCompositeTransaction backingTxs) { + protected AbstractDOMForwardedCompositeTransaction(final Object identifier, final Map backingTxs) { this.identifier = Preconditions.checkNotNull(identifier, "Identifier should not be null"); this.backingTxs = Preconditions.checkNotNull(backingTxs, "Backing transactions should not be null"); } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/AbstractDOMForwardedTransactionFactory.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/AbstractDOMForwardedTransactionFactory.java index d354cca005..f48667b04f 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/AbstractDOMForwardedTransactionFactory.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/AbstractDOMForwardedTransactionFactory.java @@ -7,11 +7,12 @@ */ package org.opendaylight.controller.md.sal.dom.broker.impl; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.EnumMap; import java.util.Map; import java.util.Map.Entry; - import javax.annotation.concurrent.GuardedBy; - import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; @@ -21,9 +22,6 @@ import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransactio import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionFactory; import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; - /** * * Abstract composite transaction factory. @@ -42,7 +40,7 @@ import com.google.common.collect.ImmutableMap; */ public abstract class AbstractDOMForwardedTransactionFactory implements DOMDataCommitImplementation, AutoCloseable { - private final ImmutableMap storeTxFactories; + private final Map storeTxFactories; private boolean closed; @@ -76,11 +74,12 @@ public abstract class AbstractDOMForwardedTransactionFactory builder = ImmutableMap.builder(); + + final Map txns = new EnumMap<>(LogicalDatastoreType.class); for (Entry store : storeTxFactories.entrySet()) { - builder.put(store.getKey(), store.getValue().newReadOnlyTransaction()); + txns.put(store.getKey(), store.getValue().newReadOnlyTransaction()); } - return new DOMForwardedReadOnlyTransaction(newTransactionIdentifier(), builder.build()); + return new DOMForwardedReadOnlyTransaction(newTransactionIdentifier(), txns); } @@ -126,12 +125,12 @@ public abstract class AbstractDOMForwardedTransactionFactory builder = ImmutableMap.builder(); + + final Map txns = new EnumMap<>(LogicalDatastoreType.class); for (Entry store : storeTxFactories.entrySet()) { - builder.put(store.getKey(), store.getValue().newWriteOnlyTransaction()); + txns.put(store.getKey(), store.getValue().newWriteOnlyTransaction()); } - return new DOMForwardedWriteTransaction(newTransactionIdentifier(), builder.build(), - this); + return new DOMForwardedWriteTransaction(newTransactionIdentifier(), txns, this); } /** @@ -181,11 +180,12 @@ public abstract class AbstractDOMForwardedTransactionFactory builder = ImmutableMap.builder(); + + final Map txns = new EnumMap<>(LogicalDatastoreType.class); for (Entry store : storeTxFactories.entrySet()) { - builder.put(store.getKey(), store.getValue().newReadWriteTransaction()); + txns.put(store.getKey(), store.getValue().newReadWriteTransaction()); } - return new DOMForwardedReadWriteTransaction(newTransactionIdentifier(), builder.build(), this); + return new DOMForwardedReadWriteTransaction(newTransactionIdentifier(), txns, this); } /** diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedReadOnlyTransaction.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedReadOnlyTransaction.java index 5e2a417d28..b5a8e42981 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedReadOnlyTransaction.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedReadOnlyTransaction.java @@ -7,6 +7,9 @@ */ package org.opendaylight.controller.md.sal.dom.broker.impl; +import com.google.common.base.Optional; +import com.google.common.util.concurrent.CheckedFuture; +import java.util.Map; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; @@ -14,12 +17,7 @@ import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadTransaction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableMap; -import com.google.common.util.concurrent.CheckedFuture; - /** - * * Read Only Transaction, which is composed of several * {@link DOMStoreReadTransaction} transactions. Subtransaction is selected by * {@link LogicalDatastoreType} type parameter in @@ -30,7 +28,7 @@ class DOMForwardedReadOnlyTransaction extends DOMDataReadOnlyTransaction { protected DOMForwardedReadOnlyTransaction(final Object identifier, - final ImmutableMap backingTxs) { + final Map backingTxs) { super(identifier, backingTxs); } @@ -41,8 +39,8 @@ class DOMForwardedReadOnlyTransaction extends } @Override public CheckedFuture exists( - LogicalDatastoreType store, - YangInstanceIdentifier path) { + final LogicalDatastoreType store, + final YangInstanceIdentifier path) { return getSubtransaction(store).exists(path); } @@ -50,5 +48,4 @@ class DOMForwardedReadOnlyTransaction extends public void close() { closeSubtransactions(); } - } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedReadWriteTransaction.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedReadWriteTransaction.java index 67351ec945..a7bdd1e801 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedReadWriteTransaction.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedReadWriteTransaction.java @@ -6,6 +6,9 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */package org.opendaylight.controller.md.sal.dom.broker.impl; +import com.google.common.base.Optional; +import com.google.common.util.concurrent.CheckedFuture; +import java.util.Map; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; @@ -13,10 +16,6 @@ import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransactio import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableMap; -import com.google.common.util.concurrent.CheckedFuture; - /** * * Read-Write Transaction, which is composed of several @@ -40,7 +39,7 @@ class DOMForwardedReadWriteTransaction extends DOMForwardedWriteTransaction backingTxs, + final Map backingTxs, final DOMDataCommitImplementation commitImpl) { super(identifier, backingTxs, commitImpl); } @@ -52,8 +51,8 @@ class DOMForwardedReadWriteTransaction extends DOMForwardedWriteTransaction exists( - LogicalDatastoreType store, - YangInstanceIdentifier path) { + final LogicalDatastoreType store, + final YangInstanceIdentifier path) { return getSubtransaction(store).exists(path); } } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedWriteTransaction.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedWriteTransaction.java index 8c57cfb18d..8c84af11ff 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedWriteTransaction.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMForwardedWriteTransaction.java @@ -8,12 +8,12 @@ package org.opendaylight.controller.md.sal.dom.broker.impl; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.Collection; +import java.util.Map; import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; import org.opendaylight.controller.md.sal.common.api.TransactionStatus; @@ -79,7 +79,7 @@ class DOMForwardedWriteTransaction extends private volatile Future commitFuture; protected DOMForwardedWriteTransaction(final Object identifier, - final ImmutableMap backingTxs, final DOMDataCommitImplementation commitImpl) { + final Map backingTxs, final DOMDataCommitImplementation commitImpl) { super(identifier, backingTxs); this.commitImpl = Preconditions.checkNotNull(commitImpl, "commitImpl must not be null."); }