Merge OSGiBGPTableTypeRegistryConsumer 28/96128/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 12 May 2021 08:50:16 +0000 (10:50 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 12 May 2021 09:18:30 +0000 (11:18 +0200)
We have OSGi R7, hence we can use constructor injection and side-step
the need to have two additional classes.

Change-Id: Ibb950d4c85fecf9597440c881fada94477498a5f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
bgp/openconfig-spi/src/main/java/org/opendaylight/protocol/bgp/openconfig/spi/DefaultBGPTableTypeRegistryConsumer.java
bgp/openconfig-spi/src/main/java/org/opendaylight/protocol/bgp/openconfig/spi/OSGiBGPTableTypeRegistryConsumer.java [deleted file]

index 6703c16223d665d89a092f685b858b2ccb12c010..3fe53d85cd0f95aee69ff8f5a88c5fedba50c686 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.protocol.bgp.openconfig.spi;
 
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableBiMap;
+import java.util.List;
 import java.util.ServiceLoader;
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -18,9 +19,14 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.BgpTableType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
 import org.opendaylight.yangtools.concepts.Immutable;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferencePolicyOption;
 
 @Beta
 @Singleton
+@Component(immediate = true, service = BGPTableTypeRegistryConsumer.class)
 @MetaInfServices(value = BGPTableTypeRegistryConsumer.class)
 public final class DefaultBGPTableTypeRegistryConsumer extends AbstractBGPTableTypeRegistryConsumer
         implements Immutable {
@@ -41,6 +47,12 @@ public final class DefaultBGPTableTypeRegistryConsumer extends AbstractBGPTableT
         tableKeys = ImmutableBiMap.copyOf(builder.tableKeys());
     }
 
+    @Activate
+    public DefaultBGPTableTypeRegistryConsumer(final @Reference(policyOption = ReferencePolicyOption.GREEDY)
+            List<BGPTableTypeRegistryProviderActivator> activators) {
+        this((Iterable<BGPTableTypeRegistryProviderActivator>) activators);
+    }
+
     @Override
     ImmutableBiMap<BgpTableType, Class<? extends AfiSafiType>> tableTypes() {
         return tableTypes;
diff --git a/bgp/openconfig-spi/src/main/java/org/opendaylight/protocol/bgp/openconfig/spi/OSGiBGPTableTypeRegistryConsumer.java b/bgp/openconfig-spi/src/main/java/org/opendaylight/protocol/bgp/openconfig/spi/OSGiBGPTableTypeRegistryConsumer.java
deleted file mode 100644 (file)
index 9bdda64..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.protocol.bgp.openconfig.spi;
-
-import static com.google.common.base.Verify.verifyNotNull;
-
-import java.util.List;
-import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.AfiSafiType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.BgpTableType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferencePolicyOption;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Component(immediate = true, service = BGPTableTypeRegistryConsumer.class)
-// FIXME: merge this with DefaultBGPTableTypeRegistryConsumer when we have OSGi R7
-public final class OSGiBGPTableTypeRegistryConsumer implements BGPTableTypeRegistryConsumer {
-    private static final Logger LOG = LoggerFactory.getLogger(OSGiBGPTableTypeRegistryConsumer.class);
-
-    @Reference(policyOption = ReferencePolicyOption.GREEDY)
-    List<BGPTableTypeRegistryProviderActivator> extensionActivators;
-
-    private DefaultBGPTableTypeRegistryConsumer delegate;
-
-    @Override
-    public BgpTableType getTableType(final Class<? extends AfiSafiType> afiSafiType) {
-        return delegate().getTableType(afiSafiType);
-    }
-
-    @Override
-    public TablesKey getTableKey(final Class<? extends AfiSafiType> afiSafiType) {
-        return delegate().getTableKey(afiSafiType);
-    }
-
-    @Override
-    public Class<? extends AfiSafiType> getAfiSafiType(final BgpTableType bgpTableType) {
-        return delegate().getAfiSafiType(bgpTableType);
-    }
-
-    @Override
-    public Class<? extends AfiSafiType> getAfiSafiType(final TablesKey tablesKey) {
-        return delegate().getAfiSafiType(tablesKey);
-    }
-
-    @Activate
-    void activate() {
-        LOG.info("BGPTableTypeRegistryProviderActivator starting with {} extensions", extensionActivators.size());
-        delegate = new DefaultBGPTableTypeRegistryConsumer(extensionActivators);
-        LOG.info("BGPTableTypeRegistryProvider started");
-    }
-
-    @Deactivate
-    void deactivate() {
-        delegate = null;
-        LOG.info("BGPTableTypeRegistryProvider stopped");
-    }
-
-    @NonNull DefaultBGPTableTypeRegistryConsumer delegate() {
-        return verifyNotNull(delegate);
-    }
-}