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>
<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>
* 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;
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,
+ @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;
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();
}
Set<Eid> children = new HashSet<>();
}
Set<Eid> children = new HashSet<>();
- 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);
+++ /dev/null
-<?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