Merge "Bug 7335 - Flow update rejected by switch generates faulty flow entry in opera...
authorShuva Jyoti Kar <shuva.jyoti.kar@ericsson.com>
Fri, 23 Dec 2016 10:03:07 +0000 (10:03 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Fri, 23 Dec 2016 10:03:07 +0000 (10:03 +0000)
55 files changed:
applications/bulk-o-matic/pom.xml
applications/features/pom.xml
applications/forwardingrules-manager/pom.xml
applications/forwardingrules-sync/pom.xml
applications/inventory-manager/pom.xml
applications/lldp-speaker/pom.xml
applications/notification-supplier/pom.xml
applications/of-switch-config-pusher/pom.xml
applications/pom.xml
applications/statistics-manager/pom.xml
applications/table-miss-enforcer/pom.xml
applications/topology-lldp-discovery/pom.xml
applications/topology-manager/pom.xml
artifacts/pom.xml
distribution/karaf/pom.xml
drop-test-karaf/pom.xml
drop-test/pom.xml
extension/features-he/pom.xml
extension/features/pom.xml
extension/openflowjava-extension-nicira-api/pom.xml
extension/openflowjava-extension-nicira/pom.xml
extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/NiciraExtensionsRegistrator.java
extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/NiciraMatchCodecs.java
extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/match/MplsLabelCodec.java [new file with mode: 0644]
extension/openflowjava-extension-nicira/src/main/yang/nicira-match.yang
extension/openflowplugin-extension-api/pom.xml
extension/openflowplugin-extension-nicira-config/pom.xml
extension/openflowplugin-extension-nicira/pom.xml
extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/action/RegMoveConvertor.java
extension/openflowplugin-extension-nicira/src/main/yang/openflowplugin-extension-nicira-action.yang
extension/pom.xml
extension/test-extension/pom.xml
features-he/pom.xml
features/pom.xml
model/model-flow-base/pom.xml
model/model-flow-service/pom.xml
model/model-flow-statistics/pom.xml
model/pom.xml
openflowplugin-api/pom.xml
openflowplugin-blueprint-config-he/pom.xml
openflowplugin-blueprint-config/pom.xml
openflowplugin-common/pom.xml
openflowplugin-controller-config/pom.xml
openflowplugin-impl/pom.xml
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/registry/flow/DeviceFlowRegistryImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtils.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtilsTest.java
openflowplugin-it/pom.xml
openflowplugin/pom.xml
parent/pom.xml
pom.xml
samples/learning-switch/pom.xml
samples/sample-consumer/pom.xml
test-common/pom.xml
test-provider/pom.xml

index 75436b80a03ef4696f7948190b7e3dcba57e291c..abf2dd6ac57b8cb685a5d452bd88b3fc0e407e4b 100644 (file)
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>applications</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
     </parent>
     <groupId>org.opendaylight.openflowplugin.applications</groupId>
     <artifactId>bulk-o-matic</artifactId>
index cb9c6f16bf79ae8c7fb35062aedde7424284c716..d676591f69c9970cdd24d728ffd200e4564e7d61 100644 (file)
@@ -4,21 +4,21 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>features-parent</artifactId>
-    <version>1.7.2-SNAPSHOT</version>
+    <version>1.7.3-SNAPSHOT</version>
     <relativePath/>
   </parent>
 
   <groupId>org.opendaylight.openflowplugin</groupId>
-  <version>0.3.2-SNAPSHOT</version>
+  <version>0.3.3-SNAPSHOT</version>
   <artifactId>features-flow</artifactId>
   <packaging>jar</packaging>
 
   <properties>
-    <yangtools.version>1.0.2-SNAPSHOT</yangtools.version>
-    <config.version>0.5.2-SNAPSHOT</config.version>
-    <mdsal.version>1.4.2-SNAPSHOT</mdsal.version>
-    <openflowjava.version>0.8.2-SNAPSHOT</openflowjava.version>
-    <lldp.version>0.11.2-SNAPSHOT</lldp.version>
+    <yangtools.version>1.0.3-SNAPSHOT</yangtools.version>
+    <config.version>0.5.3-SNAPSHOT</config.version>
+    <mdsal.version>1.4.3-SNAPSHOT</mdsal.version>
+    <openflowjava.version>0.8.3-SNAPSHOT</openflowjava.version>
+    <lldp.version>0.11.3-SNAPSHOT</lldp.version>
 
     <config.configfile.directory>etc/opendaylight/karaf</config.configfile.directory>
     <config.statistics.manager.configfile>30-statistics-manager.xml</config.statistics.manager.configfile>
index d133635cd0097d4131c58d43f00d3e24f35a7914..fc4165e15bb28224da765a2e96907ebe4be0dcad 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.openflowplugin</groupId>
     <artifactId>applications</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
   </parent>
   <groupId>org.opendaylight.openflowplugin.applications</groupId>
   <artifactId>forwardingrules-manager</artifactId>
index 20946d6ad9da07883916b206d925f2f20c82f85b..2f173eb7459ec07db47c3683b0b8f3d81a753b26 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>applications</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
     </parent>
     <groupId>org.opendaylight.openflowplugin.applications</groupId>
     <artifactId>forwardingrules-sync</artifactId>
index 4c6193b4b25ec698536c195d77950a927dc13722..25f2b5c9da2e7efc44002c76dd416f087587ef0e 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-parent</artifactId>
-    <version>0.5.2-SNAPSHOT</version>
+    <version>0.5.3-SNAPSHOT</version>
     <relativePath/>
   </parent>
   <groupId>org.opendaylight.openflowplugin.applications</groupId>
   <artifactId>inventory-manager</artifactId>
-  <version>0.3.2-SNAPSHOT</version>
+  <version>0.3.3-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <dependencyManagement>
index 3e57f852c190bf44a853c771e4fdc155c89ff611..fc1828a7871d5828a7f9c285b73e644bbae8ee3a 100644 (file)
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>applications</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
     </parent>
     <groupId>org.opendaylight.openflowplugin.applications</groupId>
     <artifactId>lldp-speaker</artifactId>
index 41b86d42bf3adafc539088fc90dcff6140e61607..d55cff2036a699d96282c3d4276a3801e0abbcae 100644 (file)
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>applications</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
     </parent>
     <groupId>org.opendaylight.openflowplugin.applications</groupId>
     <artifactId>notification-supplier</artifactId>
index 3595e6095ece1a5083b6af99076f2344a12056e6..23eeb8c5c19bb0e026bf07dc4728b436fcb9d0f9 100644 (file)
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>applications</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
     </parent>
     <groupId>org.opendaylight.openflowplugin.applications</groupId>
     <artifactId>of-switch-config-pusher</artifactId>
index e96fe43aa15e51ee0cda1eaaa661fea0b69cd4ee..ca680cac7884266161f7ff8a18b5c3dc5dfb062f 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
 
index 46bf8d56e5967abdab580dc7c22836af7c6791eb..09f1455d3ac25cc9a75d02be19ee523f80aac447 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.openflowplugin</groupId>
     <artifactId>applications</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
   </parent>
   <groupId>org.opendaylight.openflowplugin.applications</groupId>
   <artifactId>statistics-manager</artifactId>
index 8d752ec0cfd1f8c0af0278c06aa160f21ed2d688..c024e094b1b2be27e76a20994ebfa26902136668 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.openflowplugin</groupId>
     <artifactId>applications</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
   </parent>
   <groupId>org.opendaylight.openflowplugin.applications</groupId>
   <artifactId>table-miss-enforcer</artifactId>
index 7b002dbd3734fe971815e425831aeb80916f4bae..dbc029f80443c7c5affb387cf633d2e892d33807 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-parent</artifactId>
-    <version>0.5.2-SNAPSHOT</version>
+    <version>0.5.3-SNAPSHOT</version>
     <relativePath/>
   </parent>
   <groupId>org.opendaylight.openflowplugin.applications</groupId>
   <artifactId>topology-lldp-discovery</artifactId>
-  <version>0.3.2-SNAPSHOT</version>
+  <version>0.3.3-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <dependencyManagement>
@@ -52,7 +52,7 @@
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>liblldp</artifactId>
-      <version>0.11.2-SNAPSHOT</version>
+      <version>0.11.3-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.openflowplugin.model</groupId>
index 9751b874269de4599584bcb6ae4a1b328e662472..6256df039faa19bf0e0428bac6b0bab372a6d695 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-parent</artifactId>
-    <version>0.5.2-SNAPSHOT</version>
+    <version>0.5.3-SNAPSHOT</version>
     <relativePath/>
   </parent>
   <groupId>org.opendaylight.openflowplugin.applications</groupId>
   <artifactId>topology-manager</artifactId>
-  <version>0.3.2-SNAPSHOT</version>
+  <version>0.3.3-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <dependencyManagement>
index aa0441b9e849436b591a23bc594b80eb508f8630..5c32b527c2df31f8737fc725dd9ff33ac8a38317 100644 (file)
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>odlparent-lite</artifactId>
-    <version>1.7.2-SNAPSHOT</version>
+    <version>1.7.3-SNAPSHOT</version>
     <relativePath/>
   </parent>
 
     <groupId>org.opendaylight.openflowplugin</groupId>
     <artifactId>openflowplugin-artifacts</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <dependencyManagement>
index 1171631bc2ef78b3bd43782231a0cbd5e8f6ccc3..abf385c09117b4273e0fd2852361e0219c9554fc 100644 (file)
@@ -4,19 +4,19 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>karaf-parent</artifactId>
-    <version>1.7.2-SNAPSHOT</version>
+    <version>1.7.3-SNAPSHOT</version>
     <relativePath></relativePath>
   </parent>
   <groupId>org.opendaylight.openflowplugin</groupId>
   <artifactId>openflowplugin-karaf</artifactId>
-  <version>0.3.2-SNAPSHOT</version>
+  <version>0.3.3-SNAPSHOT</version>
   <packaging>pom</packaging>
   <prerequisites>
     <maven>3.0</maven>
   </prerequisites>
 
   <properties>
-    <openflowplugin.version>0.3.2-SNAPSHOT</openflowplugin.version>
+    <openflowplugin.version>0.3.3-SNAPSHOT</openflowplugin.version>
   </properties>
 
   <dependencyManagement>
index bd5b67f930d7be1e2518b44454edadcd2fd70934..86ba6111707d98e55abcae00056181c082fb1cd1 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
     <artifactId>drop-test-karaf</artifactId>
index 92e9d5f13b9c4b5e94837b9388d154bbd8f2b877..2e79ba7fd7487f832145026dca8f7197ed29eb0e 100644 (file)
@@ -3,7 +3,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
     <artifactId>drop-test</artifactId>
index db2136e51228adebf1059e47604a6e0b4d6a848f..f9d744567449041415c658be914e4fe6ce59fd6f 100644 (file)
@@ -4,17 +4,17 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>features-parent</artifactId>
-    <version>1.7.2-SNAPSHOT</version>
+    <version>1.7.3-SNAPSHOT</version>
     <relativePath/>
   </parent>
   <groupId>org.opendaylight.openflowplugin</groupId>
-  <version>0.3.2-SNAPSHOT</version>
+  <version>0.3.3-SNAPSHOT</version>
   <artifactId>features-openflowplugin-extension-he</artifactId>
 
   <packaging>jar</packaging>
 
   <properties>
-    <openflowplugin.version>0.3.2-SNAPSHOT</openflowplugin.version>
+    <openflowplugin.version>0.3.3-SNAPSHOT</openflowplugin.version>
   </properties>
 
   <dependencyManagement>
index 24fe6b57a6e16738f5768f952fdf1d88595886b1..27b4a9b37daed11e0f96c066c92b9408450345a7 100644 (file)
@@ -4,17 +4,17 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>features-parent</artifactId>
-    <version>1.7.2-SNAPSHOT</version>
+    <version>1.7.3-SNAPSHOT</version>
     <relativePath/>
   </parent>
   <groupId>org.opendaylight.openflowplugin</groupId>
-  <version>0.3.2-SNAPSHOT</version>
+  <version>0.3.3-SNAPSHOT</version>
   <artifactId>features-openflowplugin-extension</artifactId>
 
   <packaging>jar</packaging>
 
   <properties>
-    <openflowplugin.version>0.3.2-SNAPSHOT</openflowplugin.version>
+    <openflowplugin.version>0.3.3-SNAPSHOT</openflowplugin.version>
   </properties>
 
   <dependencyManagement>
index 254fe71099df8972ed49d2e76054d2db26e57bbf..20dbd87c009661259d5c7426abec0e6e7adc6317 100644 (file)
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-extension-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../</relativePath>
     </parent>
     <artifactId>openflowjava-extension-nicira-api</artifactId>
index 159d9b558c84a90d5d4ffd05ca6b170aa5e3ac4e..6828d145c6151ee8236e3d6941eb0d078872b7b4 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-extension-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../</relativePath>
     </parent>
     <artifactId>openflowjava-extension-nicira</artifactId>
index 0d2de7a41e6b26b39382f64cfd7321a3839a05a1..f182d8f5039ec2ca14c85792412435bdc1ea92cc 100644 (file)
@@ -57,6 +57,7 @@ import org.opendaylight.openflowjava.nx.codec.match.TunIpv4SrcCodec;
 import org.opendaylight.openflowjava.nx.codec.match.UdpDstCodec;
 import org.opendaylight.openflowjava.nx.codec.match.UdpSrcCodec;
 import org.opendaylight.openflowjava.nx.codec.match.InPortCodec;
+import org.opendaylight.openflowjava.nx.codec.match.MplsLabelCodec;
 
 import com.google.common.base.Preconditions;
 
@@ -125,6 +126,8 @@ public class NiciraExtensionsRegistrator implements AutoCloseable {
         registrator.registerMatchEntryDeserializer(ArpTpaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_TPA_CODEC);
         registrator.registerMatchEntrySerializer(InPortCodec.SERIALIZER_KEY, NiciraMatchCodecs.NXM_OF_IN_PORT_CODEC);
         registrator.registerMatchEntryDeserializer(InPortCodec.DESERIALIZER_KEY, NiciraMatchCodecs.NXM_OF_IN_PORT_CODEC);
+        registrator.registerMatchEntrySerializer(MplsLabelCodec.SERIALIZER_KEY, NiciraMatchCodecs.OXM_OF_MPLS_LABEL);
+        registrator.registerMatchEntryDeserializer(MplsLabelCodec.DESERIALIZER_KEY, NiciraMatchCodecs.OXM_OF_MPLS_LABEL);
         registrator.registerMatchEntrySerializer(EthDstCodec.SERIALIZER_KEY, NiciraMatchCodecs.ETH_DST_CODEC);
         registrator.registerMatchEntryDeserializer(EthDstCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ETH_DST_CODEC);
         registrator.registerMatchEntrySerializer(EthSrcCodec.SERIALIZER_KEY, NiciraMatchCodecs.ETH_SRC_CODEC);
@@ -224,6 +227,8 @@ public class NiciraExtensionsRegistrator implements AutoCloseable {
         registrator.unregisterMatchEntryDeserializer(ArpTpaCodec.DESERIALIZER_KEY);
         registrator.unregisterMatchEntrySerializer(InPortCodec.SERIALIZER_KEY);
         registrator.unregisterMatchEntryDeserializer(InPortCodec.DESERIALIZER_KEY);
+        registrator.unregisterMatchEntrySerializer(MplsLabelCodec.SERIALIZER_KEY);
+        registrator.unregisterMatchEntryDeserializer(MplsLabelCodec.DESERIALIZER_KEY);
         registrator.unregisterMatchEntrySerializer(EthDstCodec.SERIALIZER_KEY);
         registrator.unregisterMatchEntryDeserializer(EthDstCodec.DESERIALIZER_KEY);
         registrator.unregisterMatchEntrySerializer(EthSrcCodec.SERIALIZER_KEY);
index 198ecd7d278825c5dbc510243715ef5b612b258b..27cd24f47f1d1d55d319aff0b4a5ee2c8cdd90bc 100644 (file)
@@ -21,6 +21,7 @@ import org.opendaylight.openflowjava.nx.codec.match.IcmpTypeCodec;
 import org.opendaylight.openflowjava.nx.codec.match.IpSrcCodec;
 import org.opendaylight.openflowjava.nx.codec.match.IpDstCodec;
 import org.opendaylight.openflowjava.nx.codec.match.InPortCodec;
+import org.opendaylight.openflowjava.nx.codec.match.MplsLabelCodec;
 import org.opendaylight.openflowjava.nx.codec.match.Nshc1Codec;
 import org.opendaylight.openflowjava.nx.codec.match.Nshc2Codec;
 import org.opendaylight.openflowjava.nx.codec.match.Nshc3Codec;
@@ -71,6 +72,7 @@ public class NiciraMatchCodecs {
     public static final ArpThaCodec ARP_THA_CODEC = new ArpThaCodec();
     public static final ArpTpaCodec ARP_TPA_CODEC = new ArpTpaCodec();
     public static final InPortCodec NXM_OF_IN_PORT_CODEC = new InPortCodec();
+    public static final MplsLabelCodec OXM_OF_MPLS_LABEL = new MplsLabelCodec();
     public static final EthDstCodec ETH_DST_CODEC = new EthDstCodec();
     public static final EthSrcCodec ETH_SRC_CODEC = new EthSrcCodec();
     public static final TunIpv4DstCodec TUN_IPV4_DST_CODEC = new TunIpv4DstCodec();
diff --git a/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/match/MplsLabelCodec.java b/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/match/MplsLabelCodec.java
new file mode 100644 (file)
index 0000000..72f3b9f
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2016 Ericsson, 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.openflowjava.nx.codec.match;
+
+import org.opendaylight.openflowjava.protocol.api.keys.MatchEntryDeserializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Nxm0Class;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmOfMplsLabel;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.oxm.of.mpls.label.grouping.MplsLabelValuesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.OfMplsLabelCaseValue;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.OfMplsLabelCaseValueBuilder;
+
+import io.netty.buffer.ByteBuf;
+
+public class MplsLabelCodec extends AbstractMatchCodec {
+
+  private static final int VALUE_LENGTH = 4;
+  private static final int NXM_FIELD_CODE = 34;
+
+  public static final MatchEntrySerializerKey<Nxm0Class, NxmOfMplsLabel> SERIALIZER_KEY = new MatchEntrySerializerKey<>(
+      EncodeConstants.OF13_VERSION_ID, Nxm0Class.class,
+      NxmOfMplsLabel.class);
+
+  public static final MatchEntryDeserializerKey DESERIALIZER_KEY = new MatchEntryDeserializerKey(
+      EncodeConstants.OF13_VERSION_ID, OxmMatchConstants.NXM_0_CLASS,
+      NXM_FIELD_CODE);
+
+  @Override
+  public void serialize(MatchEntry input, ByteBuf outBuffer) {
+    serializeHeader(input, outBuffer);
+    OfMplsLabelCaseValue value = (OfMplsLabelCaseValue) input.getMatchEntryValue();
+    outBuffer.writeInt(value.getMplsLabelValues().getMplsLabel().intValue());
+  }
+
+  @Override
+  public MatchEntry deserialize(ByteBuf message) {
+    MatchEntryBuilder matchEntryBuilder = deserializeHeader(message);
+    OfMplsLabelCaseValueBuilder caseBuilder = new OfMplsLabelCaseValueBuilder();
+    MplsLabelValuesBuilder valuesBuilder = new MplsLabelValuesBuilder();
+    valuesBuilder.setMplsLabel(message.readLong()).build();
+    caseBuilder.setMplsLabelValues(valuesBuilder.build());
+    matchEntryBuilder.setMatchEntryValue(caseBuilder.build());
+    return matchEntryBuilder.build();
+  }
+
+  @Override
+  public int getNxmFieldCode() {
+    return NXM_FIELD_CODE;
+  }
+
+  @Override
+  public int getOxmClassCode() {
+    return OxmMatchConstants.NXM_0_CLASS;
+  }
+
+  @Override
+  public int getValueLength() {
+    return VALUE_LENGTH;
+  }
+
+  @Override
+  public Class<? extends MatchField> getNxmField() {
+    return NxmOfMplsLabel.class;
+  }
+
+  @Override
+  public Class<? extends OxmClassBase> getOxmClass() {
+    return Nxm0Class.class;
+  }
+}
index 4ea7dd700709ec7a44cda15b0a0706d5f6d244ef..ab902d6e29322ad7387ec9cd5adebbae8e2f7e94 100644 (file)
@@ -144,6 +144,9 @@ module nicira-match {
     identity nxm-nx-tun-gpe-np {
         base ofoxm:match-field;
     }
+    identity nxm-of-mpls-label {
+        base ofoxm:match-field;
+    }
 
 
     grouping ofj-nxm-nx-match-reg-grouping {
@@ -153,6 +156,14 @@ module nicira-match {
             }
         }
     }
+    grouping ofj-oxm-of-mpls-label-grouping {
+        container mpls-label-values {
+             leaf mpls-label {
+                 type uint32;
+             }
+        }
+    }
+
     grouping ofj-nxm-nx-match-tun-id-grouping {
         container tun-id-values {
             leaf value {
@@ -436,6 +447,9 @@ module nicira-match {
         case eth-src-case-value {
             uses ofj-nxm-of-match-eth-src-grouping;
         }
+        case of-mpls-label-case-value {
+            uses ofj-oxm-of-mpls-label-grouping;
+        }
         case eth-dst-case-value {
             uses ofj-nxm-of-match-eth-dst-grouping;
         }
index d081cdc940875030b60060446c0864ee45a6523c..0b11bccbe1c261c5daa743278eedc65f609878e5 100644 (file)
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-extension-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../</relativePath>
     </parent>
 
index f02bb065bed4825f0e2826b822b508e5ad0c4528..1821f32fd1102cb898601a1415c830bce2299d80 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
       <groupId>org.opendaylight.openflowplugin</groupId>
       <artifactId>openflowplugin-extension-parent</artifactId>
-      <version>0.3.2-SNAPSHOT</version>
+      <version>0.3.3-SNAPSHOT</version>
       <relativePath>../</relativePath>
     </parent>
 
index 628ddd3a7dc692a4760f762fa40b9edf0ce39b73..9db999292c2aff28f8ec9e75f02c0603f82f3e95 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-extension-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../</relativePath>
     </parent>
 
index ddbeb3f076ae2434038d472023170ddafd4914e8..2dd71c98296f8f70e1420b75e6be70ddcf4320ef 100644 (file)
@@ -81,6 +81,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfIpDstCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfIpSrcCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfIpSrcCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfMplsLabelCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfMplsLabelCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flows.statistics.update.flow.and.statistics.map.list.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegMoveNotifFlowsStatisticsUpdateApplyActionsCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flows.statistics.update.flow.and.statistics.map.list.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionRegMoveNotifFlowsStatisticsUpdateWriteActionsCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.group.desc.stats.updated.group.desc.stats.buckets.bucket.action.action.NxActionRegMoveNotifGroupDescStatsUpdatedCaseBuilder;
@@ -116,6 +118,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcNxNshMdtypeCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcNxNshNpCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcNxNshNpCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcNxOfMplsLabelCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcNxTunGpeNpCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcNxTunGpeNpCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcNxRegCase;
@@ -198,6 +201,9 @@ public class RegMoveConvertor implements
         if (dstValue == NiciraMatchCodecs.NXM_OF_IN_PORT_CODEC.getHeaderWithoutHasMask().toLong()) {
             return new DstNxOfInPortCaseBuilder().setOfInPort(true).build();
         }
+        if (dstValue == NiciraMatchCodecs.OXM_OF_MPLS_LABEL.getHeaderWithoutHasMask().toLong()) {
+            return new DstOfMplsLabelCaseBuilder().setOfMplsLabel(true).build();
+        }
         if (dstValue == NiciraMatchCodecs.ETH_DST_CODEC.getHeaderWithoutHasMask().toLong()) {
             return new DstOfEthDstCaseBuilder().setOfEthDst(true).build();
         }
@@ -428,6 +434,9 @@ public class RegMoveConvertor implements
         if (dstChoice instanceof DstNxOfInPortCase) {
             return NiciraMatchCodecs.NXM_OF_IN_PORT_CODEC.getHeaderWithoutHasMask().toLong();
         }
+        if (dstChoice instanceof DstOfMplsLabelCase) {
+            return NiciraMatchCodecs.OXM_OF_MPLS_LABEL.getHeaderWithoutHasMask().toLong();
+        }
         if (dstChoice instanceof DstNxTunIpv4DstCase) {
             return NiciraMatchCodecs.TUN_IPV4_DST_CODEC.getHeaderWithoutHasMask().toLong();
         }
@@ -518,6 +527,9 @@ public class RegMoveConvertor implements
         if (srcChoice instanceof SrcNxOfInPortCase) {
             return NiciraMatchCodecs.NXM_OF_IN_PORT_CODEC.getHeaderWithoutHasMask().toLong();
         }
+        if (srcChoice instanceof SrcNxOfMplsLabelCase) {
+            return NiciraMatchCodecs.OXM_OF_MPLS_LABEL.getHeaderWithoutHasMask().toLong();
+        }
         if (srcChoice instanceof SrcNxTunIpv4DstCase) {
             return NiciraMatchCodecs.TUN_IPV4_DST_CODEC.getHeaderWithoutHasMask().toLong();
         }
index 3bb70190461f5cd6c6b10554ee87ef92071afafc..3966262105b1194a24af6e2240440f0f68196a38 100644 (file)
@@ -53,6 +53,11 @@ module openflowplugin-extension-nicira-action {
             type empty;
         }
     }
+    grouping oxm-of-mpls-label-grouping {
+        leaf of-mpls-label {
+            type empty;
+        }
+    }
     grouping nxm-of-arp-op-grouping {
         leaf of-arp-op {
             type empty;
@@ -177,6 +182,9 @@ module openflowplugin-extension-nicira-action {
             case dst-nx-tun-id-case {
                 uses nxm-nx-tun-id-grouping;
             }
+            case dst-of-mpls-label-case {
+                 uses oxm-of-mpls-label-grouping;
+            }
             case dst-nx-arp-sha-case {
                 uses nxm-nx-arp-sha-grouping;
             }
@@ -260,6 +268,9 @@ module openflowplugin-extension-nicira-action {
             case src-nx-tun-id-case {
                 uses nxm-nx-tun-id-grouping;
             }
+            case src-nx-of-mpls-label-case {
+                uses oxm-of-mpls-label-grouping;
+            }
             case src-nx-arp-sha-case {
                 uses nxm-nx-arp-sha-grouping;
             }
index a7137ee117846cd19491be95de0a74d650ae1754..f3d86ab6a111a0518de1ae3c525ec5e039e87896 100644 (file)
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
 
index 82c7d6338a4c87d5869211e30fafa5967073026a..056750f6288b4a4d4b8990b27976871a6659fef0 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.openflowplugin</groupId>
     <artifactId>openflowplugin-extension-parent</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
     <relativePath>../</relativePath>
   </parent>
   <artifactId>test-extension</artifactId>
index fb1e7c64c3a4163bde94eeaea0216132c6fc8d78..3e6bd5565a136abe667678a682ee32cc1baa4726 100644 (file)
@@ -5,26 +5,26 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>features-parent</artifactId>
-        <version>1.7.2-SNAPSHOT</version>
+        <version>1.7.3-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
     <groupId>org.opendaylight.openflowplugin</groupId>
     <artifactId>features-openflowplugin-he</artifactId>
     <packaging>jar</packaging>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
 
     <properties>
-        <yangtools.version>1.0.2-SNAPSHOT</yangtools.version>
-        <config.version>0.5.2-SNAPSHOT</config.version>
-        <mdsal.version>1.4.2-SNAPSHOT</mdsal.version>
-        <openflowjava.version>0.8.2-SNAPSHOT</openflowjava.version>
-        <openflowplugin.version>0.3.2-SNAPSHOT</openflowplugin.version>
-        <dlux.version>0.4.2-SNAPSHOT</dlux.version>
-        <lldp.version>0.11.2-SNAPSHOT</lldp.version>
+        <yangtools.version>1.0.3-SNAPSHOT</yangtools.version>
+        <config.version>0.5.3-SNAPSHOT</config.version>
+        <mdsal.version>1.4.3-SNAPSHOT</mdsal.version>
+        <openflowjava.version>0.8.3-SNAPSHOT</openflowjava.version>
+        <openflowplugin.version>0.3.3-SNAPSHOT</openflowplugin.version>
+        <dlux.version>0.4.3-SNAPSHOT</dlux.version>
+        <lldp.version>0.11.3-SNAPSHOT</lldp.version>
         <config.configfile.directory>etc/opendaylight/karaf</config.configfile.directory>
-        <restconf.version>1.4.2-SNAPSHOT</restconf.version>
-        <mdsal.model.version>0.9.2-SNAPSHOT</mdsal.model.version>
+        <restconf.version>1.4.3-SNAPSHOT</restconf.version>
+        <mdsal.model.version>0.9.3-SNAPSHOT</mdsal.model.version>
     </properties>
 
     <dependencyManagement>
index 76ea5340c126a00fe1d6f535493f43d28f49a590..c155d0559b34aace0bbb978c0dbc93a358f85224 100644 (file)
@@ -5,26 +5,26 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>features-parent</artifactId>
-        <version>1.7.2-SNAPSHOT</version>
+        <version>1.7.3-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
     <groupId>org.opendaylight.openflowplugin</groupId>
     <artifactId>features-openflowplugin</artifactId>
     <packaging>jar</packaging>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
 
     <properties>
-        <yangtools.version>1.0.2-SNAPSHOT</yangtools.version>
-        <config.version>0.5.2-SNAPSHOT</config.version>
-        <mdsal.version>1.4.2-SNAPSHOT</mdsal.version>
-        <openflowjava.version>0.8.2-SNAPSHOT</openflowjava.version>
-        <openflowplugin.version>0.3.2-SNAPSHOT</openflowplugin.version>
-        <dlux.version>0.4.2-SNAPSHOT</dlux.version>
-        <lldp.version>0.11.2-SNAPSHOT</lldp.version>
+        <yangtools.version>1.0.3-SNAPSHOT</yangtools.version>
+        <config.version>0.5.3-SNAPSHOT</config.version>
+        <mdsal.version>1.4.3-SNAPSHOT</mdsal.version>
+        <openflowjava.version>0.8.3-SNAPSHOT</openflowjava.version>
+        <openflowplugin.version>0.3.3-SNAPSHOT</openflowplugin.version>
+        <dlux.version>0.4.3-SNAPSHOT</dlux.version>
+        <lldp.version>0.11.3-SNAPSHOT</lldp.version>
         <config.configfile.directory>etc/opendaylight/karaf</config.configfile.directory>
-        <restconf.version>1.4.2-SNAPSHOT</restconf.version>
-        <mdsal.model.version>0.9.2-SNAPSHOT</mdsal.model.version>
+        <restconf.version>1.4.3-SNAPSHOT</restconf.version>
+        <mdsal.model.version>0.9.3-SNAPSHOT</mdsal.model.version>
     </properties>
 
     <dependencyManagement>
index 6bf5bd55f17dc6ed42b694fda0c1999554b340c7..bea5aa72a3132791e700c5ba1a47ea0102c6c5fb 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.opendaylight.openflowplugin.model</groupId>
     <artifactId>model-parent</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
   </parent>
   <artifactId>model-flow-base</artifactId>
   <packaging>bundle</packaging>
index c7d6c6f5b1d88713d6d9b6b46ba2a46bfc46bf2c..97c6e71ac82c61a2e0300db6224954210817bdd6 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.opendaylight.openflowplugin.model</groupId>
     <artifactId>model-parent</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
   </parent>
   <artifactId>model-flow-service</artifactId>
   <packaging>bundle</packaging>
index 5f92263ab926b648642c990b197b3d240ed45363..94e3333c5bc6e584014856e301e15d60a1b20e3d 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.opendaylight.openflowplugin.model</groupId>
     <artifactId>model-parent</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
   </parent>
   <artifactId>model-flow-statistics</artifactId>
   <packaging>bundle</packaging>
index 1dcacce5617c9259740b649a1b7ddb59ea9098a3..cba057e48c9c02ec72f99f25850009116a487599 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.opendaylight.openflowplugin</groupId>
     <artifactId>openflowplugin-parent</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
     <relativePath>../parent</relativePath>
   </parent>
   <groupId>org.opendaylight.openflowplugin.model</groupId>
index a6d4849f0c3144f9e8fc3929e8a1db54e1d29a98..84c314219440d4af701d771a5c73e1f9fc6a3f10 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
 
index 4f86d5bdbd9881be4e13b7a7cdf021984ccd0ffe..cc23c97307eba1d6443532f8c661cba83d62820b 100644 (file)
@@ -6,7 +6,7 @@
     <parent>
       <groupId>org.opendaylight.openflowplugin</groupId>
       <artifactId>openflowplugin-parent</artifactId>
-      <version>0.3.2-SNAPSHOT</version>
+      <version>0.3.3-SNAPSHOT</version>
       <relativePath>../parent</relativePath>
     </parent>
 
index 85f227ab993aa2446201018ee980991e84364930..af80f42db48862ada9e63e11086df9bbc7066469 100644 (file)
@@ -6,7 +6,7 @@
     <parent>
       <groupId>org.opendaylight.openflowplugin</groupId>
       <artifactId>openflowplugin-parent</artifactId>
-      <version>0.3.2-SNAPSHOT</version>
+      <version>0.3.3-SNAPSHOT</version>
       <relativePath>../parent</relativePath>
     </parent>
 
index 8b69a3a3bcf8a2de1ba833d917bea58ed8b4c2aa..ffbde466a3b159ab21b3ced2f8b1c50aebe8f493 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
 
index 66f83c585061b797ff70748eefa867cacc4246de..57cdacf7d4b5e02b01d75ef7b6fe1be1cf754d32 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
       <groupId>org.opendaylight.openflowplugin</groupId>
       <artifactId>openflowplugin-parent</artifactId>
-      <version>0.3.2-SNAPSHOT</version>
+      <version>0.3.3-SNAPSHOT</version>
       <relativePath>../parent</relativePath>
     </parent>
 
index 27ba0833db7b21a1c2701bbecc43ba2befc624f1..51a7e0c9ee82da2a3bc2453ffd241033a9b3a8e8 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
 
index 257c5187a64544bbdf7125ae7f26a2a7b29b0d8f..01f7178e2f3cb656f92dd08ec4d3e0c55ab64a0d 100644 (file)
@@ -168,7 +168,7 @@ public class DeviceFlowRegistryImpl implements DeviceFlowRegistry {
                     flowDescriptor.getTableKey().getId(), flowDescriptor.getFlowId().getValue(), flowRegistryKey.hashCode());
           flowRegistry.put(flowRegistryKey, flowDescriptor);
         } catch (IllegalArgumentException ex) {
-          LOG.error("Flow with flowId {} already exists in table {}", flowDescriptor.getFlowId().getValue(),
+          LOG.warn("Flow with flowId {} already exists in table {}", flowDescriptor.getFlowId().getValue(),
                     flowDescriptor.getTableKey().getId());
           final FlowId newFlowId = createAlienFlowId(flowDescriptor.getTableKey().getId());
           final FlowDescriptor newFlowDescriptor = FlowDescriptorFactory.
index ac14caeca660dacbe414901f4de94299e120a457..3893b9f391ef6ccef71bff37be4aa56fbd742a1a 100644 (file)
@@ -13,7 +13,6 @@ import com.google.common.base.Optional;
 import com.google.common.collect.Iterables;
 import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureFallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -21,7 +20,6 @@ import java.text.SimpleDateFormat;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
-import java.util.Objects;
 import javax.annotation.Nullable;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -32,7 +30,6 @@ import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceRegistry;
 import org.opendaylight.openflowplugin.api.openflow.device.TxFacade;
 import org.opendaylight.openflowplugin.api.openflow.registry.flow.DeviceFlowRegistry;
-import org.opendaylight.openflowplugin.api.openflow.registry.flow.FlowDescriptor;
 import org.opendaylight.openflowplugin.api.openflow.registry.flow.FlowRegistryKey;
 import org.opendaylight.openflowplugin.api.openflow.registry.group.DeviceGroupRegistry;
 import org.opendaylight.openflowplugin.api.openflow.registry.meter.DeviceMeterRegistry;
@@ -115,7 +112,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Utils for gatherig statistics
+ * Utils for gathering statistics.
  */
 public final class StatisticsGatheringUtils {
 
@@ -129,40 +126,54 @@ public final class StatisticsGatheringUtils {
     }
 
     //TODO: Flow-,Group- and Meter- registry should be not in device context, consider move it in separate class
-    static ListenableFuture<Boolean> gatherStatistics(final StatisticsGatherer statisticsGatheringService,
-                                                      final DeviceInfo deviceInfo,
-                                                      final MultipartType type,
-                                                      final TxFacade txFacade,
-                                                      final DeviceRegistry registry,
-                                                      final Boolean initial,
-                                                      final SinglePurposeMultipartReplyTranslator multipartReplyTranslator) {
+    static ListenableFuture<Boolean> gatherStatistics(
+                        final StatisticsGatherer statisticsGatheringService,
+                        final DeviceInfo deviceInfo,
+                        final MultipartType type,
+                        final TxFacade txFacade,
+                        final DeviceRegistry registry,
+                        final Boolean initial,
+                        final SinglePurposeMultipartReplyTranslator multipartReplyTranslator) {
         EventIdentifier wholeProcessEventIdentifier = null;
         if (MultipartType.OFPMPFLOW.equals(type)) {
             wholeProcessEventIdentifier = new EventIdentifier(type.toString(), deviceInfo.getNodeId().getValue());
             EventsTimeCounter.markStart(wholeProcessEventIdentifier);
         }
-        final EventIdentifier ofpQueuToRequestContextEventIdentifier = new EventIdentifier(QUEUE2_REQCTX + type.toString(), deviceInfo.getNodeId().toString());
+        final EventIdentifier ofpQueueToRequestContextEventIdentifier
+                = new EventIdentifier(QUEUE2_REQCTX + type.toString(), deviceInfo.getNodeId().toString());
         final ListenableFuture<RpcResult<List<MultipartReply>>> statisticsDataInFuture =
                 JdkFutureAdapters.listenInPoolThread(statisticsGatheringService.getStatisticsOfType(
-                        ofpQueuToRequestContextEventIdentifier, type));
-        return transformAndStoreStatisticsData(statisticsDataInFuture, deviceInfo, wholeProcessEventIdentifier, type, txFacade, registry, initial, multipartReplyTranslator);
+                        ofpQueueToRequestContextEventIdentifier, type));
+        return transformAndStoreStatisticsData(
+                statisticsDataInFuture,
+                deviceInfo,
+                wholeProcessEventIdentifier,
+                type,
+                txFacade,
+                registry,
+                initial,
+                multipartReplyTranslator);
     }
 
-    private static ListenableFuture<Boolean> transformAndStoreStatisticsData(final ListenableFuture<RpcResult<List<MultipartReply>>> statisticsDataInFuture,
-                                                                             final DeviceInfo deviceInfo,
-                                                                             final EventIdentifier eventIdentifier,
-                                                                             final MultipartType type,
-                                                                             final TxFacade txFacade,
-                                                                             final DeviceRegistry registry,
-                                                                             final boolean initial,
-                                                                             final SinglePurposeMultipartReplyTranslator multipartReplyTranslator) {
+    private static ListenableFuture<Boolean> transformAndStoreStatisticsData(
+                        final ListenableFuture<RpcResult<List<MultipartReply>>> statisticsDataInFuture,
+                        final DeviceInfo deviceInfo,
+                        final EventIdentifier eventIdentifier,
+                        final MultipartType type,
+                        final TxFacade txFacade,
+                        final DeviceRegistry registry,
+                        final boolean initial,
+                        final SinglePurposeMultipartReplyTranslator multipartReplyTranslator) {
         return Futures.transform(statisticsDataInFuture, new AsyncFunction<RpcResult<List<MultipartReply>>, Boolean>() {
             @Nullable
             @Override
             public ListenableFuture<Boolean> apply(final RpcResult<List<MultipartReply>> rpcResult) {
                 boolean isMultipartProcessed = Boolean.TRUE;
                 if (rpcResult.isSuccessful()) {
-                    LOG.debug("Stats reply successfully received for node {} of type {}", deviceInfo.getNodeId(), type);
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug("Stats reply successfully received for node {} of type {}",
+                                deviceInfo.getNodeId(), type);
+                    }
 
                     // TODO: in case the result value is null then multipart data probably got processed on the fly -
                     // TODO: this contract should by clearly stated and enforced - now simple true value is returned
@@ -179,8 +190,8 @@ public final class StatisticsGatheringUtils {
                                 multipartData = multipartDataList.get(0);
                                 allMultipartData = Iterables.concat(allMultipartData, multipartDataList);
                             }
-                        } catch (final Exception e) {
-                            LOG.warn("stats processing of type {} for node {} failed during transfomation step",
+                        } catch (final TransactionChainClosedException e) {
+                            LOG.warn("stats processing of type {} for node {} failed during transformation step",
                                     type, deviceInfo.getNodeId(), e);
                             return Futures.immediateFailedFuture(e);
                         }
@@ -188,42 +199,81 @@ public final class StatisticsGatheringUtils {
 
                         try {
                             if (multipartData instanceof GroupStatisticsUpdated) {
-                                processGroupStatistics((Iterable<GroupStatisticsUpdated>) allMultipartData, deviceInfo, txFacade);
+                                processGroupStatistics(
+                                        (Iterable<GroupStatisticsUpdated>) allMultipartData,
+                                        deviceInfo,
+                                        txFacade);
                             } else if (multipartData instanceof MeterStatisticsUpdated) {
-                                processMetersStatistics((Iterable<MeterStatisticsUpdated>) allMultipartData, deviceInfo, txFacade);
+                                processMetersStatistics(
+                                        (Iterable<MeterStatisticsUpdated>) allMultipartData,
+                                        deviceInfo,
+                                        txFacade);
                             } else if (multipartData instanceof NodeConnectorStatisticsUpdate) {
-                                processNodeConnectorStatistics((Iterable<NodeConnectorStatisticsUpdate>) allMultipartData, deviceInfo, txFacade);
+                                processNodeConnectorStatistics(
+                                        (Iterable<NodeConnectorStatisticsUpdate>) allMultipartData,
+                                        deviceInfo,
+                                        txFacade);
                             } else if (multipartData instanceof FlowTableStatisticsUpdate) {
-                                processFlowTableStatistics((Iterable<FlowTableStatisticsUpdate>) allMultipartData, deviceInfo, txFacade);
+                                processFlowTableStatistics(
+                                        (Iterable<FlowTableStatisticsUpdate>) allMultipartData,
+                                        deviceInfo,
+                                        txFacade);
                             } else if (multipartData instanceof QueueStatisticsUpdate) {
-                                processQueueStatistics((Iterable<QueueStatisticsUpdate>) allMultipartData, deviceInfo, txFacade);
+                                processQueueStatistics(
+                                        (Iterable<QueueStatisticsUpdate>) allMultipartData,
+                                        deviceInfo,
+                                        txFacade);
                             } else if (multipartData instanceof FlowsStatisticsUpdate) {
-                                /* FlowStat Processing is realized by NettyThread only by initPhase, otherwise it is realized
+                                /* FlowStat Processing is realized by NettyThread only by initPhase,
+                                 * otherwise it is realized
                                  * by MD-SAL thread */
-                                return processFlowStatistics((Iterable<FlowsStatisticsUpdate>) allMultipartData, deviceInfo, txFacade, registry.getDeviceFlowRegistry(), initial, eventIdentifier);
+                                return processFlowStatistics(
+                                        (Iterable<FlowsStatisticsUpdate>) allMultipartData,
+                                        deviceInfo,
+                                        txFacade,
+                                        registry.getDeviceFlowRegistry(),
+                                        initial,
+                                        eventIdentifier);
 
                             } else if (multipartData instanceof GroupDescStatsUpdated) {
-                                processGroupDescStats((Iterable<GroupDescStatsUpdated>) allMultipartData, deviceInfo, txFacade, registry.getDeviceGroupRegistry());
+                                processGroupDescStats(
+                                        (Iterable<GroupDescStatsUpdated>) allMultipartData,
+                                        deviceInfo,
+                                        txFacade,
+                                        registry.getDeviceGroupRegistry());
                             } else if (multipartData instanceof MeterConfigStatsUpdated) {
-                                processMeterConfigStatsUpdated((Iterable<MeterConfigStatsUpdated>) allMultipartData, deviceInfo, txFacade, registry.getDeviceMeterRegistry());
+                                processMeterConfigStatsUpdated(
+                                        (Iterable<MeterConfigStatsUpdated>) allMultipartData,
+                                        deviceInfo,
+                                        txFacade,
+                                        registry.getDeviceMeterRegistry());
                             } else {
                                 isMultipartProcessed = Boolean.FALSE;
                             }
-                        } catch (final Exception e) {
+                        } catch (final TransactionChainClosedException e) {
                             LOG.warn("stats processing of type {} for node {} failed during write-to-tx step",
                                     type, deviceInfo.getNodeId(), e);
                             return Futures.immediateFailedFuture(e);
                         }
 
-                        LOG.debug("Stats reply added to transaction for node {} of type {}", deviceInfo.getNodeId(), type);
+                        if (LOG.isDebugEnabled()) {
+                            LOG.debug("Stats reply added to transaction for node {} of type {}",
+                                    deviceInfo.getNodeId(), type);
+                        }
 
                         //TODO : implement experimenter
                     } else {
-                        LOG.debug("Stats reply was empty for node {} of type {}", deviceInfo.getNodeId(), type);
+                        if (LOG.isDebugEnabled()) {
+                            LOG.debug("Stats reply was empty for node {} of type {}",
+                                    deviceInfo.getNodeId(), type);
+                        }
                     }
 
                 } else {
-                    LOG.debug("Stats reply FAILED for node {} of type {}: {}", deviceInfo.getNodeId(), type, rpcResult.getErrors());
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug("Stats reply FAILED for node {} of type {}: {}",
+                                deviceInfo.getNodeId(), type, rpcResult.getErrors());
+                    }
                     isMultipartProcessed = Boolean.FALSE;
                 }
                 return Futures.immediateFuture(isMultipartProcessed);
@@ -234,19 +284,24 @@ public final class StatisticsGatheringUtils {
     private static void processMeterConfigStatsUpdated(final Iterable<MeterConfigStatsUpdated> data,
                                                        final DeviceInfo deviceInfo,
                                                        final TxFacade txFacade,
-                                                       final DeviceMeterRegistry meterRegistry) throws Exception {
+                                                       final DeviceMeterRegistry meterRegistry)
+            throws TransactionChainClosedException {
         final InstanceIdentifier<FlowCapableNode> fNodeIdent = assembleFlowCapableNodeInstanceIdentifier(deviceInfo);
         deleteAllKnownMeters(meterRegistry, fNodeIdent, txFacade);
         for (final MeterConfigStatsUpdated meterConfigStatsUpdated : data) {
             for (final MeterConfigStats meterConfigStats : meterConfigStatsUpdated.getMeterConfigStats()) {
                 final MeterId meterId = meterConfigStats.getMeterId();
-                final InstanceIdentifier<Meter> meterInstanceIdentifier = fNodeIdent.child(Meter.class, new MeterKey(meterId));
+                final InstanceIdentifier<Meter> meterInstanceIdentifier
+                        = fNodeIdent.child(Meter.class, new MeterKey(meterId));
 
                 final MeterBuilder meterBuilder = new MeterBuilder(meterConfigStats);
                 meterBuilder.setKey(new MeterKey(meterId));
                 meterBuilder.addAugmentation(NodeMeterStatistics.class, new NodeMeterStatisticsBuilder().build());
                 meterRegistry.store(meterId);
-                txFacade.writeToTransaction(LogicalDatastoreType.OPERATIONAL, meterInstanceIdentifier, meterBuilder.build());
+                txFacade.writeToTransaction(
+                        LogicalDatastoreType.OPERATIONAL,
+                        meterInstanceIdentifier,
+                        meterBuilder.build());
             }
         }
         txFacade.submitTransaction();
@@ -258,17 +313,14 @@ public final class StatisticsGatheringUtils {
                                                                    final DeviceFlowRegistry flowRegistry,
                                                                    final boolean initial,
                                                                    final EventIdentifier eventIdentifier) {
-        final ListenableFuture<Void> deleteFuture = initial ? Futures.immediateFuture(null) : deleteAllKnownFlows(deviceInfo,
+        final ListenableFuture<Void> deleteFuture
+                = initial ? Futures.immediateFuture(null) : deleteAllKnownFlows(deviceInfo,
                 flowRegistry, txFacade);
-        return Futures.transform(deleteFuture, new Function<Void, Boolean>() {
-
-            @Override
-            public Boolean apply(final Void input) {
-                writeFlowStatistics(data, deviceInfo, flowRegistry, txFacade);
-                txFacade.submitTransaction();
-                EventsTimeCounter.markEnd(eventIdentifier);
-                return Boolean.TRUE;
-            }
+        return Futures.transform(deleteFuture, (Function<Void, Boolean>) input -> {
+            writeFlowStatistics(data, deviceInfo, flowRegistry, txFacade);
+            txFacade.submitTransaction();
+            EventsTimeCounter.markEnd(eventIdentifier);
+            return Boolean.TRUE;
         });
     }
 
@@ -281,7 +333,9 @@ public final class StatisticsGatheringUtils {
             for (final FlowsStatisticsUpdate flowsStatistics : data) {
                 for (final FlowAndStatisticsMapList flowStat : flowsStatistics.getFlowAndStatisticsMapList()) {
                     final FlowBuilder flowBuilder = new FlowBuilder(flowStat);
-                    flowBuilder.addAugmentation(FlowStatisticsData.class, refineFlowStatisticsAugmentation(flowStat).build());
+                    flowBuilder.addAugmentation(
+                            FlowStatisticsData.class,
+                            refineFlowStatisticsAugmentation(flowStat).build());
 
                     final short tableId = flowStat.getTableId();
                     final FlowRegistryKey flowRegistryKey = FlowRegistryKeyFactory.create(flowBuilder.build());
@@ -290,21 +344,23 @@ public final class StatisticsGatheringUtils {
                     final FlowKey flowKey = new FlowKey(flowId);
                     flowBuilder.setKey(flowKey);
                     final TableKey tableKey = new TableKey(tableId);
-                    final InstanceIdentifier<Flow> flowIdent = fNodeIdent.child(Table.class, tableKey).child(Flow.class, flowKey);
+                    final InstanceIdentifier<Flow> flowIdent
+                            = fNodeIdent.child(Table.class, tableKey).child(Flow.class, flowKey);
                     txFacade.writeToTransaction(LogicalDatastoreType.OPERATIONAL, flowIdent, flowBuilder.build());
                 }
             }
-        } catch (Exception e) {
+        } catch (TransactionChainClosedException e) {
             LOG.warn("Not able to write to transaction: {}", e.getMessage());
         }
     }
 
     /**
-     * Method extracts flow statistics out of flowAndStatistics model
+     * Method extracts flow statistics out of flowAndStatistics model.
      *
-     * @param flowAndStats
+     * @param flowAndStats flow statistics map list
      */
-    private static FlowStatisticsDataBuilder refineFlowStatisticsAugmentation(final FlowAndStatisticsMapList flowAndStats) {
+    private static FlowStatisticsDataBuilder refineFlowStatisticsAugmentation(
+            final FlowAndStatisticsMapList flowAndStats) {
         final FlowStatisticsBuilder flowStatisticsBuilder = new FlowStatisticsBuilder(flowAndStats);
         final FlowStatisticsDataBuilder flowStatisticsDataBld = new FlowStatisticsDataBuilder();
         flowStatisticsDataBld.setFlowStatistics(flowStatisticsBuilder.build());
@@ -314,43 +370,40 @@ public final class StatisticsGatheringUtils {
     public static ListenableFuture<Void> deleteAllKnownFlows(final DeviceInfo deviceInfo,
                                                              final DeviceFlowRegistry registry,
                                                              final TxFacade txFacade) {
-        final InstanceIdentifier<FlowCapableNode> flowCapableNodePath = assembleFlowCapableNodeInstanceIdentifier(deviceInfo);
+        final InstanceIdentifier<FlowCapableNode> flowCapableNodePath
+                = assembleFlowCapableNodeInstanceIdentifier(deviceInfo);
         final ReadOnlyTransaction readTx = txFacade.getReadTransaction();
         final CheckedFuture<Optional<FlowCapableNode>, ReadFailedException> flowCapableNodeFuture = readTx.read(
                 LogicalDatastoreType.OPERATIONAL, flowCapableNodePath);
 
         /* we wish to close readTx for fallBack */
-        Futures.withFallback(flowCapableNodeFuture, new FutureFallback<Optional<FlowCapableNode>>() {
-
-            @Override
-            public ListenableFuture<Optional<FlowCapableNode>> create(final Throwable t) throws Exception {
-                readTx.close();
-                return Futures.immediateFailedFuture(t);
-            }
+        Futures.withFallback(flowCapableNodeFuture, t -> {
+            readTx.close();
+            return Futures.immediateFailedFuture(t);
         });
         /*
          * we have to read actual tables with all information before we set empty Flow list, merge is expensive and
          * not applicable for lists
          */
-        return Futures.transform(flowCapableNodeFuture, new AsyncFunction<Optional<FlowCapableNode>, Void>() {
-
-            @Override
-            public ListenableFuture<Void> apply(final Optional<FlowCapableNode> flowCapNodeOpt) throws Exception {
+        return Futures.transform(
+                flowCapableNodeFuture, (AsyncFunction<Optional<FlowCapableNode>, Void>) flowCapNodeOpt -> {
                 if (flowCapNodeOpt.isPresent()) {
                     for (final Table tableData : flowCapNodeOpt.get().getTable()) {
                         final Table table = new TableBuilder(tableData).setFlow(Collections.<Flow>emptyList()).build();
-                        final InstanceIdentifier<Table> iiToTable = flowCapableNodePath.child(Table.class, tableData.getKey());
+                        final InstanceIdentifier<Table> iiToTable
+                                = flowCapableNodePath.child(Table.class, tableData.getKey());
                         txFacade.writeToTransaction(LogicalDatastoreType.OPERATIONAL, iiToTable, table);
                     }
                 }
                 readTx.close();
                 return Futures.immediateFuture(null);
-            }
-
-        });
+            });
     }
 
-    private static void processQueueStatistics(final Iterable<QueueStatisticsUpdate> data, final DeviceInfo deviceInfo, final TxFacade txFacade) throws Exception {
+    private static void processQueueStatistics(
+            final Iterable<QueueStatisticsUpdate> data,
+            final DeviceInfo deviceInfo,
+            final TxFacade txFacade) throws TransactionChainClosedException {
         // TODO: clean all queues of all node-connectors before writing up-to-date stats
         final InstanceIdentifier<Node> nodeIdent = deviceInfo.getNodeInstanceIdentifier();
         for (final QueueStatisticsUpdate queueStatisticsUpdate : data) {
@@ -369,7 +422,8 @@ public final class StatisticsGatheringUtils {
                     final QueueBuilder queueBuilder = new QueueBuilder()
                             .setKey(qKey)
                             .setQueueId(queueStat.getQueueId())
-                            // node-connector-id is already contained in parent node and the port-id here is of incompatible format
+                            // node-connector-id is already contained in parent node
+                            // and the port-id here is of incompatible format
                             .addAugmentation(FlowCapableNodeConnectorQueueStatisticsData.class, statBuild.build());
                     txFacade.writeToTransaction(LogicalDatastoreType.OPERATIONAL, queueIdent, queueBuilder.build());
                 }
@@ -378,12 +432,16 @@ public final class StatisticsGatheringUtils {
         txFacade.submitTransaction();
     }
 
-    private static void processFlowTableStatistics(final Iterable<FlowTableStatisticsUpdate> data, final DeviceInfo deviceInfo, final TxFacade txFacade) throws Exception {
+    private static void processFlowTableStatistics(
+            final Iterable<FlowTableStatisticsUpdate> data,
+            final DeviceInfo deviceInfo,
+            final TxFacade txFacade) throws TransactionChainClosedException {
         final InstanceIdentifier<FlowCapableNode> fNodeIdent = assembleFlowCapableNodeInstanceIdentifier(deviceInfo);
         for (final FlowTableStatisticsUpdate flowTableStatisticsUpdate : data) {
 
             for (final FlowTableAndStatisticsMap tableStat : flowTableStatisticsUpdate.getFlowTableAndStatisticsMap()) {
-                final InstanceIdentifier<FlowTableStatistics> tStatIdent = fNodeIdent.child(Table.class, new TableKey(tableStat.getTableId().getValue()))
+                final InstanceIdentifier<FlowTableStatistics> tStatIdent
+                        = fNodeIdent.child(Table.class, new TableKey(tableStat.getTableId().getValue()))
                         .augmentation(FlowTableStatisticsData.class).child(FlowTableStatistics.class);
                 final FlowTableStatistics stats = new FlowTableStatisticsBuilder(tableStat).build();
                 txFacade.writeToTransaction(LogicalDatastoreType.OPERATIONAL, tStatIdent, stats);
@@ -392,12 +450,17 @@ public final class StatisticsGatheringUtils {
         txFacade.submitTransaction();
     }
 
-    private static void processNodeConnectorStatistics(final Iterable<NodeConnectorStatisticsUpdate> data, final DeviceInfo deviceInfo, final TxFacade txFacade) throws Exception {
+    private static void processNodeConnectorStatistics(
+            final Iterable<NodeConnectorStatisticsUpdate> data,
+            final DeviceInfo deviceInfo,
+            final TxFacade txFacade) throws TransactionChainClosedException {
         final InstanceIdentifier<Node> nodeIdent = deviceInfo.getNodeInstanceIdentifier();
         for (final NodeConnectorStatisticsUpdate nodeConnectorStatisticsUpdate : data) {
-            for (final NodeConnectorStatisticsAndPortNumberMap nConnectPort : nodeConnectorStatisticsUpdate.getNodeConnectorStatisticsAndPortNumberMap()) {
-                final FlowCapableNodeConnectorStatistics stats = new FlowCapableNodeConnectorStatisticsBuilder(nConnectPort).build();
-                final NodeConnectorKey key = new NodeConnectorKey(nConnectPort.getNodeConnectorId());
+            for (final NodeConnectorStatisticsAndPortNumberMap nodeConnectPort :
+                    nodeConnectorStatisticsUpdate.getNodeConnectorStatisticsAndPortNumberMap()) {
+                final FlowCapableNodeConnectorStatistics stats
+                        = new FlowCapableNodeConnectorStatisticsBuilder(nodeConnectPort).build();
+                final NodeConnectorKey key = new NodeConnectorKey(nodeConnectPort.getNodeConnectorId());
                 final InstanceIdentifier<NodeConnector> nodeConnectorIdent = nodeIdent.child(NodeConnector.class, key);
                 final InstanceIdentifier<FlowCapableNodeConnectorStatisticsData> nodeConnStatIdent = nodeConnectorIdent
                         .augmentation(FlowCapableNodeConnectorStatisticsData.class);
@@ -411,12 +474,12 @@ public final class StatisticsGatheringUtils {
 
     private static void processMetersStatistics(final Iterable<MeterStatisticsUpdated> data,
                                                 final DeviceInfo deviceInfo,
-                                                final TxFacade txFacade) throws Exception {
+                                                final TxFacade txFacade) throws TransactionChainClosedException {
         final InstanceIdentifier<FlowCapableNode> fNodeIdent = assembleFlowCapableNodeInstanceIdentifier(deviceInfo);
         for (final MeterStatisticsUpdated meterStatisticsUpdated : data) {
-            for (final MeterStats mStat : meterStatisticsUpdated.getMeterStats()) {
-                final MeterStatistics stats = new MeterStatisticsBuilder(mStat).build();
-                final MeterId meterId = mStat.getMeterId();
+            for (final MeterStats meterStats : meterStatisticsUpdated.getMeterStats()) {
+                final MeterStatistics stats = new MeterStatisticsBuilder(meterStats).build();
+                final MeterId meterId = meterStats.getMeterId();
                 final InstanceIdentifier<Meter> meterIdent = fNodeIdent.child(Meter.class, new MeterKey(meterId));
                 final InstanceIdentifier<NodeMeterStatistics> nodeMeterStatIdent = meterIdent
                         .augmentation(NodeMeterStatistics.class);
@@ -427,15 +490,22 @@ public final class StatisticsGatheringUtils {
         txFacade.submitTransaction();
     }
 
-    private static void deleteAllKnownMeters(final DeviceMeterRegistry meterRegistry, final InstanceIdentifier<FlowCapableNode> fNodeIdent, final TxFacade txFacade) throws Exception {
+    private static void deleteAllKnownMeters(
+            final DeviceMeterRegistry meterRegistry,
+            final InstanceIdentifier<FlowCapableNode> flowNodeIdent,
+            final TxFacade txFacade) throws TransactionChainClosedException {
         for (final MeterId meterId : meterRegistry.getAllMeterIds()) {
-            final InstanceIdentifier<Meter> meterIdent = fNodeIdent.child(Meter.class, new MeterKey(meterId));
+            final InstanceIdentifier<Meter> meterIdent = flowNodeIdent.child(Meter.class, new MeterKey(meterId));
             txFacade.addDeleteToTxChain(LogicalDatastoreType.OPERATIONAL, meterIdent);
         }
         meterRegistry.removeMarked();
     }
 
-    private static void processGroupDescStats(final Iterable<GroupDescStatsUpdated> data, final DeviceInfo deviceInfo, final TxFacade txFacade, final DeviceGroupRegistry groupRegistry) throws Exception {
+    private static void processGroupDescStats(
+            final Iterable<GroupDescStatsUpdated> data,
+            final DeviceInfo deviceInfo,
+            final TxFacade txFacade,
+            final DeviceGroupRegistry groupRegistry) throws TransactionChainClosedException {
         final InstanceIdentifier<FlowCapableNode> fNodeIdent = assembleFlowCapableNodeInstanceIdentifier(deviceInfo);
         deleteAllKnownGroups(txFacade, fNodeIdent, groupRegistry);
 
@@ -456,20 +526,27 @@ public final class StatisticsGatheringUtils {
         txFacade.submitTransaction();
     }
 
-    private static void deleteAllKnownGroups(final TxFacade txFacade, final InstanceIdentifier<FlowCapableNode> fNodeIdent, final DeviceGroupRegistry groupRegistry) throws Exception {
+    private static void deleteAllKnownGroups(
+            final TxFacade txFacade,
+            final InstanceIdentifier<FlowCapableNode> flowNodeIdent,
+            final DeviceGroupRegistry groupRegistry) throws TransactionChainClosedException {
         for (final GroupId groupId : groupRegistry.getAllGroupIds()) {
-            final InstanceIdentifier<Group> groupIdent = fNodeIdent.child(Group.class, new GroupKey(groupId));
+            final InstanceIdentifier<Group> groupIdent = flowNodeIdent.child(Group.class, new GroupKey(groupId));
             txFacade.addDeleteToTxChain(LogicalDatastoreType.OPERATIONAL, groupIdent);
         }
         groupRegistry.removeMarked();
     }
 
-    private static void processGroupStatistics(final Iterable<GroupStatisticsUpdated> data, final DeviceInfo deviceInfo, final TxFacade txFacade) throws Exception {
+    private static void processGroupStatistics(
+            final Iterable<GroupStatisticsUpdated> data,
+            final DeviceInfo deviceInfo,
+            final TxFacade txFacade) throws TransactionChainClosedException {
         final InstanceIdentifier<FlowCapableNode> fNodeIdent = assembleFlowCapableNodeInstanceIdentifier(deviceInfo);
         for (final GroupStatisticsUpdated groupStatistics : data) {
             for (final GroupStats groupStats : groupStatistics.getGroupStats()) {
 
-                final InstanceIdentifier<Group> groupIdent = fNodeIdent.child(Group.class, new GroupKey(groupStats.getGroupId()));
+                final InstanceIdentifier<Group> groupIdent
+                        = fNodeIdent.child(Group.class, new GroupKey(groupStats.getGroupId()));
                 final InstanceIdentifier<NodeGroupStatistics> nGroupStatIdent = groupIdent
                         .augmentation(NodeGroupStatistics.class);
 
@@ -481,12 +558,13 @@ public final class StatisticsGatheringUtils {
         txFacade.submitTransaction();
     }
 
-    private static InstanceIdentifier<FlowCapableNode> assembleFlowCapableNodeInstanceIdentifier(final DeviceInfo deviceInfo) {
+    private static InstanceIdentifier<FlowCapableNode> assembleFlowCapableNodeInstanceIdentifier(
+            final DeviceInfo deviceInfo) {
         return deviceInfo.getNodeInstanceIdentifier().augmentation(FlowCapableNode.class);
     }
 
     /**
-     * Writes snapshot gathering start timestamp + cleans end mark
+     * Writes snapshot gathering start timestamp + cleans end mark.
      *
      * @param deviceContext txManager + node path keeper
      */
@@ -512,7 +590,7 @@ public final class StatisticsGatheringUtils {
     }
 
     /**
-     * Writes snapshot gathering end timestamp + outcome
+     * Writes snapshot gathering end timestamp + outcome.
      *
      * @param deviceContext txManager + node path keeper
      * @param succeeded     outcome of currently finished gathering
index e6d11dae1126f73fd7bc725ea531ee72e6451fbc..607adc0627f987e3e48bf13263afb612886915a5 100644 (file)
@@ -48,7 +48,6 @@ import org.opendaylight.openflowplugin.api.openflow.registry.group.DeviceGroupRe
 import org.opendaylight.openflowplugin.api.openflow.registry.meter.DeviceMeterRegistry;
 import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.EventIdentifier;
 import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.StatisticsGatherer;
-import org.opendaylight.openflowplugin.impl.registry.flow.FlowRegistryKeyFactory;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
@@ -249,7 +248,8 @@ public class StatisticsGatheringUtilsTest {
         fireAndCheck(type, statsData);
 
         final InstanceIdentifier<GroupStatistics> groupPath = dummyNodePath.augmentation(FlowCapableNode.class)
-                .child(Group.class, new GroupKey(new org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId(groupIdValue)))
+                .child(Group.class, new GroupKey(
+                        new org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId(groupIdValue)))
                 .augmentation(NodeGroupStatistics.class)
                 .child(GroupStatistics.class);
         verify(txFacade).writeToTransaction(Matchers.eq(LogicalDatastoreType.OPERATIONAL),
@@ -277,10 +277,13 @@ public class StatisticsGatheringUtilsTest {
 
         fireAndCheck(type, statsData);
 
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId storedGroupId = new org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId(groupIdValue);
-        final KeyedInstanceIdentifier<Group, GroupKey> groupPath = dummyNodePath.augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(storedGroupId));
+        final org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId storedGroupId
+                = new org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId(groupIdValue);
+        final KeyedInstanceIdentifier<Group, GroupKey> groupPath
+                = dummyNodePath.augmentation(FlowCapableNode.class).child(Group.class, new GroupKey(storedGroupId));
 
-        verify(deviceContext, Mockito.never()).addDeleteToTxChain(Matchers.eq(LogicalDatastoreType.OPERATIONAL), Matchers.<InstanceIdentifier<?>> any());
+        verify(deviceContext, Mockito.never()).addDeleteToTxChain(
+                Matchers.eq(LogicalDatastoreType.OPERATIONAL), Matchers.<InstanceIdentifier<?>>any());
         verify(deviceGroupRegistry).removeMarked();
         verify(deviceGroupRegistry).store(storedGroupId);
         verify(txFacade).writeToTransaction(
@@ -314,7 +317,8 @@ public class StatisticsGatheringUtilsTest {
         fireAndCheck(type, statsData);
 
         final InstanceIdentifier<MeterStatistics> meterPath = dummyNodePath.augmentation(FlowCapableNode.class)
-                .child(Meter.class, new MeterKey(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(meterIdValue)))
+                .child(Meter.class, new MeterKey(
+                        new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(meterIdValue)))
                 .augmentation(NodeMeterStatistics.class)
                 .child(MeterStatistics.class);
         verify(txFacade).writeToTransaction(Matchers.eq(LogicalDatastoreType.OPERATIONAL),
@@ -338,7 +342,8 @@ public class StatisticsGatheringUtilsTest {
         fireAndCheck(type, statsData);
 
         final InstanceIdentifier<FlowCapableNodeConnectorStatistics> portPath = dummyNodePath
-                .child(NodeConnector.class, new NodeConnectorKey(new NodeConnectorId("openflow:" + DUMMY_NODE_ID_VALUE + ":11")))
+                .child(NodeConnector.class, new NodeConnectorKey(
+                        new NodeConnectorId("openflow:" + DUMMY_NODE_ID_VALUE + ":11")))
                 .augmentation(FlowCapableNodeConnectorStatisticsData.class)
                 .child(FlowCapableNodeConnectorStatistics.class);
         verify(txFacade).writeToTransaction(
@@ -402,7 +407,8 @@ public class StatisticsGatheringUtilsTest {
         fireAndCheck(type, statsData);
 
         final KeyedInstanceIdentifier<Queue, QueueKey> queuePath = dummyNodePath
-                .child(NodeConnector.class, new NodeConnectorKey(new NodeConnectorId("openflow:" + DUMMY_NODE_ID_VALUE + ":11")))
+                .child(NodeConnector.class, new NodeConnectorKey(
+                        new NodeConnectorId("openflow:" + DUMMY_NODE_ID_VALUE + ":11")))
                 .augmentation(FlowCapableNodeConnector.class)
                 .child(Queue.class, new QueueKey(new QueueId(queueIdValue)));
         verify(txFacade).writeToTransaction(
@@ -416,17 +422,20 @@ public class StatisticsGatheringUtilsTest {
         final short tableId = 0;
         final MultipartType type = MultipartType.OFPMPFLOW;
 
-        final InstanceIdentifier<FlowCapableNode> nodePath = deviceInfo.getNodeInstanceIdentifier().augmentation(FlowCapableNode.class);
+        final InstanceIdentifier<FlowCapableNode> nodePath
+                = deviceInfo.getNodeInstanceIdentifier().augmentation(FlowCapableNode.class);
         final TableBuilder tableDataBld = new TableBuilder();
         tableDataBld.setId(tableId);
         final FlowCapableNodeBuilder flowNodeBuilder = new FlowCapableNodeBuilder();
         flowNodeBuilder.setTable(Collections.singletonList(tableDataBld.build()));
         final Optional<FlowCapableNode> flowNodeOpt = Optional.of(flowNodeBuilder.build());
-        final CheckedFuture<Optional<FlowCapableNode>, ReadFailedException> flowNodeFuture = Futures.immediateCheckedFuture(flowNodeOpt);
+        final CheckedFuture<Optional<FlowCapableNode>, ReadFailedException> flowNodeFuture
+                = Futures.immediateCheckedFuture(flowNodeOpt);
         when(readTx.read(LogicalDatastoreType.OPERATIONAL, nodePath)).thenReturn(flowNodeFuture);
         when(flowDescriptor.getFlowId()).thenReturn(flowId);
 
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.MatchBuilder matchBld =
+        final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.MatchBuilder
+                matchBld =
                 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.MatchBuilder()
                         .setMatchEntry(Collections.<MatchEntry>emptyList());
         final FlowStatsBuilder flowStatsBld = new FlowStatsBuilder()
@@ -454,10 +463,12 @@ public class StatisticsGatheringUtilsTest {
                 .child(Table.class, new TableKey((short) 0));
         final KeyedInstanceIdentifier<Flow, FlowKey> flowPath =  tablePath.child(Flow.class, new FlowKey(flowId));
 
-        verify(deviceContext, Mockito.never()).addDeleteToTxChain(Matchers.eq(LogicalDatastoreType.OPERATIONAL), Matchers.<InstanceIdentifier<?>>any());
+        verify(deviceContext, Mockito.never()).addDeleteToTxChain(
+                Matchers.eq(LogicalDatastoreType.OPERATIONAL), Matchers.<InstanceIdentifier<?>>any());
 
         final InOrder inOrder = Mockito.inOrder(txFacade);
-        inOrder.verify(txFacade).writeToTransaction(Matchers.eq(LogicalDatastoreType.OPERATIONAL), Matchers.eq(tablePath), Matchers.any(Table.class));
+        inOrder.verify(txFacade).writeToTransaction(Matchers.eq(
+                LogicalDatastoreType.OPERATIONAL), Matchers.eq(tablePath), Matchers.any(Table.class));
     }
 
     @Test
@@ -472,7 +483,8 @@ public class StatisticsGatheringUtilsTest {
 
         final MultipartReplyMeterConfigBuilder mpReplyMeterConfigBld = new MultipartReplyMeterConfigBuilder();
         mpReplyMeterConfigBld.setMeterConfig(Lists.newArrayList(meterConfigBld.build()));
-        final MultipartReplyMeterConfigCaseBuilder mpReplyMeterConfigCaseBld = new MultipartReplyMeterConfigCaseBuilder();
+        final MultipartReplyMeterConfigCaseBuilder mpReplyMeterConfigCaseBld
+                = new MultipartReplyMeterConfigCaseBuilder();
         mpReplyMeterConfigCaseBld.setMultipartReplyMeterConfig(mpReplyMeterConfigBld.build());
 
         final MultipartReply meterConfigUpdated = assembleMPReplyMessage(type, mpReplyMeterConfigCaseBld.build());
@@ -484,12 +496,16 @@ public class StatisticsGatheringUtilsTest {
                 new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(meterIdValue);
         final KeyedInstanceIdentifier<Meter, MeterKey> meterPath = dummyNodePath.augmentation(FlowCapableNode.class)
                 .child(Meter.class, new MeterKey(meterId));
-        verify(deviceContext, Mockito.never()).addDeleteToTxChain(Matchers.eq(LogicalDatastoreType.OPERATIONAL), Matchers.<InstanceIdentifier<?>>any());
+        verify(deviceContext, Mockito.never()).addDeleteToTxChain(
+                Matchers.eq(LogicalDatastoreType.OPERATIONAL), Matchers.<InstanceIdentifier<?>>any());
         verify(deviceMeterRegistry).store(meterId);
-        verify(txFacade).writeToTransaction(Matchers.eq(LogicalDatastoreType.OPERATIONAL), Matchers.eq(meterPath), Matchers.any(Meter.class));
+        verify(txFacade).writeToTransaction(
+                Matchers.eq(LogicalDatastoreType.OPERATIONAL), Matchers.eq(meterPath), Matchers.any(Meter.class));
     }
 
-    private void fireAndCheck(final MultipartType type, final List<MultipartReply> statsData) throws InterruptedException, ExecutionException, TimeoutException {
+    private void fireAndCheck(
+            final MultipartType type,
+            final List<MultipartReply> statsData) throws InterruptedException, ExecutionException, TimeoutException {
         when(statisticsService.getStatisticsOfType(Matchers.any(EventIdentifier.class), Matchers.eq(type)))
                 .thenReturn(Futures.immediateFuture(RpcResultBuilder.success(statsData).build()));
 
@@ -501,11 +517,13 @@ public class StatisticsGatheringUtilsTest {
                 deviceContext,
                 false,
                 singlePurposeMultipartReplyTranslator);
-        Assert.assertTrue(gatherStatisticsResult.get(1, TimeUnit.SECONDS).booleanValue());
+        Assert.assertTrue(gatherStatisticsResult.get(1, TimeUnit.SECONDS));
         verify(txFacade).submitTransaction();
     }
 
-    private static MultipartReplyMessage assembleMPReplyMessage(final MultipartType type, final MultipartReplyBody mpReplyGroupCaseBld) {
+    private static MultipartReplyMessage assembleMPReplyMessage(
+            final MultipartType type,
+            final MultipartReplyBody mpReplyGroupCaseBld) {
         return new MultipartReplyMessageBuilder()
                 .setMultipartReplyBody(mpReplyGroupCaseBld)
                 .setType(type)
@@ -515,19 +533,22 @@ public class StatisticsGatheringUtilsTest {
     }
 
     private static BucketStats createBucketStat(final long byteCount, final long packetCount) {
-        return new BucketStatsBuilder().setByteCount(BigInteger.valueOf(byteCount)).setPacketCount(BigInteger.valueOf(packetCount)).build();
+        return new BucketStatsBuilder().setByteCount(
+                BigInteger.valueOf(byteCount)).setPacketCount(BigInteger.valueOf(packetCount)).build();
     }
 
     @Test
     public void testDeleteAllKnownFlows() throws Exception {
         final short tableId = 0;
-        final InstanceIdentifier<FlowCapableNode> nodePath = deviceInfo.getNodeInstanceIdentifier().augmentation(FlowCapableNode.class);
+        final InstanceIdentifier<FlowCapableNode> nodePath
+                = deviceInfo.getNodeInstanceIdentifier().augmentation(FlowCapableNode.class);
         final TableBuilder tableDataBld = new TableBuilder();
         tableDataBld.setId(tableId);
         final FlowCapableNodeBuilder flowNodeBuilder = new FlowCapableNodeBuilder();
         flowNodeBuilder.setTable(Collections.singletonList(tableDataBld.build()));
         final Optional<FlowCapableNode> flowNodeOpt = Optional.of(flowNodeBuilder.build());
-        final CheckedFuture<Optional<FlowCapableNode>, ReadFailedException> flowNodeFuture = Futures.immediateCheckedFuture(flowNodeOpt);
+        final CheckedFuture<Optional<FlowCapableNode>, ReadFailedException> flowNodeFuture
+                = Futures.immediateCheckedFuture(flowNodeOpt);
         when(readTx.read(LogicalDatastoreType.OPERATIONAL, nodePath)).thenReturn(flowNodeFuture);
         final KeyedInstanceIdentifier<Table, TableKey> tablePath = deviceInfo.getNodeInstanceIdentifier()
                 .augmentation(FlowCapableNode.class).child(Table.class, new TableKey(tableId));
index b222eb9b117c523bcf3707ed3ebcdd5d6829cfad..aa24a465755547b4438879ba4e14188faa5004ad 100644 (file)
@@ -3,7 +3,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
 
index bc53c091d1a859730238f91136c5244877da865a..0a17e286bec648554f7f065b9e370cf45c074b8d 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
 
index 709c72f719c17f667bf4bddf6b774e5915bc588d..ea8d4fe9990fd6c1bf01a42ce6fcc9fa45368f07 100644 (file)
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>1.7.2-SNAPSHOT</version>
+        <version>1.7.3-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.opendaylight.openflowplugin</groupId>
     <artifactId>openflowplugin-parent</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <scm>
 
     <properties>
         <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
-        <openflowjava.version>0.8.2-SNAPSHOT</openflowjava.version>
-        <openflowplugin.version>0.3.2-SNAPSHOT</openflowplugin.version>
-        <sal.api.version>0.11.2-SNAPSHOT</sal.api.version>
+        <openflowjava.version>0.8.3-SNAPSHOT</openflowjava.version>
+        <openflowplugin.version>0.3.3-SNAPSHOT</openflowplugin.version>
+        <sal.api.version>0.11.3-SNAPSHOT</sal.api.version>
         <jmxGeneratorPath>target/generated-sources/config</jmxGeneratorPath>
         <salGeneratorPath>target/generated-sources/sal</salGeneratorPath>
         <exi.nagasena.version>0000.0002.0053.0</exi.nagasena.version>
-        <controller.distribution.version>0.4.2-SNAPSHOT</controller.distribution.version>
+        <controller.distribution.version>0.4.3-SNAPSHOT</controller.distribution.version>
 
-        <config.version>0.5.2-SNAPSHOT</config.version>
-        <mdsal.version>1.4.2-SNAPSHOT</mdsal.version>
-        <mdsal.model.version>0.9.2-SNAPSHOT</mdsal.model.version>
-        <yangtools.version>1.0.2-SNAPSHOT</yangtools.version>
+        <config.version>0.5.3-SNAPSHOT</config.version>
+        <mdsal.version>1.4.3-SNAPSHOT</mdsal.version>
+        <mdsal.model.version>0.9.3-SNAPSHOT</mdsal.model.version>
+        <yangtools.version>1.0.3-SNAPSHOT</yangtools.version>
     </properties>
 
     <dependencyManagement>
@@ -65,7 +65,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>2.1.2-SNAPSHOT</version>
+                <version>2.1.3-SNAPSHOT</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
diff --git a/pom.xml b/pom.xml
index 4c5a73d6edd60f6ab29e3e6cb96e7e5c4ffa1f34..60e0cac838fba7c4940141e5591b62f47c00aa0f 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -4,13 +4,13 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>parent</relativePath>
     </parent>
 
     <groupId>org.opendaylight.openflowplugin</groupId>
     <artifactId>openflowplugin-aggregator</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
     <name>openflowplugin</name> <!-- Used by Sonar to set project name -->
     <packaging>pom</packaging>
 
index 05347658a317ac97e71cf37ff93a7383023ae238..63d8f323050e89ab51514582ce31787c35ad37c6 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../../parent</relativePath>
     </parent>
 
index 0f9230a60cfb61398e72af4f3d876c16db7d0ea3..3df1ab8cd350c7ac0145f77a88aa37caa6124e45 100644 (file)
@@ -4,12 +4,12 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../../parent</relativePath>
     </parent>
 
     <artifactId>sample-consumer</artifactId>
-    <version>0.3.2-SNAPSHOT</version>
+    <version>0.3.3-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <build>
index ebef70ef9b99d4dccc1255f415d6318b6aa21855..484581ee688dd2eff3a863f5c82f1c470099b010 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
     <artifactId>test-common</artifactId>
index 3a2c3fd24658b91ee14fab2b077bb50fefd162ee..9b3d54ecfc9fc1b3ec22aad98ce139fd4b3881e2 100644 (file)
@@ -3,7 +3,7 @@
     <parent>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>openflowplugin-parent</artifactId>
-        <version>0.3.2-SNAPSHOT</version>
+        <version>0.3.3-SNAPSHOT</version>
         <relativePath>../parent</relativePath>
     </parent>
     <artifactId>test-provider</artifactId>