removed need for getInterfaces call 49/29749/5
authorMatej Perina <matej.perina@pantheon.sk>
Tue, 24 Nov 2015 13:07:30 +0000 (14:07 +0100)
committerMartin Sunal <msunal@cisco.com>
Thu, 26 Nov 2015 08:34:06 +0000 (08:34 +0000)
Change-Id: I9b7f3b32f0fb4265981dfaee9e47cf6f13bae26a
Signed-off-by: Matej Perina <matej.perina@pantheon.sk>
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EpRendererAugmentation.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayAug.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayL3NatAug.java

index b77f4635e4cb1f41a91065b9b4e21baf3d3111d2..e389b1dd330a9a6c196a383b8b9345ea07af84b7 100644 (file)
@@ -8,6 +8,7 @@
 
 package org.opendaylight.groupbasedpolicy.endpoint;
 
+import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
@@ -101,28 +102,6 @@ public class EndpointRpcRegistry implements EndpointService, AutoCloseable {
         LOG.info("Unregistered {}", regImp.getClass().getName());
     }
 
-    public static Class<?> getAugmentationContextType(
-            final Augmentation<?> augmentation) {
-        if (augmentation == null) {
-            return null;
-        }
-        final Class<?>[] augmentationInterfaces = augmentation.getClass()
-                .getInterfaces();
-        if (augmentationInterfaces.length == 1) {
-            return augmentationInterfaces[0];
-        }
-        /*
-         * if here, then the way YANG tools generate augmentation code has
-         * changed, hence augmentation classes are not implemented by single
-         * interface anymore. This is very unlikely to happen, but if it did, we
-         * need to know about it in order to update this method.
-         */
-        LOG.error(
-                "YANG Generated Code has Changed -- augmentation object {} is NOT implemented by one interface anymore",
-                augmentation);
-        return null;
-    }
-
     /**
      * Constructor
      *
@@ -183,12 +162,10 @@ public class EndpointRpcRegistry implements EndpointService, AutoCloseable {
         for (Entry<String, EpRendererAugmentation> entry : registeredRenderers
                 .entrySet()) {
             try {
-                Augmentation<Endpoint> augmentation = entry.getValue()
-                        .buildEndpointAugmentation(input);
-                if (augmentation != null) {
-                    @SuppressWarnings("unchecked")
-                    Class<? extends Augmentation<Endpoint>> augmentationType = (Class<? extends Augmentation<Endpoint>>) getAugmentationContextType(augmentation);
-                    eb.addAugmentation(augmentationType, augmentation);
+                Map.Entry<Class<? extends Augmentation<Endpoint>>, Augmentation<Endpoint>> augmentationEntry =
+                        entry.getValue().buildEndpointAugmentation(input);
+                if (augmentationEntry != null) {
+                    eb.addAugmentation(augmentationEntry.getKey(), augmentationEntry.getValue());
                 }
             } catch (Exception e) {
                 LOG.warn("Endpoint Augmentation error while processing "
@@ -211,12 +188,10 @@ public class EndpointRpcRegistry implements EndpointService, AutoCloseable {
         for (Entry<String, EpRendererAugmentation> entry : registeredRenderers
                 .entrySet()) {
             try {
-                Augmentation<EndpointL3> augmentation = entry.getValue()
-                        .buildEndpointL3Augmentation(input);
-                if (augmentation != null) {
-                    @SuppressWarnings("unchecked")
-                    Class<? extends Augmentation<EndpointL3>> augmentationType = (Class<? extends Augmentation<EndpointL3>>) getAugmentationContextType(augmentation);
-                    eb.addAugmentation(augmentationType, augmentation);
+                Map.Entry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>> augmentationEntry =
+                        entry.getValue().buildEndpointL3Augmentation(input);
+                if (augmentationEntry != null) {
+                    eb.addAugmentation(augmentationEntry.getKey(), augmentationEntry.getValue());
                 }
             } catch (Exception e) {
                 LOG.warn("L3 endpoint Augmentation error while processing "
@@ -239,7 +214,11 @@ public class EndpointRpcRegistry implements EndpointService, AutoCloseable {
         for (Entry<String, EpRendererAugmentation> entry : registeredRenderers
                 .entrySet()) {
             try {
-                entry.getValue().buildL3PrefixEndpointAugmentation(eb, input);
+                Map.Entry<Class<? extends Augmentation<EndpointL3Prefix>>, Augmentation<EndpointL3Prefix>> augmentationEntry =
+                        entry.getValue().buildL3PrefixEndpointAugmentation(input);
+                if (augmentationEntry != null) {
+                    eb.addAugmentation(augmentationEntry.getKey(), augmentationEntry.getValue());
+                }
             } catch (Exception e) {
                 LOG.warn("L3 endpoint Augmentation error while processing "
                         + entry.getKey() + ". Reason: ", e);
index c76244e6bf8b43260cdb1f0c80331ebc15446e56..3fb26d1828539f992088cafae6d87d44deb47bb2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 Huawei Technologies and others.  All rights reserved.
+ * Copyright (c) 2015 Huawei Technologies 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,
@@ -7,20 +7,46 @@
  */
 package org.opendaylight.groupbasedpolicy.endpoint;
 
