Remove blueprint from inmemorydb 92/104092/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 20 Jan 2023 16:50:20 +0000 (17:50 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 20 Jan 2023 16:50:59 +0000 (17:50 +0100)
This is a very simple component, convert it to OSGi DS and also add
Guice annotations.

Change-Id: I3a646569c5deb6052c3937f5a5c070790cfdd84a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
mappingservice/inmemorydb/pom.xml
mappingservice/inmemorydb/src/main/java/org/opendaylight/lispflowmapping/inmemorydb/HashMapDb.java
mappingservice/inmemorydb/src/main/resources/OSGI-INF/blueprint/mappingservice-inmemory-db.xml [deleted file]

index 2051f53d08d707fc3a429afe7f8d79a0ea268841..46b48344065b014bf2f51fd4f13299dee5218602 100644 (file)
       <artifactId>mappingservice.api</artifactId>
       <version>${project.version}</version>
     </dependency>
       <artifactId>mappingservice.api</artifactId>
       <version>${project.version}</version>
     </dependency>
+    <dependency>
+      <groupId>com.guicedee.services</groupId>
+      <artifactId>javax.inject</artifactId>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
+      <groupId>jakarta.annotation</groupId>
+      <artifactId>jakarta.annotation-api</artifactId>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.service.component.annotations</artifactId>
+    </dependency>
   </dependencies>
 </project>
   </dependencies>
 </project>
index 8048cf807a556019f4d492360122ce098d9fb9a7..5156d933209ac1493dd8bd0d27e28021a170c8e6 100644 (file)
@@ -5,16 +5,17 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
  * 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.lispflowmapping.inmemorydb;
 
 import java.util.AbstractMap.SimpleImmutableEntry;
 package org.opendaylight.lispflowmapping.inmemorydb;
 
 import java.util.AbstractMap.SimpleImmutableEntry;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.inject.Singleton;
 import org.opendaylight.lispflowmapping.inmemorydb.radixtrie.RadixTrie;
 import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO;
 import org.opendaylight.lispflowmapping.interfaces.dao.IRowVisitor;
 import org.opendaylight.lispflowmapping.inmemorydb.radixtrie.RadixTrie;
 import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO;
 import org.opendaylight.lispflowmapping.interfaces.dao.IRowVisitor;
@@ -23,18 +24,23 @@ import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4PrefixBinary;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6PrefixBinary;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4PrefixBinary;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6PrefixBinary;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Singleton
+@Component(service = ILispDAO.class, immediate = true, property = "type=default")
 public class HashMapDb implements ILispDAO, AutoCloseable {
 public class HashMapDb implements ILispDAO, AutoCloseable {
-
     protected static final Logger LOG = LoggerFactory.getLogger(HashMapDb.class);
     protected static final Logger LOG = LoggerFactory.getLogger(HashMapDb.class);
-    private static final Object TABLES = (Object) "tables";
-    private ConcurrentMap<Object, ConcurrentMap<String, Object>> data = new ConcurrentHashMap<>();
+    private static final Object TABLES = "tables";
+
+    private final ConcurrentMap<Object, ConcurrentMap<String, Object>> data = new ConcurrentHashMap<>();
 
     // IPv4 and IPv6 radix tries used for longest prefix matching
 
     // IPv4 and IPv6 radix tries used for longest prefix matching
-    private RadixTrie<Object> ip4Trie = new RadixTrie<>(32, true);
-    private RadixTrie<Object> ip6Trie = new RadixTrie<>(128, true);
+    private final RadixTrie<Object> ip4Trie = new RadixTrie<>(32, true);
+    private final RadixTrie<Object> ip6Trie = new RadixTrie<>(128, true);
 
     private enum GetPrefixMethods {
         PARENT,
 
     private enum GetPrefixMethods {
         PARENT,
@@ -44,6 +50,19 @@ public class HashMapDb implements ILispDAO, AutoCloseable {
         COVERING
     }
 
         COVERING
     }
 
+    @Inject
+    @Activate
+    public HashMapDb() {
+
+    }
+
+    @PreDestroy
+    @Deactivate
+    @Override
+    public void close() {
+        data.clear();
+    }
+
     public void tryAddToIpTrie(Object key) {
         if (key instanceof Eid) {
             Eid eid = (Eid) key;
     public void tryAddToIpTrie(Object key) {
         if (key instanceof Eid) {
             Eid eid = (Eid) key;
@@ -243,7 +262,7 @@ public class HashMapDb implements ILispDAO, AutoCloseable {
 
     private static Set<Eid> nodesToEids(Eid key, Set<RadixTrie<Object>.TrieNode> nodes) {
         if (nodes == null || nodes.isEmpty()) {
 
     private static Set<Eid> nodesToEids(Eid key, Set<RadixTrie<Object>.TrieNode> nodes) {
         if (nodes == null || nodes.isEmpty()) {
-            return Collections.emptySet();
+            return Set.of();
         }
 
         Set<Eid> children = new HashSet<>();
         }
 
         Set<Eid> children = new HashSet<>();
@@ -302,10 +321,6 @@ public class HashMapDb implements ILispDAO, AutoCloseable {
         data.clear();
     }
 
         data.clear();
     }
 
-    public void close() throws Exception {
-        data.clear();
-    }
-
     @Override
     public ILispDAO putNestedTable(Object key, String valueKey) {
         ILispDAO nestedTable = (ILispDAO) getSpecific(key, valueKey);
     @Override
     public ILispDAO putNestedTable(Object key, String valueKey) {
         ILispDAO nestedTable = (ILispDAO) getSpecific(key, valueKey);
diff --git a/mappingservice/inmemorydb/src/main/resources/OSGI-INF/blueprint/mappingservice-inmemory-db.xml b/mappingservice/inmemorydb/src/main/resources/OSGI-INF/blueprint/mappingservice-inmemory-db.xml
deleted file mode 100644 (file)
index c117f7a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-  xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
-  odl:use-default-for-reference-types="true">
-
-  <bean id="hashMapDb" class="org.opendaylight.lispflowmapping.inmemorydb.HashMapDb" />
-
-  <service ref="hashMapDb"
-    interface="org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO"
-    odl:type="default" />
-
-</blueprint>
\ No newline at end of file