Move HashMapDb to its own bundle 64/24064/2
authorFlorin Coras <fcoras@cisco.com>
Mon, 13 Jul 2015 00:20:28 +0000 (02:20 +0200)
committerFlorin Coras <fcoras@cisco.com>
Tue, 14 Jul 2015 11:17:58 +0000 (13:17 +0200)
HashMapDb is a simple, in memory implementation of ILispDAO, the
interface that defines the API for the interaction with the Map-Server's
mappings database. Until now, HashMapDb was part of
mappingservice.implementation but with this commit it is moved to its
own mappingservice.inmemorydb bundle.

An important feature is that a ILispDAO implementation is now injected
into mappingservice.implementation at runtime through config-subsystem.
As a result, InMemoryDb can be easily swapped with other implementations.

Change-Id: I29af97b831414eecbbf3c29e6fbec086a627a770
Signed-off-by: Florin Coras <fcoras@cisco.com>
21 files changed:
artifacts/pom.xml
commons/parent/pom.xml
features/pom.xml
features/src/main/resources/features.xml
mappingservice/api/pom.xml
mappingservice/api/src/main/yang/lfm-ms-dao.yang [new file with mode: 0644]
mappingservice/implementation/pom.xml
mappingservice/implementation/src/main/config/default-config.xml
mappingservice/implementation/src/main/java/org/opendaylight/controller/config/yang/config/lfm_mappingservice/impl/LfmMappingServiceModule.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/LispMappingService.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/AbstractLispComponent.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapServer.java
mappingservice/implementation/src/main/yang/lfm-mappingservice-impl.yang
mappingservice/inmemorydb/pom.xml [new file with mode: 0644]
mappingservice/inmemorydb/src/main/config/default-config.xml [new file with mode: 0644]
mappingservice/inmemorydb/src/main/java/org/opendaylight/controller/config/yang/config/lfm/ms/dao/inmemorydb/InMemoryDbModule.java [new file with mode: 0644]
mappingservice/inmemorydb/src/main/java/org/opendaylight/controller/config/yang/config/lfm/ms/dao/inmemorydb/InMemoryDbModuleFactory.java [new file with mode: 0644]
mappingservice/inmemorydb/src/main/java/org/opendaylight/lispflowmapping/inmemorydb/HashMapDb.java [moved from mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/dao/HashMapDb.java with 95% similarity]
mappingservice/inmemorydb/src/main/yang/lfm-ms-inmemorydb.yang [new file with mode: 0644]
mappingservice/neutron/pom.xml
mappingservice/pom.xml

index 12b76c9bf87e2501748c89f656ec5907ed4edd17..bdc3f0046180e5be2aead9842a52ed75f248fa75 100644 (file)
@@ -37,6 +37,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
         <artifactId>mappingservice.implementation</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>mappingservice.inmemorydb</artifactId>
+        <version>${project.version}</version>
+      </dependency>
       <dependency>
         <groupId>${project.groupId}</groupId>
         <artifactId>mappingservice.netconf</artifactId>
index fb5bc61222ba670a5a207fdedd8e4269d8694c25..a6d44556210840964ee1ca348248cd0bea97aca5 100644 (file)
         <artifactId>mappingservice.implementation</artifactId>
         <version>${lispflowmapping.version}</version>
       </dependency>