+import java.util.Map;
+
+import javax.annotation.Nullable;
+
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3PrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Prefix;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 
 public interface EpRendererAugmentation {
 
-    Augmentation<Endpoint> buildEndpointAugmentation(RegisterEndpointInput input);
+    /**
+     * Creates pair of Endpoint augmentation, specific for renderer and augmentation type (class
+     * name).
+     *
+     * @param input input data for Endpoint creation
+     * @return pair of augmentation type and augmentation
+     */
+    @Nullable Map.Entry<Class<? extends Augmentation<Endpoint>>, Augmentation<Endpoint>> buildEndpointAugmentation(
+            RegisterEndpointInput input);
 
-    Augmentation<EndpointL3> buildEndpointL3Augmentation(RegisterEndpointInput input);
+    /**
+     * Creates pair of EndpointL3 augmentation, specific for renderer and augmentation type (class
+     * name).
+     *
+     * @param input input data for EndpointL3 creation
+     * @return pair of augmentation type and augmentation
+     */
+    @Nullable Map.Entry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>> buildEndpointL3Augmentation(
+            RegisterEndpointInput input);
 
-    void buildL3PrefixEndpointAugmentation(EndpointL3PrefixBuilder eb,
+    /**
+     * Creates pair of EndpointL3Prefix augmentation, specific for renderer and augmentation type (class
+     * name).
+     *
+     * @param input input data for EndpointL3Prefix creation
+     * @return pair of augmentation type and augmentation
+     */
+    @Nullable Map.Entry<Class<? extends Augmentation<EndpointL3Prefix>>, Augmentation<EndpointL3Prefix>> buildL3PrefixEndpointAugmentation(
             RegisterL3PrefixEndpointInput input);
-
 }
index 3864e876b87a49812dbc8eee809d319c1586be16..042a6253e960bd3b8fe85dadd5910966262f7037 100644 (file)
@@ -8,7 +8,8 @@
 
 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint;
 
-
+import java.util.AbstractMap.SimpleImmutableEntry;
+import java.util.Map;
 import java.util.concurrent.ExecutionException;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -20,9 +21,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3PrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContext;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayL3Context;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayL3ContextBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
@@ -49,29 +52,33 @@ public class OfOverlayAug implements EpRendererAugmentation, AutoCloseable {
     }
 
     @Override
-    public Augmentation<Endpoint> buildEndpointAugmentation(RegisterEndpointInput input) {
+    public Map.Entry<Class<? extends Augmentation<Endpoint>>, Augmentation<Endpoint>> buildEndpointAugmentation(
+            RegisterEndpointInput input) {
         // In order to support both the port-name and the data-path information, allow
         // an EP to register without the augmentations, and resolve later.
         OfOverlayContextBuilder ictx = checkAugmentation(input);
         if (ictx != null) {
-            return ictx.build();
+            return new SimpleImmutableEntry<Class<? extends Augmentation<Endpoint>>, Augmentation<Endpoint>>(
+                    OfOverlayContext.class, ictx.build());
         }
         return null;
     }
 
     @Override
-    public Augmentation<EndpointL3> buildEndpointL3Augmentation(RegisterEndpointInput input) {
+    public Map.Entry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>> buildEndpointL3Augmentation(
+            RegisterEndpointInput input) {
         OfOverlayContextBuilder ictx = checkAugmentation(input);
         if (ictx != null) {
-            return new OfOverlayL3ContextBuilder(ictx.build()).build();
+            return new SimpleImmutableEntry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>>(
+                    OfOverlayL3Context.class, new OfOverlayL3ContextBuilder(ictx.build()).build());
         }
         return null;
     }
 
     @Override
-    public void buildL3PrefixEndpointAugmentation(EndpointL3PrefixBuilder eb, RegisterL3PrefixEndpointInput input) {
-        // TODO Auto-generated method stub
-
+    public Map.Entry<Class<? extends Augmentation<EndpointL3Prefix>>, Augmentation<EndpointL3Prefix>> buildL3PrefixEndpointAugmentation(
+            RegisterL3PrefixEndpointInput input) {
+        return null;
     }
 
     private OfOverlayContextBuilder checkAugmentation(RegisterEndpointInput input) {
@@ -85,10 +92,10 @@ public class OfOverlayAug implements EpRendererAugmentation, AutoCloseable {
             return ictxBuilder;
         }
 
-            /*
-             * In the case where they've provided just the port name, go see if
-             * we can find the NodeId and NodeConnectorId from inventory.
-             */
+        /*
+         * In the case where they've provided just the port name, go see if
+         * we can find the NodeId and NodeConnectorId from inventory.
+         */
         if (ictx.getPortName() != null) {
             NodeInfo augmentation = fetchAugmentation(ictx.getPortName().getValue());
             if (augmentation != null) {
@@ -106,9 +113,7 @@ public class OfOverlayAug implements EpRendererAugmentation, AutoCloseable {
 
             Optional<Nodes> result;
             try {
-                result = dataProvider.newReadOnlyTransaction()
-                        .read(LogicalDatastoreType.OPERATIONAL, nodesIid)
-                        .get();
+                result = dataProvider.newReadOnlyTransaction().read(LogicalDatastoreType.OPERATIONAL, nodesIid).get();
                 if (result.isPresent()) {
                     Nodes nodes = result.get();
                     for (Node node : nodes.getNode()) {
index f28513ac93c1637e2f9d8454d5778d931bf3b107..02475f64c7b4ad01d3843c055532bcea226f29b9 100644 (file)
@@ -8,13 +8,17 @@
 
 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint;
 
+import java.util.AbstractMap.SimpleImmutableEntry;
+import java.util.Map;
+
 import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
 import org.opendaylight.groupbasedpolicy.endpoint.EpRendererAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3PrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayL3Nat;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayL3NatBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayL3NatInput;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
@@ -26,23 +30,27 @@ public class OfOverlayL3NatAug implements EpRendererAugmentation, AutoCloseable
     }
 
     @Override
-    public Augmentation<Endpoint> buildEndpointAugmentation(RegisterEndpointInput input) {
+    public Map.Entry<Class<? extends Augmentation<Endpoint>>, Augmentation<Endpoint>> buildEndpointAugmentation(
+            RegisterEndpointInput input) {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
-    public Augmentation<EndpointL3> buildEndpointL3Augmentation(RegisterEndpointInput input) {
+    public Map.Entry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>> buildEndpointL3Augmentation(
+            RegisterEndpointInput input) {
         if (input.getAugmentation(OfOverlayL3NatInput.class) != null) {
-            return new OfOverlayL3NatBuilder(input.getAugmentation(OfOverlayL3NatInput.class)).build();
+            return new SimpleImmutableEntry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>>(
+                    OfOverlayL3Nat.class,
+                    new OfOverlayL3NatBuilder(input.getAugmentation(OfOverlayL3NatInput.class)).build());
         }
         return null;
     }
 
     @Override
-    public void buildL3PrefixEndpointAugmentation(EndpointL3PrefixBuilder eb, RegisterL3PrefixEndpointInput input) {
-        // TODO Auto-generated method stub
-
+    public Map.Entry<Class<? extends Augmentation<EndpointL3Prefix>>, Augmentation<EndpointL3Prefix>> buildL3PrefixEndpointAugmentation(
+            RegisterL3PrefixEndpointInput input) {
+        return null;
     }
 
     @Override