From 2215da0e7fb9b295e9152091acfa5ae180524c9d Mon Sep 17 00:00:00 2001 From: Michael Vorburger Date: Thu, 22 Mar 2018 14:54:07 +0100 Subject: [PATCH] add requireNonNull to SingleTransactionDataBroker constructor thought of this while seeing this which is actually broken: @Inject DataBroker dataBroker; S.T.D.B. db = new SingleTransactionDataBroker(dataBroker); which cannot work with Dependency Injection (Guice or otherwise), and it's better to have the null check here in the constructor already, not fail with NPE later when one of the (non-static) methods of it is used. see Change-Id: I63d0a93da481003b701c5a1843cece7d50cf51d1 Change-Id: I319d92c2bb50446ff59d156c4f261a51afe01863 Signed-off-by: Michael Vorburger --- .../test/InterfaceManagerConfigurationTest.java | 5 ++++- .../genius/datastoreutils/SingleTransactionDataBroker.java | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java index 36ad9d267..84708c733 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java @@ -180,7 +180,6 @@ public class InterfaceManagerConfigurationTest { TestableDataTreeChangeListenerModule.class, JobCoordinatorTestModule.class); @Inject DataBroker dataBroker; - SingleTransactionDataBroker db = new SingleTransactionDataBroker(dataBroker); @Inject OdlInterfaceRpcService odlInterfaceRpcService; @Inject IInterfaceManager interfaceManager; @Inject JobCoordinatorCountedEventsWaiter coordinatorEventsWaiter; @@ -189,8 +188,12 @@ public class InterfaceManagerConfigurationTest { @Inject BatchingUtils batchingUtils; @Inject FlowAssertTestUtils flowAssertTestUtils; + SingleTransactionDataBroker db; + @Before public void start() throws InterruptedException, TransactionCommitFailedException { + db = new SingleTransactionDataBroker(dataBroker); + // Create the bridge and make sure it is ready setupAndAssertBridgeCreation(); } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/SingleTransactionDataBroker.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/SingleTransactionDataBroker.java index aceb56fd7..48be5d669 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/SingleTransactionDataBroker.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/SingleTransactionDataBroker.java @@ -7,9 +7,11 @@ */ package org.opendaylight.genius.datastoreutils; +import static java.util.Objects.requireNonNull; import static org.opendaylight.genius.datastoreutils.TransactionCommitFailedExceptionMapper.SUBMIT_MAPPER; import com.google.common.base.Optional; +import javax.annotation.Nonnull; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; @@ -38,8 +40,8 @@ public class SingleTransactionDataBroker { private final DataBroker broker; // do *NOT* use BP @Inject here, see comment above - public SingleTransactionDataBroker(DataBroker broker) { - this.broker = broker; + public SingleTransactionDataBroker(@Nonnull DataBroker broker) { + this.broker = requireNonNull(broker, "dataBroker"); } /** -- 2.36.6