-
+      <dependency>
+        <groupId>org.opendaylight.lispflowmapping</groupId>
+        <artifactId>mappingservice.inmemorydb</artifactId>
+        <version>${lispflowmapping.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.opendaylight.lispflowmapping</groupId>
         <artifactId>mappingservice.netconf</artifactId>
index 33279f2ed94cbbea348bb8a199c5c8daf2c54abb..b400f1599dae63c0e11e49fa31f8cd21cb3403b0 100644 (file)
       <groupId>org.opendaylight.lispflowmapping</groupId>
       <artifactId>mappingservice.config</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.lispflowmapping</groupId>
+      <artifactId>mappingservice.inmemorydb</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>mappingservice.inmemorydb</artifactId>
+      <version>${project.version}</version>
+      <classifier>config</classifier>
+      <type>xml</type>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.lispflowmapping</groupId>
       <artifactId>mappingservice.netconf</artifactId>
index eef6465e0108028fb4a3d8a964db6fb9af515e39..b82417d2a6851c910b7daa0299b814970acec9d4 100644 (file)
@@ -37,6 +37,7 @@
         <!-- <feature version="${clustering.services.version}">odl-adsal-clustering</feature> -->
         <feature version='${yangtools.version}'>odl-yangtools-binding</feature>
         <feature version='${yangtools.version}'>odl-yangtools-models</feature>
+        <feature version="${lispflowmapping.version}">odl-lispflowmapping-inmemorydb</feature>
         <bundle>mvn:com.google.guava/guava/${guava.version}</bundle>
         <bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.yangmodel/${lispflowmapping.version}</bundle>
         <bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.api/${lispflowmapping.version}</bundle>
         </configfile>
     </feature>
 
+    <feature name="odl-lispflowmapping-inmemorydb" description="OpenDaylight :: LISP Flow Mapping :: In Memory DB" version='${lispflowmapping.version}'>
+        <feature version="${mdsal.version}">odl-mdsal-broker</feature>
+        <feature version='${yangtools.version}'>odl-yangtools-binding</feature>
+        <feature version='${yangtools.version}'>odl-yangtools-models</feature>
+        <bundle>mvn:com.google.guava/guava/${guava.version}</bundle>
+        <bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.yangmodel/${lispflowmapping.version}</bundle>
+        <bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.api/${lispflowmapping.version}</bundle>
+        <bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.inmemorydb/${lispflowmapping.version}</bundle>
+        <configfile finalname="${configfile.directory}/lfm-inmemorydb.xml">
+            mvn:org.opendaylight.lispflowmapping/mappingservice.inmemorydb/${lispflowmapping.version}/xml/config
+        </configfile>
+    </feature>
+
     <feature name="odl-lispflowmapping-southbound" description="OpenDaylight :: LISP Flow Mapping :: Southbound Plugin" version='${lispflowmapping.version}'>
         <feature version="${lispflowmapping.version}">odl-lispflowmapping-mappingservice</feature>
         <bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.southbound/${lispflowmapping.version}</bundle>
@@ -67,4 +81,5 @@
         <feature version="${lispflowmapping.version}">odl-lispflowmapping-mappingservice</feature>
         <bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.neutron/${lispflowmapping.version}</bundle>
     </feature>
+
 </features>
index 9f30d7d2acf590379f797c4911158e7ceb37480d..6d360c0cc24e53ef36b1b978447983b8982bbfbe 100644 (file)
@@ -8,9 +8,7 @@
     <version>1.3.0-SNAPSHOT</version>
   </parent>
 
-  <groupId>org.opendaylight.lispflowmapping</groupId>
   <artifactId>mappingservice.api</artifactId>
-  <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <name>Mapping Service Public APIs</name>
 
       <groupId>org.opendaylight.lispflowmapping</groupId>
       <artifactId>mappingservice.yangmodel</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.yangtools.model</groupId>
+      <artifactId>ietf-inet-types</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.yangtools.model</groupId>
+      <artifactId>ietf-yang-types</artifactId>
+    </dependency>
   </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <extensions>true</extensions>
-        <configuration>
-          <instructions>
-            <Export-Package>org.opendaylight.lispflowmapping.interfaces.dao,
-              org.opendaylight.lispflowmapping.interfaces.lisp,
-              org.opendaylight.lispflowmapping.type,
-              org.opendaylight.lispflowmapping.type.lisp,
-              org.opendaylight.lispflowmapping.type.lisp.address,
-              org.opendaylight.lispflowmapping.type.sbplugin</Export-Package>
-            <Import-Package>org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314,
-              org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress,
-              org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer,
-              org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.locatorrecords,
-              org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.eidtolocatorrecords,
-              org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address,
-              org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispsimpleaddress,
-              org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispsimpleaddress.primitiveaddress,
-              org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.transportaddress,
-              org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924,
-              org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924,
-              org.opendaylight.controller.sal.binding.api,
-              org.opendaylight.yangtools.yang.binding,
-              javax.xml.bind,
-              javax.xml.bind.annotation,
-              org.slf4j,
-              org.opendaylight.yangtools.yang.common,
-              com.google.common.collect</Import-Package>
-          </instructions>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
 </project>
diff --git a/mappingservice/api/src/main/yang/lfm-ms-dao.yang b/mappingservice/api/src/main/yang/lfm-ms-dao.yang
new file mode 100644 (file)
index 0000000..3507e4a
--- /dev/null
@@ -0,0 +1,20 @@
+module lfm-ms-dao {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao";
+    prefix "ms-dao";
+
+    import config { prefix config; revision-date 2013-04-05; }
+
+    description
+        "Service definition for Mapping Service DAO.";
+
+    revision "2015-07-13" {
+        description
+            "Initial revision";
+    }
+
+    identity ms-dao {
+        base "config:service-type";
+        config:java-class "org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO";
+    }
+}
\ No newline at end of file
index e95989541a12d70430edec7c763ce5bf6acd8781..8376d852a2379255cd29bd4a1dc3d437857268af 100644 (file)
@@ -8,9 +8,7 @@
     <version>1.3.0-SNAPSHOT</version>
   </parent>
 
-  <groupId>org.opendaylight.lispflowmapping</groupId>
   <artifactId>mappingservice.implementation</artifactId>
-  <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <name>Mapping Service Implementation</name>
 
       <artifactId>mappingservice.api</artifactId>
       <version>${project.version}</version>
     </dependency>
+    <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>mappingservice.inmemorydb</artifactId>
+        <version>${project.version}</version>
+    </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>mappingservice.yangmodel</artifactId>
       <version>${project.version}</version>
     </dependency>
 
-    <!-- needed for activator -->
-    <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.dependencymanager</artifactId>
-    </dependency>
-
     <!-- needed for osgi console -->
     <dependency>
       <groupId>equinoxSDK381</groupId>
index bce866835582a05edcc32a302ff58589dbdab00f..e622f85c29cfa7bf470aa676971712a4ca8e7fa5 100644 (file)
@@ -2,6 +2,7 @@
 <snapshot>
     <required-capabilities>
         <capability>urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&amp;revision=2013-10-28</capability>
+        <capability>urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao?module=lfm-ms-dao&amp;revision=2015-07-13</capability>
         <capability>urn:opendaylight:params:xml:ns:yang:controller:config:lfm-mappingservice:impl?module=lfm-mappingservice-impl&amp;revision=2015-05-17</capability>
     </required-capabilities>
     <configuration>
                         prefix:lfm-mappingservice-impl
                     </type>
                     <name>lfm-mappingservice-default</name>
-
                     <rpc-registry>
                         <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
                         <name>binding-rpc-broker</name>
                     </rpc-registry>
-
                     <data-broker>
                         <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
                         <name>binding-data-broker</name>
                     </data-broker>
-
                     <broker>
                       <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
                       <name>binding-osgi-broker</name>
                     </broker>
+                    <dao>
+                      <type xmlns:dao="urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao">dao:ms-dao</type>
+                      <name>lfm-ms-inmemorydb</name>
+                    </dao>
                 </module>
             </modules>
             <services xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
@@ -40,7 +42,5 @@
               </service>
             </services>
         </data>
-
     </configuration>
-
 </snapshot>
\ No newline at end of file
index fe59f3fa6174cf247b0a6821710e063558dee30c..482c4cc642a82c0bf9d26962eecf647ca169e18c 100644 (file)
@@ -36,6 +36,7 @@ public class LfmMappingServiceModule extends org.opendaylight.controller.config.
         lfmService.setDataBrokerService(getDataBrokerDependency());
         lfmService.setRpcProviderRegistry(getRpcRegistryDependency());
         lfmService.setBindingAwareBroker(getBrokerDependency());
+        lfmService.setLispDao(getDaoDependency());
         lfmService.initialize();
 
         return lfmService;
index 8c150f692d57a1e94a2d2c1b201c14dcb66b513b..bf47a9db96acf4a145bb46eedf7152d26d93bf83 100644 (file)
@@ -20,7 +20,6 @@ import org.opendaylight.controller.sal.binding.api.NotificationListener;
 import org.opendaylight.controller.sal.binding.api.NotificationService;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.lispflowmapping.implementation.config.ConfigIni;
-import org.opendaylight.lispflowmapping.implementation.dao.HashMapDb;
 import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceKey;
 import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceNoMaskKey;
 import org.opendaylight.lispflowmapping.implementation.lisp.AbstractLispComponent;
@@ -122,7 +121,7 @@ public class LispMappingService implements IFlowMapping, IFlowMappingShell, Bind
         LfmMappingDatabaseRpc mappingDbProviderRpc = new LfmMappingDatabaseRpc(dataBrokerService);
         lfmDbRpc = rpcRegistry.addRpcImplementation(LfmMappingDatabaseService.class, mappingDbProviderRpc);
         dsbe = new DataStoreBackEnd(dataBrokerService);
-        setLispDao(new HashMapDb());
+        restoreDaoFromDatastore();
     }
 
     @Override
