From 25b2307426919a5cdf13223b02899925bf5c6045 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 20 May 2024 23:22:25 +0200 Subject: [PATCH] Hide PingPongDataBroker The ability to create merging transaction chains has long been integrated into DataBroker. Eliminate the intermediate interface capturing the DataBroker trait and turn it into an implementation detail of OpenFlowPluginProviderImpl. Change-Id: I470f85eead331b82ac3511e4669e86cbc3a34b85 Signed-off-by: Robert Varga (cherry picked from commit 847e5716480a28efb07d6e2e6a0a9f65d1123712) --- .../impl/ForwardingPingPongDataBroker.java | 40 ------------------- .../impl/OpenFlowPluginProviderImpl.java | 4 +- .../impl/PingPongDataBroker.java | 23 ++++++++++- .../blueprint/openflowplugin-impl.xml | 9 +---- 4 files changed, 25 insertions(+), 51 deletions(-) delete mode 100644 openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/ForwardingPingPongDataBroker.java diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/ForwardingPingPongDataBroker.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/ForwardingPingPongDataBroker.java deleted file mode 100644 index e6e30a0bc3..0000000000 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/ForwardingPingPongDataBroker.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2018 Red Hat, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.openflowplugin.impl; - -import static java.util.Objects.requireNonNull; - -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.mdsal.binding.api.DataBroker; -import org.opendaylight.mdsal.binding.api.TransactionChain; -import org.opendaylight.mdsal.binding.spi.ForwardingDataBroker; - -/** - * Delegating {@link PingPongDataBroker} implementation. - * This is useful for simple strongly typed dependency injection. - * - * @author Michael Vorburger.ch - */ -// FIXME: this should not be necessary -public class ForwardingPingPongDataBroker extends ForwardingDataBroker implements PingPongDataBroker { - private final @NonNull DataBroker delegate; - - public ForwardingPingPongDataBroker(final DataBroker delegate) { - this.delegate = requireNonNull(delegate); - } - - @Override - protected DataBroker delegate() { - return delegate; - } - - @Override - public TransactionChain createTransactionChain() { - return delegate().createMergingTransactionChain(); - } -} diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java index 93ce99e6bf..7f3fdd663d 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java @@ -136,7 +136,7 @@ public class OpenFlowPluginProviderImpl implements @Inject public OpenFlowPluginProviderImpl(final ConfigurationService configurationService, final List switchConnectionProviders, - final PingPongDataBroker pingPongDataBroker, + final DataBroker dataBroker, final RpcProviderService rpcProviderRegistry, final NotificationPublishService notificationPublishService, final ClusterSingletonServiceProvider singletonServiceProvider, @@ -145,7 +145,7 @@ public class OpenFlowPluginProviderImpl implements final DiagStatusProvider diagStatusProvider, final SystemReadyMonitor systemReadyMonitor) { this.switchConnectionProviders = switchConnectionProviders; - dataBroker = pingPongDataBroker; + this.dataBroker = new PingPongDataBroker(dataBroker); this.rpcProviderRegistry = rpcProviderRegistry; this.notificationPublishService = notificationPublishService; singletonServicesProvider = singletonServiceProvider; diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/PingPongDataBroker.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/PingPongDataBroker.java index 757a077d49..c09d308450 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/PingPongDataBroker.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/PingPongDataBroker.java @@ -7,13 +7,32 @@ */ package org.opendaylight.openflowplugin.impl; +import static java.util.Objects.requireNonNull; + +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.TransactionChain; +import org.opendaylight.mdsal.binding.spi.ForwardingDataBroker; /** - * An odl:type="pingpong" {@link DataBroker}. + * A {@link DataBroker} implementation which always creates merging transaction chains. * * @author Michael Vorburger.ch */ -public interface PingPongDataBroker extends DataBroker { +final class PingPongDataBroker extends ForwardingDataBroker { + private final @NonNull DataBroker delegate; + + PingPongDataBroker(final DataBroker delegate) { + this.delegate = requireNonNull(delegate); + } + + @Override + protected DataBroker delegate() { + return delegate; + } + @Override + public TransactionChain createTransactionChain() { + return delegate.createMergingTransactionChain(); + } } diff --git a/openflowplugin-impl/src/main/resources/OSGI-INF/blueprint/openflowplugin-impl.xml b/openflowplugin-impl/src/main/resources/OSGI-INF/blueprint/openflowplugin-impl.xml index 0371850e2f..ca06337d6e 100644 --- a/openflowplugin-impl/src/main/resources/OSGI-INF/blueprint/openflowplugin-impl.xml +++ b/openflowplugin-impl/src/main/resources/OSGI-INF/blueprint/openflowplugin-impl.xml @@ -15,7 +15,7 @@ - + @@ -52,13 +52,8 @@ - - - - - -- 2.36.6