@@ -158,10 +157,9 @@ public class LispMappingService implements IFlowMapping, IFlowMappingShell, Bind
         mapServer = new MapServer(dao);
     }
 
-    void setLispDao(ILispDAO dao) {
+    public void setLispDao(ILispDAO dao) {
         LOG.trace("LispDAO set in LispMappingService");
         basicInit(dao);
-        restoreDaoFromDatastore();
     }
 
     void unsetLispDao(ILispDAO dao) {
index ef4175d079db8a416dc86f6565b7c52f84fd4a35..10eb84b6cbcd0e08292cc4778c1be7f978534053 100644 (file)
@@ -9,10 +9,10 @@ package org.opendaylight.lispflowmapping.implementation.lisp;
 
 import java.util.HashSet;
 
-import org.opendaylight.lispflowmapping.implementation.dao.HashMapDb;
 import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceKeyUtil;
 import org.opendaylight.lispflowmapping.implementation.util.LispAFIConvertor;
 import org.opendaylight.lispflowmapping.implementation.util.MaskUtil;
+import org.opendaylight.lispflowmapping.inmemorydb.HashMapDb;
 import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO;
 import org.opendaylight.lispflowmapping.interfaces.dao.IMappingServiceKey;
 import org.opendaylight.lispflowmapping.interfaces.dao.MappingEntry;
index b03d13f7df3348e26e00bd6c51a1bb039aea46c3..ae807440110f07c513675b4ccb06b8b37f76af0c 100644 (file)
@@ -23,11 +23,11 @@ import java.util.Map.Entry;
 import org.apache.commons.lang3.BooleanUtils;
 import org.opendaylight.lispflowmapping.implementation.authentication.LispAuthenticationUtil;
 import org.opendaylight.lispflowmapping.implementation.config.ConfigIni;
-import org.opendaylight.lispflowmapping.implementation.dao.HashMapDb;
 import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceKeyUtil;
 import org.opendaylight.lispflowmapping.implementation.util.DAOMappingUtil;
 import org.opendaylight.lispflowmapping.implementation.util.LispAFIConvertor;
 import org.opendaylight.lispflowmapping.implementation.util.MapNotifyBuilderHelper;
+import org.opendaylight.lispflowmapping.inmemorydb.HashMapDb;
 import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO;
 import org.opendaylight.lispflowmapping.interfaces.dao.IMappingServiceKey;
 import org.opendaylight.lispflowmapping.interfaces.dao.MappingEntry;
index fca8565d52d801ddadfe3fdb07b0c89ef906c8d1..007cdcbccdba131a7c279002d46205ce1b2f7ff9 100644 (file)
@@ -7,7 +7,7 @@ module lfm-mappingservice-impl {
   import config { prefix config; revision-date 2013-04-05; }
   import rpc-context { prefix rpcx; revision-date 2013-06-17; }
   import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
-
+  import lfm-ms-dao { prefix ms-dao; revision-date 2015-07-13; }
 
   description
       "This module contains the base YANG definitions for
@@ -47,7 +47,6 @@ module lfm-mappingservice-impl {
           }
         }
       }
-
       container broker {
           uses config:service-ref {
               refine type {
@@ -56,7 +55,6 @@ module lfm-mappingservice-impl {
               }
           }
       }
-
       container rpc-registry {
         uses config:service-ref {
           refine type {
@@ -65,6 +63,14 @@ module lfm-mappingservice-impl {
           }
         }
       }
+      container dao {
+          uses config:service-ref {
+              refine type {
+                  mandatory true;
+                  config:required-identity ms-dao:ms-dao;
+              }
+          }
+      }
     }
   }
 }
\ No newline at end of file
diff --git a/mappingservice/inmemorydb/pom.xml b/mappingservice/inmemorydb/pom.xml
new file mode 100644 (file)
index 0000000..591b527
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.opendaylight.lispflowmapping</groupId>
+    <artifactId>mappingservice-parent</artifactId>
+    <version>1.3.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>mappingservice.inmemorydb</artifactId>
+  <packaging>bundle</packaging>
+  <name>Mapping Service Inmemory Mappings Database</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>mappingservice.api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+</project>
\ No newline at end of file
diff --git a/mappingservice/inmemorydb/src/main/config/default-config.xml b/mappingservice/inmemorydb/src/main/config/default-config.xml
new file mode 100644 (file)
index 0000000..7aabe00
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<snapshot>
+    <required-capabilities>
+        <capability>urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao?module=lfm-ms-dao&amp;revision=2015-07-13</capability>
+    </required-capabilities>
+    <configuration>
+        <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+            <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
+                <module>
+                    <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao:inmemorydb">
+                        prefix:lfm-ms-inmemorydb
+                    </type>
+                    <name>lfm-ms-inmemorydb-default</name>
+                    <record-timeout>240</record-timeout>
+                </module>
+            </modules>
+            <services xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
+              <service>
+                <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao">prefix:ms-dao</type>
+                <instance>
+                  <name>lfm-ms-inmemorydb</name>
+                  <provider>/modules/module[type='lfm-ms-inmemorydb'][name='lfm-ms-inmemorydb-default']
+                  </provider>
+                </instance>
+              </service>
+            </services>
+        </data>
+    </configuration>
+</snapshot>
\ No newline at end of file
diff --git a/mappingservice/inmemorydb/src/main/java/org/opendaylight/controller/config/yang/config/lfm/ms/dao/inmemorydb/InMemoryDbModule.java b/mappingservice/inmemorydb/src/main/java/org/opendaylight/controller/config/yang/config/lfm/ms/dao/inmemorydb/InMemoryDbModule.java
new file mode 100644 (file)
index 0000000..b3d9ab8
--- /dev/null
@@ -0,0 +1,25 @@
+package org.opendaylight.controller.config.yang.config.lfm.ms.dao.inmemorydb;
+
+import org.opendaylight.lispflowmapping.inmemorydb.HashMapDb;
+
+public class InMemoryDbModule extends org.opendaylight.controller.config.yang.config.lfm.ms.dao.inmemorydb.AbstractInMemoryDbModule {
+    public InMemoryDbModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
+    }
+
+    public InMemoryDbModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.lfm.ms.dao.inmemorydb.InMemoryDbModule oldModule, java.lang.AutoCloseable oldInstance) {
+        super(identifier, dependencyResolver, oldModule, oldInstance);
+    }
+
+    @Override
+    public void customValidation() {
+        // add custom validation form module attributes here.
+    }
+
+    @Override
+    public java.lang.AutoCloseable createInstance() {
+        final HashMapDb hashMapDb = new HashMapDb();
+        hashMapDb.setRecordTimeOut(getRecordTimeout());
+        return hashMapDb;
+    }
+}
diff --git a/mappingservice/inmemorydb/src/main/java/org/opendaylight/controller/config/yang/config/lfm/ms/dao/inmemorydb/InMemoryDbModuleFactory.java b/mappingservice/inmemorydb/src/main/java/org/opendaylight/controller/config/yang/config/lfm/ms/dao/inmemorydb/InMemoryDbModuleFactory.java
new file mode 100644 (file)
index 0000000..0a82ca8
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+* Generated file
+*
+* Generated from: yang module name: lfm-ms-inmemorydb yang module local name: lfm-ms-inmemorydb
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+* Generated at: Mon Jul 13 12:44:05 CEST 2015
+*
+* Do not modify this file unless it is present under src/main directory
+*/
+package org.opendaylight.controller.config.yang.config.lfm.ms.dao.inmemorydb;
+public class InMemoryDbModuleFactory extends org.opendaylight.controller.config.yang.config.lfm.ms.dao.inmemorydb.AbstractInMemoryDbModuleFactory {
+
+}
similarity index 95%
rename from mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/dao/HashMapDb.java
rename to mappingservice/inmemorydb/src/main/java/org/opendaylight/lispflowmapping/inmemorydb/HashMapDb.java
index b20cc6dde15cb68185b93f01d87769515bb58f84..32a8801ac054d451f27d0ba77de2aacf7f8af151 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.lispflowmapping.implementation.dao;
+package org.opendaylight.lispflowmapping.inmemorydb;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -20,7 +20,7 @@ import org.opendaylight.lispflowmapping.interfaces.dao.MappingServiceRLOCGroup;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class HashMapDb implements ILispDAO {
+public class HashMapDb implements ILispDAO, AutoCloseable {
 
     protected static final Logger LOG = LoggerFactory.getLogger(HashMapDb.class);
     private ConcurrentMap<Object, ConcurrentMap<String, Object>> data = new ConcurrentHashMap<Object, ConcurrentMap<String, Object>>();
@@ -110,4 +110,8 @@ public class HashMapDb implements ILispDAO {
         this.timeUnit = timeUnit;
     }
 
+    public void close() throws Exception {
+        data.clear();
+    }
+
 }
diff --git a/mappingservice/inmemorydb/src/main/yang/lfm-ms-inmemorydb.yang b/mappingservice/inmemorydb/src/main/yang/lfm-ms-inmemorydb.yang
new file mode 100644 (file)
index 0000000..e33d050
--- /dev/null
@@ -0,0 +1,33 @@
+module lfm-ms-inmemorydb {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao:inmemorydb";
+    prefix "inmemorydb";
+
+    import config { prefix config; revision-date 2013-04-05; }
+    import lfm-ms-dao { prefix ms-dao; revision-date 2015-07-13; }
+
+    description
+        "Service definition for Mapping Service DAO.";
+
+    revision "2015-07-13" {
+        description
+            "Initial revision";
+    }
+
+    identity lfm-ms-inmemorydb {
+        base config:module-type;
+        config:provided-service ms-dao:ms-dao;
+        config:java-name-prefix InMemoryDb;
+    }
+
+    augment "/config:modules/config:module/config:configuration" {
+        case lfm-ms-inmemorydb {
+          when "/config:modules/config:module/config:type = 'lfm-ms-inmemorydb'";
+          leaf record-timeout {
+              type uint16;
+              description
+                  "Mapping record timeout";
+          }
+        }
+    }
+}
\ No newline at end of file
index d83af7aaa02d82bcd8e639e26dcde079ac95188e..08dabed634996bceb0947e307c177f78d1e110ce 100644 (file)
       <groupId>org.opendaylight.yangtools.model</groupId>
       <artifactId>ietf-inet-types</artifactId>
     </dependency>
+    <!-- needed for activator -->
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.dependencymanager</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
index c6d43b8fcccfc5251d3ce2ff87d1499db2c0e889..1ea7781af7d276ca58365b08f8a5f35df792f8e8 100644 (file)
@@ -20,6 +20,7 @@
     <module>api</module>
     <module>config</module>
     <module>clusterdao</module>
+    <module>inmemorydb</module>
     <module>implementation</module>
     <module>southbound</module>
     <module>neutron</module>