update deprecated transform and addCallback methods 86/60686/4
authorMichal Cmarada <mcmarada@cisco.com>
Tue, 8 Aug 2017 15:16:42 +0000 (17:16 +0200)
committerMichal Cmarada <mcmarada@cisco.com>
Tue, 8 Aug 2017 15:16:42 +0000 (17:16 +0200)
- transform and addCallback methods are deprecated,
replacement methods use Executor as param. To preserve
the same functionality we will use MoreExecutors#directExecutor.

Change-Id: Ia7f0b76c762e92124e62d7695924b4813269e873
Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
34 files changed:
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImpl.java
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/EndpointUtils.java
neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/OvsdbNodeListener.java
renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/IosXeRendererProviderImpl.java
renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManager.java
renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/PolicyManagerImpl.java
renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/sf/ActionDefinitionListener.java
renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/sf/ClassifierDefinitionListener.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OfWriter.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/PolicyManager.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/arp/ArpTasker.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ActionDefinitionListener.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ClassifierDefinitionListener.java
renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/VppRenderer.java
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/adapter/VppRpcServiceImpl.java
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManager.java
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/manager/VppNodeManager.java
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManager.java
sxp-integration/ip-sgt-distribution-service/src/main/java/org/opendaylight/groupbasedpolicy/ip/sgt/distribution/service/impl/IpSgtDistributionServiceImpl.java
sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/EPToSgtMapperImpl.java
sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/SxpMapperReactorImpl.java
sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/EPForwardingTemplateDaoImpl.java
sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/EPPolicyTemplateDaoFacadeImpl.java
sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/EPPolicyTemplateDaoImpl.java
sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/dao/MasterDatabaseBindingDaoImpl.java
sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/listen/EPForwardingTemplateListenerImpl.java
sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/listen/EPPolicyTemplateListenerImpl.java
sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/listen/MasterDatabaseBindingListenerImpl.java
sxp-integration/sxp-ep-provider/src/main/java/org/opendaylight/groupbasedpolicy/sxp/ep/provider/impl/util/EPTemplateUtil.java
sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/EPPolicyTemplateProviderIseImpl.java
sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/GbpIseConfigListenerImpl.java
sxp-integration/sxp-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/sxp_ise_adapter/impl/GbpIseSgtHarvesterImpl.java

index 38a78b5cebc81210f84d8548ba20d80dfc56c2e2..d8e05be52aa87a191eac0de9ca03cbae57101f43 100644 (file)
@@ -58,6 +58,7 @@ import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 
 public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseable {
 
@@ -65,13 +66,8 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab
     private final DataBroker dataProvider;
     private final EndpointAugmentorRegistryImpl epAugRegistry;
 
-    private static final Function<Void, RpcResult<Void>> TO_SUCCESS_RPC_RESULT = new Function<Void, RpcResult<Void>>() {
-
-        @Override
-        public RpcResult<Void> apply(Void input) {
-            return RpcResultBuilder.<Void>success().build();
-        }
-    };
+    private static final Function<Void, RpcResult<Void>> TO_SUCCESS_RPC_RESULT =
+        input -> RpcResultBuilder.<Void>success().build();
 
     public BaseEndpointServiceImpl(DataBroker dataProvider, EndpointAugmentorRegistryImpl epAugRegistry) {
         this.epAugRegistry = Preconditions.checkNotNull(epAugRegistry);
@@ -115,7 +111,7 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab
             addAddressEndpointToParents(t, endpoint);
         }
 
-        return Futures.transform(t.submit(), TO_SUCCESS_RPC_RESULT);
+        return Futures.transform(t.submit(), TO_SUCCESS_RPC_RESULT, MoreExecutors.directExecutor());
     }
 
     private void addContainmentEndpointToChilds(ReadWriteTransaction t, ContainmentEndpoint endpoint) {
@@ -265,7 +261,7 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab
         }
 
         ListenableFuture<Void> r = t.submit();
-        return Futures.transform(r, TO_SUCCESS_RPC_RESULT);
+        return Futures.transform(r, TO_SUCCESS_RPC_RESULT, MoreExecutors.directExecutor());
     }
 
     private void deleteAddressEndpointFromParents(ReadWriteTransaction t, AddressEndpoint endpoint) {
index c2e4662505d95a29e5b4d0cc16e46d594080601f..8c2351db271dae27bedd637ca6b3c0eaeeba61d3 100644 (file)
@@ -59,6 +59,7 @@ import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 
 /**
  * Endpoint registry provides a scalable store for accessing and updating
@@ -66,12 +67,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  */
 public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentationRegistry, AutoCloseable {
 
-    private static final Logger LOG = LoggerFactory.getLogger(EndpointRpcRegistry.class);
-
-    private final DataBroker dataProvider;
-
     final static ConcurrentMap<String, EpRendererAugmentation> registeredRenderers =
             new ConcurrentHashMap<String, EpRendererAugmentation>();
+    private static final Logger LOG = LoggerFactory.getLogger(EndpointRpcRegistry.class);
+    private final DataBroker dataProvider;
+    private Function<Void, RpcResult<Void>> futureTrans = input -> RpcResultBuilder.<Void>success().build();
 
     /**
      * This method registers a renderer for endpoint RPC API. This method
@@ -126,7 +126,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat
                 public void onSuccess(Void result) {
 
                 }
-            });
+            }, MoreExecutors.directExecutor());
         }
 
         // TODO Be alagalah - age out endpoint data and remove
@@ -234,7 +234,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat
             }
         }
         ListenableFuture<Void> r = t.submit();
-        return Futures.transform(r, futureTrans);
+        return Futures.transform(r, futureTrans, MoreExecutors.directExecutor());
     }
 
     @Override
@@ -272,7 +272,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat
         t.put(LogicalDatastoreType.OPERATIONAL, iid_l3prefix, epL3Prefix);
 
         ListenableFuture<Void> r = t.submit();
-        return Futures.transform(r, futureTrans);
+        return Futures.transform(r, futureTrans, MoreExecutors.directExecutor());
     }
 
     @Override
@@ -304,7 +304,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat
         }
 
         ListenableFuture<Void> r = t.submit();
-        return Futures.transform(r, futureTrans);
+        return Futures.transform(r, futureTrans, MoreExecutors.directExecutor());
     }
 
     @Override
@@ -323,7 +323,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat
         }
 
         ListenableFuture<Void> r = t.submit();
-        return Futures.transform(r, futureTrans);
+        return Futures.transform(r, futureTrans, MoreExecutors.directExecutor());
     }
 
     @Override
@@ -343,14 +343,6 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat
         }
 
         ListenableFuture<Void> r = t.submit();
-        return Futures.transform(r, futureTrans);
+        return Futures.transform(r, futureTrans, MoreExecutors.directExecutor());
     }
-
-    Function<Void, RpcResult<Void>> futureTrans = new Function<Void, RpcResult<Void>>() {
-
-        @Override
-        public RpcResult<Void> apply(Void input) {
-            return RpcResultBuilder.<Void>success().build();
-        }
-    };
 }
index f4bf7c76da76d71462e51649859c29ae26784bd1..a50497cbd15be9fe31569a430664b53ce7d724fa 100644 (file)
@@ -28,13 +28,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpo
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.parent.child.endpoints.parent.endpoint.choice.parent.containment.endpoint._case.ParentContainmentEndpoint;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.parent.child.endpoints.parent.endpoint.choice.parent.endpoint._case.ParentEndpoint;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ExternalImplicitGroup;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation;
 
-import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 
 public class EndpointUtils {
 
@@ -78,16 +77,9 @@ public class EndpointUtils {
             return false;
         }
         for (EndpointGroupId epgId : addrEp.getEndpointGroup()) {
-            results.add(Futures.transform(
-                    rTx.read(LogicalDatastoreType.CONFIGURATION,
-                            IidFactory.externalImplicitGroupIid(addrEp.getTenant(), epgId)),
-                    new Function<Optional<ExternalImplicitGroup>, Boolean>() {
-
-                        @Override
-                        public Boolean apply(Optional<ExternalImplicitGroup> input) {
-                            return input.isPresent();
-                        }
-                    }));
+            results.add(Futures.transform( rTx.read(LogicalDatastoreType.CONFIGURATION,
+                        IidFactory.externalImplicitGroupIid(addrEp.getTenant(), epgId)), Optional::isPresent,
+                MoreExecutors.directExecutor()));
         }
         try {
             List<Boolean> list = Futures.allAsList(results).get();
index 14f953c5d9b86c17a25734008fad2cfc6a00c5c9..18018fe1c03c77ea27d45669da52b7a1525f08dc 100644 (file)
@@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
@@ -126,7 +127,7 @@ public class OvsdbNodeListener extends DataTreeChangeHandler<Node> {
                         LOG.error("Failed to write bridge {}. Message: {}" + bridge.getNodeId().getValue(),
                                 t.getMessage());
                     }
-                });
+                }, MoreExecutors.directExecutor());
             }
         }
         OvsdbBridgeAugmentation ovsdbBridge = node.getAugmentation(OvsdbBridgeAugmentation.class);
index 1e19a8df0e75d4885848e896cb937f80ac9ce5ce..88cb85e75eb084500b308142aaefde1785cf1083 100644 (file)
@@ -13,8 +13,13 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.List;
 import java.util.Optional;
+
+import javax.annotation.Nonnull;
+
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -145,7 +150,7 @@ public class IosXeRendererProviderImpl implements BindingAwareProvider, AutoClos
         Futures.addCallback(future, new FutureCallback<Void>() {
 
             @Override
-            public void onFailure(Throwable throwable) {
+            public void onFailure(@Nonnull Throwable throwable) {
                 LOG.error("Could not register renderer {}: {}", renderer, throwable);
             }
 
@@ -153,6 +158,6 @@ public class IosXeRendererProviderImpl implements BindingAwareProvider, AutoClos
             public void onSuccess(Void result) {
                 LOG.debug("Renderer {} successfully registered.", renderer);
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 }
index 3602073807d06b8a345864e801c84b638c80b1f6..8eea628d4c85b279d694114fe09977b069d19004 100644 (file)
@@ -56,6 +56,7 @@ import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 
 public class NodeManager {
 
@@ -154,7 +155,7 @@ public class NodeManager {
             public void onFailure(@Nullable Throwable throwable) {
                 LOG.warn("Exception thrown when removing node... {}", throwable);
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     /**
@@ -194,7 +195,7 @@ public class NodeManager {
             public void onFailure(@Nullable Throwable throwable) {
                 LOG.warn("Exception thrown when resolving node... {}", throwable);
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     /**
index b1d6e3ccc6ebac7292ab4d9a7c99b3a343359fee..37acaa3021e479e32e75d6d3fdeb6385c4c4a114 100644 (file)
@@ -17,6 +17,8 @@ import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
@@ -93,7 +95,7 @@ public class PolicyManagerImpl implements PolicyManager {
                     }
                     return syncEndpoints(dataAfter, Create);
                 }
-            });
+            }, MoreExecutors.directExecutor());
         }
         return Futures.transformAsync(creationResult, new AsyncFunction<Optional<Status>, Boolean>() {
             @Override
@@ -104,9 +106,9 @@ public class PolicyManagerImpl implements PolicyManager {
                     public Boolean apply(@Nullable final Void input) {
                         return Boolean.TRUE;
                     }
-                });
+                }, MoreExecutors.directExecutor());
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     /**
@@ -225,7 +227,7 @@ public class PolicyManagerImpl implements PolicyManager {
 
                 return Optional.of(status);
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     private CheckedFuture<Void, TransactionCommitFailedException> reportPolicy(final long version,
index efc1c7a67e89003c0755cd6370eb2969387072f5..88efea7f7f88e3b1cd95a0a740821ead0a14be4a 100644 (file)
@@ -10,6 +10,8 @@ package org.opendaylight.groupbasedpolicy.renderer.iovisor.sf;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
+import javax.annotation.Nonnull;
+
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
@@ -32,6 +34,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
 
 public class ActionDefinitionListener extends DataTreeChangeHandler<ActionDefinition> {
 
@@ -40,8 +43,8 @@ public class ActionDefinitionListener extends DataTreeChangeHandler<ActionDefini
         .child(Renderer.class, new RendererKey(IovisorRenderer.RENDERER_NAME))
         .child(Capabilities.class)
         .build();
-    private static String PUT = "stored";
-    private static String DELETED = "removed";
+    private static final String PUT = "stored";
+    private static final String DELETED = "removed";
 
     public ActionDefinitionListener(DataBroker dataBroker) {
         super(dataBroker);
@@ -66,7 +69,7 @@ public class ActionDefinitionListener extends DataTreeChangeHandler<ActionDefini
             }
 
             @Override
-            public void onFailure(Throwable t) {
+            public void onFailure(@Nonnull Throwable t) {
                 LOG.error("Capability of renderer {} was NOT {}: {}", IovisorRenderer.RENDERER_NAME.getValue(),
                         putOrDeleted, supportedActionDefinitionKey.getActionDefinitionId().getValue(), t);
             }
@@ -90,7 +93,7 @@ public class ActionDefinitionListener extends DataTreeChangeHandler<ActionDefini
             WriteTransaction wTx = dataProvider.newWriteOnlyTransaction();
             wTx.delete(LogicalDatastoreType.OPERATIONAL,
                     CAPABILITIES_IID.child(SupportedActionDefinition.class, supportedActionDefinitionKey));
-            Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinitionKey, DELETED));
+            Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinitionKey, DELETED), MoreExecutors.directExecutor());
         }
     }
 
@@ -105,7 +108,7 @@ public class ActionDefinitionListener extends DataTreeChangeHandler<ActionDefini
             wTx.put(LogicalDatastoreType.OPERATIONAL,
                     CAPABILITIES_IID.child(SupportedActionDefinition.class, supportedActionDefinition.getKey()),
                     supportedActionDefinition, true);
-            Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinition.getKey(), PUT));
+            Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinition.getKey(), PUT), MoreExecutors.directExecutor());
         }
     }
 }
index b34652e6f937d715c4de8beabfe83a4176be8000..f92a591edd99917b557aed31072c73c5328a9c36 100755 (executable)
@@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
 
 public class ClassifierDefinitionListener extends DataTreeChangeHandler<ClassifierDefinition> {
 
@@ -97,7 +98,7 @@ public class ClassifierDefinitionListener extends DataTreeChangeHandler<Classifi
 
             wTx.delete(LogicalDatastoreType.OPERATIONAL,
                     CAPABILITIES_IID.child(SupportedClassifierDefinition.class, supportedClassifierDefinitionKey));
-            Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinitionKey, DELETED));
+            Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinitionKey, DELETED), MoreExecutors.directExecutor());
         }
     }
 
@@ -113,7 +114,7 @@ public class ClassifierDefinitionListener extends DataTreeChangeHandler<Classifi
             wTx.put(LogicalDatastoreType.OPERATIONAL,
                     CAPABILITIES_IID.child(SupportedClassifierDefinition.class, supportedClassifierDefinition.getKey()),
                     supportedClassifierDefinition, true);
-            Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinition.getKey(), PUT));
+            Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinition.getKey(), PUT), MoreExecutors.directExecutor());
         }
     }
 }
index 72fff6c0d9394924eff0f896c523532c834f9f75..4eb99dbfe96d4b0471fe5c3390b08b102aa462f4 100755 (executable)
@@ -30,6 +30,8 @@ import com.google.common.collect.Sets;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -289,7 +291,7 @@ public class OfWriter {
             public void onSuccess(Void result) {
                 LOG.debug("Flow table {} updated.", tableIid);
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     private void updateGroups(DataBroker dataBroker, final NodeId nodeId)
@@ -367,7 +369,7 @@ public class OfWriter {
             public void onSuccess(Void result) {
                 LOG.debug("Group table on node {} updated.", nodeId);
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
 }
index 5676ec0e71628dc42f8d8beb1e4524b31b61754f..c56cd793b9e16845fcfccacd08f27d1e25baef9f 100755 (executable)
@@ -71,6 +71,7 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 
 /**
  * Manage policies on switches by subscribing to updates from the
@@ -194,7 +195,7 @@ public class PolicyManager
                 scheduleUpdate();
                 return null;
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     /**
@@ -217,7 +218,7 @@ public class PolicyManager
             public ListenableFuture<Void> apply(List<Void> readyToSubmit) {
                 return rwTx.submit();
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     private List<Short> getTableIDs() {
@@ -244,7 +245,7 @@ public class PolicyManager
                         }
                         return null;
                     }
-                });
+                }, MoreExecutors.directExecutor());
     }
 
     // **************
index ccec078cccfb12966185bd06e0d6c2284c0e6567..09cfb44b786662ee6bf9ebf87d4964dc0a1383bb 100644 (file)
@@ -14,6 +14,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.Future;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -105,6 +106,7 @@ import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 
 public class ArpTasker implements PacketProcessingListener {
 
@@ -279,7 +281,6 @@ public class ArpTasker implements PacketProcessingListener {
                         if (!addFlowResult.isSuccessful()) {
                             LOG.warn("An ARP Reply to Controller flow was not created on node {} \nErrors: {}",
                                     node.getId().getValue(), addFlowResult.getErrors());
-                            continue;
                         }
                     }
                     LOG.debug("ARP Reply to Controller flows were created on node {}", node.getId().getValue());
@@ -288,17 +289,17 @@ public class ArpTasker implements PacketProcessingListener {
                                 senderIpAddress);
                         ListenableFuture<RpcResult<Void>> futureSendArpResult = arpSender.sendArp(senderAddress, tpa,
                                 extNcIidAndMac.getLeft());
-                        Futures.addCallback(futureSendArpResult, logResult(tpa, extNcIidAndMac.getLeft()));
+                        Futures.addCallback(futureSendArpResult, logResult(tpa, extNcIidAndMac.getLeft()), MoreExecutors.directExecutor());
                     }
                 }
 
                 @Override
-                public void onFailure(Throwable t) {
+                public void onFailure(@Nonnull Throwable t) {
                     LOG.error(
                             "Illegal state - Installation of ARP flows on node {} failed. Node can contain just some ARP flows.",
                             node.getId(), t);
                 }
-            });
+            }, MoreExecutors.directExecutor());
         }
     }
 
index 2040ed3f0c741eb6864b49090e423a2ab7156d94..4eee18f89c3fdd404287b61de2a9d176267ff247 100644 (file)
@@ -12,6 +12,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.util.Collection;
 
+import javax.annotation.Nonnull;
+
 import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
@@ -36,6 +38,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
 
 public class ActionDefinitionListener implements ClusteredDataTreeChangeListener<ActionDefinition>, AutoCloseable {
 
@@ -44,8 +47,8 @@ public class ActionDefinitionListener implements ClusteredDataTreeChangeListener
         .child(Renderer.class, new RendererKey(OFOverlayRenderer.RENDERER_NAME))
         .child(Capabilities.class)
         .build();
-    private static String PUT = "stored";
-    private static String DELETED = "removed";
+    private static final String PUT = "stored";
+    private static final String DELETED = "removed";
 
     private final DataBroker dataProvider;
     private final ListenerRegistration<ActionDefinitionListener> registration;
@@ -59,7 +62,7 @@ public class ActionDefinitionListener implements ClusteredDataTreeChangeListener
     }
 
     @Override
-    public void onDataTreeChanged(Collection<DataTreeModification<ActionDefinition>> changes) {
+    public void onDataTreeChanged(@Nonnull Collection<DataTreeModification<ActionDefinition>> changes) {
         for (DataTreeModification<ActionDefinition> change : changes) {
             DataObjectModification<ActionDefinition> rootNode = change.getRootNode();
 
@@ -75,7 +78,8 @@ public class ActionDefinitionListener implements ClusteredDataTreeChangeListener
                         wTx.put(LogicalDatastoreType.OPERATIONAL, CAPABILITIES_IID
                             .child(SupportedActionDefinition.class, supportedActionDefinition.getKey()),
                                 supportedActionDefinition, true);
-                        Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinition.getKey(), PUT));
+                        Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinition.getKey(), PUT), MoreExecutors
+                            .directExecutor());
                     }
                     break;
 
@@ -88,7 +92,7 @@ public class ActionDefinitionListener implements ClusteredDataTreeChangeListener
                         WriteTransaction wTx = dataProvider.newWriteOnlyTransaction();
                         wTx.delete(LogicalDatastoreType.OPERATIONAL,
                                 CAPABILITIES_IID.child(SupportedActionDefinition.class, supportedActionDefinitionKey));
-                        Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinitionKey, DELETED));
+                        Futures.addCallback(wTx.submit(), logDebugResult(supportedActionDefinitionKey, DELETED), MoreExecutors.directExecutor());
                     }
                     break;
             }
@@ -113,7 +117,7 @@ public class ActionDefinitionListener implements ClusteredDataTreeChangeListener
             }
 
             @Override
-            public void onFailure(Throwable t) {
+            public void onFailure(@Nonnull Throwable t) {
                 LOG.error("Capability of renderer {} was NOT {}: {}", OFOverlayRenderer.RENDERER_NAME.getValue(),
                         putOrDeleted, supportedActionDefinitionKey, t);
             }
index 7cb4da564e990173149cc7d0fd8d56e0211d4999..de086380df7b7751f2d8908d2322d2f4a91ea199 100755 (executable)
@@ -12,6 +12,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.util.Collection;
 
+import javax.annotation.Nonnull;
+
 import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
@@ -36,16 +38,18 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
 
 public class ClassifierDefinitionListener implements ClusteredDataTreeChangeListener<ClassifierDefinition>, AutoCloseable {
 
     private static final Logger LOG = LoggerFactory.getLogger(ClassifierDefinitionListener.class);
-    private static final InstanceIdentifier<Capabilities> RENDERER_CAPABILITIES_IID = InstanceIdentifier.builder(Renderers.class)
+    private static final InstanceIdentifier<Capabilities> RENDERER_CAPABILITIES_IID = InstanceIdentifier
+        .builder(Renderers.class)
         .child(Renderer.class, new RendererKey(OFOverlayRenderer.RENDERER_NAME))
         .child(Capabilities.class)
         .build();
-    private static String PUT = "stored";
-    private static String DELETED = "removed";
+    private static final String PUT = "stored";
+    private static final String DELETED = "removed";
 
     private final DataBroker dataProvider;
     private final ListenerRegistration<ClassifierDefinitionListener> registration;
@@ -61,7 +65,7 @@ public class ClassifierDefinitionListener implements ClusteredDataTreeChangeList
     }
 
     @Override
-    public void onDataTreeChanged(Collection<DataTreeModification<ClassifierDefinition>> changes) {
+    public void onDataTreeChanged(@Nonnull Collection<DataTreeModification<ClassifierDefinition>> changes) {
         for (DataTreeModification<ClassifierDefinition> change : changes) {
             DataObjectModification<ClassifierDefinition> rootNode = change.getRootNode();
 
@@ -77,7 +81,8 @@ public class ClassifierDefinitionListener implements ClusteredDataTreeChangeList
                         wTx.put(LogicalDatastoreType.OPERATIONAL, RENDERER_CAPABILITIES_IID
                             .child(SupportedClassifierDefinition.class, supportedClassifierDefinition.getKey()),
                                 supportedClassifierDefinition, true);
-                        Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinition.getKey(), PUT));
+                        Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinition.getKey(), PUT),
+                            MoreExecutors.directExecutor());
                     }
                     break;
 
@@ -90,11 +95,11 @@ public class ClassifierDefinitionListener implements ClusteredDataTreeChangeList
                         WriteTransaction wTx = dataProvider.newWriteOnlyTransaction();
                         wTx.delete(LogicalDatastoreType.OPERATIONAL, RENDERER_CAPABILITIES_IID
                             .child(SupportedClassifierDefinition.class, supportedClassifierDefinitionKey));
-                        Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinitionKey, DELETED));
+                        Futures.addCallback(wTx.submit(), logDebugResult(supportedClassifierDefinitionKey, DELETED),
+                            MoreExecutors.directExecutor());
                     }
                     break;
             }
-
         }
     }
 
@@ -119,7 +124,7 @@ public class ClassifierDefinitionListener implements ClusteredDataTreeChangeList
             }
 
             @Override
-            public void onFailure(Throwable t) {
+            public void onFailure(@Nonnull Throwable t) {
                 LOG.error("Capability of renderer {} was NOT {}: {}", OFOverlayRenderer.RENDERER_NAME.getValue(),
                         putOrDeleted, supportedClassifierDefinitionKey, t);
             }
index c6fbf448108b922da34321de1f9ce8fde3e5caba..5e4e995960f71bb65a743353d80b998624a3f128 100644 (file)
@@ -14,6 +14,8 @@ import java.util.List;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import com.google.common.util.concurrent.MoreExecutors;
+
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.MountPointService;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
@@ -195,7 +197,7 @@ public class VppRenderer implements AutoCloseable, BindingAwareProvider {
             public void onSuccess(Void result) {
                 LOG.debug("Renderer {} successfully registered.", renderer);
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     private void unregisterFromRendererManager() {
@@ -215,7 +217,7 @@ public class VppRenderer implements AutoCloseable, BindingAwareProvider {
             public void onSuccess(Void result) {
                 LOG.debug("Renderer {} successfully unregistered.", VppRenderer.NAME);
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     public MountedDataBrokerProvider getMountedDataBroker() {
index 757659e449ab602ba5bb85bd96b582b2661109ba..e529468e407edb32413812119ac622b33d263913 100644 (file)
@@ -45,6 +45,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_adapte
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425._interface.attributes.InterfaceTypeChoice;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425._interface.attributes._interface.type.choice.TapCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425._interface.attributes._interface.type.choice.VhostUserCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.bridge.domain.base.attributes.PhysicalLocationRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.VhostUserRole;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.VxlanVni;
@@ -113,7 +114,7 @@ public class VppRpcServiceImpl implements VppAdapterService, AutoCloseable {
                 futures.add(bridgeDomainManager.createVlanBridgeDomainOnVppNode(input.getId(), vlanId, nodeId));
             });
         }
-        return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult());
+        return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult(), MoreExecutors.directExecutor());
     }
 
     public Future<RpcResult<Void>> deleteVirtualBridgeDomainFromNodes(DeleteVirtualBridgeDomainFromNodesInput input) {
@@ -122,7 +123,7 @@ public class VppRpcServiceImpl implements VppAdapterService, AutoCloseable {
         input.getBridgeDomainNode().forEach(nodeId -> {
             futures.add(bridgeDomainManager.removeBridgeDomainFromVppNode(input.getBridgeDomainId(), nodeId));
         });
-        return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult());
+        return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult(), MoreExecutors.directExecutor());
     }
 
     public ListenableFuture<RpcResult<Void>> cloneVirtualBridgeDomainOnNodes(CloneVirtualBridgeDomainOnNodesInput input) {
@@ -175,9 +176,9 @@ public class VppRpcServiceImpl implements VppAdapterService, AutoCloseable {
                                                 input.getBridgeDomainId(), vlanId, nodeId));
                                     });
                         }
-                        return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult());
+                        return Futures.transformAsync(Futures.allAsList(futures), voidsToRpcResult(), MoreExecutors.directExecutor());
                     }
-                });
+                }, MoreExecutors.directExecutor());
     }
 
     public ListenableFuture<RpcResult<Void>> createInterfaceOnNode(CreateInterfaceOnNodeInput input) {
index dcab1de4d80541ff0971270da16dd63600a23db4..e0e7b42523e0a1c22789c600fa21d71d436cfa03 100644 (file)
@@ -68,6 +68,7 @@ import com.google.common.base.Strings;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.SetMultimap;
 import com.google.common.eventbus.Subscribe;
+import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -217,7 +218,7 @@ public class InterfaceManager implements AutoCloseable {
         if(!oldVppEndpoint.equals(newVppEndpoint)) {
             LOG.debug("Updating vpp endpoint, old EP: {} new EP: {}", oldVppEndpoint, newVppEndpoint);
             return Futures.transformAsync(vppEndpointDeleted(oldVppEndpoint),
-                    (AsyncFunction<Void, Void>) input -> vppEndpointCreated(newVppEndpoint));
+                input -> vppEndpointCreated(newVppEndpoint), MoreExecutors.directExecutor());
         }
         LOG.debug("Update skipped, provided before/after vpp endpoints are equal");
         return Futures.immediateFuture(null);
index 90362c5cd18eb78c9a08e2dbd8d1f84f2e5ace7f..c2bfe42b6013858f4cbd53b6a02fc7385a3ac2ac 100644 (file)
@@ -77,6 +77,7 @@ import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 
 public class VppNodeManager {
 
@@ -156,7 +157,7 @@ public class VppNodeManager {
             public void onFailure(@Nonnull Throwable t) {
                 LOG.warn("Node synchronization failed. Data before: {} after {}", dataBefore, dataAfter);
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     private boolean isControllerConfigNode(final Node dataAfter, final Node dataBefore) {
@@ -420,7 +421,7 @@ public class VppNodeManager {
                 java.util.Optional<PhysicalInterface> pubInt = rn.getAugmentation(VppInterfaceAugmentation.class)
                     .getPhysicalInterface()
                     .stream()
-                    .filter(phInt -> phInt.isExternal())
+                    .filter(PhysicalInterface::isExternal)
                     .findFirst();
                 if (pubInt.isPresent()) {
                     nodes.put(rn.getNodePath().firstKeyOf(Node.class).getNodeId(), pubInt.get().getInterfaceName());
index 10c126ae01d9c1727973c193e45d10cba0ffcb72..d653bc532e557dd5606185753341791843118798 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.groupbasedpolicy.renderer.vpp.policy;
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeoutException;
 
 import javax.annotation.Nonnull;
@@ -73,11 +72,11 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
 
 public class BridgeDomainManagerImpl implements BridgeDomainManager {
@@ -206,29 +205,26 @@ public class BridgeDomainManagerImpl implements BridgeDomainManager {
         CheckedFuture<Optional<GbpBridgeDomain>, ReadFailedException> futureTopology =
                 rTx.read(LogicalDatastoreType.CONFIGURATION, bridgeDomainConfigIid);
         rTx.close();
-        return Futures.transformAsync(futureTopology, new AsyncFunction<Optional<GbpBridgeDomain>, Void>() {
-
-            @Override
-            public ListenableFuture<Void> apply(@Nonnull Optional<GbpBridgeDomain> optBridgeDomainConf) throws Exception {
-                if (optBridgeDomainConf.isPresent() && optBridgeDomainConf.get().getPhysicalLocationRef() != null) {
-                    for (PhysicalLocationRef ref : optBridgeDomainConf.get().getPhysicalLocationRef()) {
-                        if (!ref.getNodeId().equals(vppNodeId)) {
-                            LOG.debug("Node {} is not referenced node, skipping", ref.getNodeId());
-                            continue;
-                        }
-                        if (ref.getInterface() != null && ref.getInterface().size() > 0) {
-                            NodeVbridgeVlanAugment vppNodeVlanAug = new NodeVbridgeVlanAugmentBuilder()
-                                    .setSuperInterface(ref.getInterface().get(0)).build();
-                            Node vppNode = createBasicVppNodeBuilder(vppNodeId)
-                                    .addAugmentation(NodeVbridgeVlanAugment.class, vppNodeVlanAug).build();
-                            return createBridgeDomainOnVppNode(bridgeDomainName, topologyAug, vppNode);
-                        }
+        return Futures.transformAsync(futureTopology, optBridgeDomainConf -> {
+            if (optBridgeDomainConf != null && optBridgeDomainConf.isPresent()
+                && optBridgeDomainConf.get().getPhysicalLocationRef() != null) {
+                for (PhysicalLocationRef ref : optBridgeDomainConf.get().getPhysicalLocationRef()) {
+                    if (!ref.getNodeId().equals(vppNodeId)) {
+                        LOG.debug("Node {} is not referenced node, skipping", ref.getNodeId());
+                        continue;
+                    }
+                    if (ref.getInterface() != null && ref.getInterface().size() > 0) {
+                        NodeVbridgeVlanAugment vppNodeVlanAug = new NodeVbridgeVlanAugmentBuilder()
+                                .setSuperInterface(ref.getInterface().get(0)).build();
+                        Node vppNode = createBasicVppNodeBuilder(vppNodeId)
+                                .addAugmentation(NodeVbridgeVlanAugment.class, vppNodeVlanAug).build();
+                        return createBridgeDomainOnVppNode(bridgeDomainName, topologyAug, vppNode);
                     }
                 }
-                return Futures.immediateFailedFuture(
-                        new Throwable("Failed to apply config for VLAN bridge domain " + bridgeDomainName));
             }
-        });
+            return Futures.immediateFailedFuture(
+                    new Throwable("Failed to apply config for VLAN bridge domain " + bridgeDomainName));
+        }, MoreExecutors.directExecutor());
     }
 
     /**
@@ -259,73 +255,68 @@ public class BridgeDomainManagerImpl implements BridgeDomainManager {
         final CheckedFuture<Optional<Topology>, ReadFailedException> optTopology =
                 rTx.read(LogicalDatastoreType.CONFIGURATION, topologyIid);
         rTx.close();
-        return Futures.transformAsync(optTopology, new AsyncFunction<Optional<Topology>, Void>() {
-            @Override
-            public ListenableFuture<Void> apply(@Nonnull final Optional<Topology> optTopology)
-                    throws InterruptedException, ExecutionException {
-                // Topology
-                final SettableFuture<Void> topologyFuture = SettableFuture.create();
-                if (!optTopology.isPresent()) {
-                    final WriteTransaction wTx = dataProvider.newWriteOnlyTransaction();
-                    final Topology topology = new TopologyBuilder().setKey(topologyKey)
-                            .setTopologyTypes(VBRIDGE_TOPOLOGY_TYPE)
-                            .addAugmentation(TopologyVbridgeAugment.class, vBridgeAug)
-                            .build();
-                    wTx.put(LogicalDatastoreType.CONFIGURATION, topologyIid, topology, true);
-                    Futures.addCallback(wTx.submit(), new FutureCallback<Void>() {
+        return Futures.transformAsync(optTopology, topologyOptional -> {
+            // Topology
+            Preconditions.checkNotNull(topologyOptional,
+                "TopologyOptional with topologyIiD: " + topologyIid + " must not be null when creating BD");
+            final SettableFuture<Void> topologyFuture = SettableFuture.create();
+            if (!topologyOptional.isPresent()) {
+                final WriteTransaction wTx = dataProvider.newWriteOnlyTransaction();
+                final Topology topology = new TopologyBuilder().setKey(topologyKey)
+                        .setTopologyTypes(VBRIDGE_TOPOLOGY_TYPE)
+                        .addAugmentation(TopologyVbridgeAugment.class, vBridgeAug)
+                        .build();
+                wTx.put(LogicalDatastoreType.CONFIGURATION, topologyIid, topology, true);
+                Futures.addCallback(wTx.submit(), new FutureCallback<Void>() {
 
-                        @Override
-                        public void onSuccess(@Nullable final Void result) {
-                            final InstanceIdentifier<BridgeDomain> bridgeDomainStateIid =
-                                    VppIidFactory.getBridgeDomainStateIid(new BridgeDomainKey(bridgeDomainName));
-                            LOG.debug("Adding a listener on bridge domain state", bridgeDomainName);
-                            final DataTreeIdentifier<BridgeDomain> bridgeDomainStateIidDTI = new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
-                                    bridgeDomainStateIid);
-                            new ListenableFutureSetter<>(dataProvider, topologyFuture, bridgeDomainStateIidDTI, ModificationType.WRITE);
-                        }
+                    @Override
+                    public void onSuccess(@Nullable final Void result) {
+                        final InstanceIdentifier<BridgeDomain> bridgeDomainStateIid =
+                                VppIidFactory.getBridgeDomainStateIid(new BridgeDomainKey(bridgeDomainName));
+                        LOG.debug("Adding a listener on bridge domain state", bridgeDomainName);
+                        final DataTreeIdentifier<BridgeDomain> bridgeDomainStateIidDTI = new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
+                                bridgeDomainStateIid);
+                        new ListenableFutureSetter<>(dataProvider, topologyFuture, bridgeDomainStateIidDTI, ModificationType.WRITE);
+                    }
 
-                        @Override
-                        public void onFailure(@Nonnull Throwable t) {
-                            LOG.warn("Request create topology for VBD was not stored to CONF DS. {}", topologyIid, t);
-                            topologyFuture.setException(new Exception("Cannot send request to VBD."));
-                        }
-                    });
-                } else {
-                    topologyFuture.set(null);
-                    LOG.info("Bridge domain {} already exists", optTopology.get().getTopologyId());
-                }
-                return Futures.transformAsync(topologyFuture, new AsyncFunction<Void, Void>() {
                     @Override
-                    public ListenableFuture<Void> apply(@Nonnull Void topologyInput) throws Exception {
-                        // Bridge member
-                        final SettableFuture<Void> futureBridgeMember = SettableFuture.create();
-                        final InstanceIdentifier<Node> nodeIid = VppIidFactory.getNodeIid(topologyKey, vppNode.getKey());
-                        LOG.debug("Adding node {} to bridge domain {}", vppNode.getKey(), topologyKey.getTopologyId());
-                        final WriteTransaction wTx = dataProvider.newWriteOnlyTransaction();
-                        wTx.put(LogicalDatastoreType.CONFIGURATION, nodeIid, vppNode);
-                        Futures.addCallback(wTx.submit(), new FutureCallback<Void>() {
+                    public void onFailure(@Nonnull Throwable t) {
+                        LOG.warn("Request create topology for VBD was not stored to CONF DS. {}", topologyIid, t);
+                        topologyFuture.setException(new Exception("Cannot send request to VBD."));
+                    }
+                }, MoreExecutors.directExecutor());
+            } else {
+                topologyFuture.set(null);
+                LOG.info("Bridge domain {} already exists", topologyOptional.get().getTopologyId());
+            }
+            return Futures.transformAsync(topologyFuture, topologyInput -> {
+                // Bridge member
+                final SettableFuture<Void> futureBridgeMember = SettableFuture.create();
+                final InstanceIdentifier<Node> nodeIid = VppIidFactory.getNodeIid(topologyKey, vppNode.getKey());
+                LOG.debug("Adding node {} to bridge domain {}", vppNode.getKey(), topologyKey.getTopologyId());
+                final WriteTransaction wTx = dataProvider.newWriteOnlyTransaction();
+                wTx.put(LogicalDatastoreType.CONFIGURATION, nodeIid, vppNode);
+                Futures.addCallback(wTx.submit(), new FutureCallback<Void>() {
 
-                            @Override
-                            public void onSuccess(@Nullable final Void _void) {
-                                final DataTreeIdentifier<BridgeMember> bridgeMemberIid =
-                                        new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
-                                                nodeIid.augmentation(NodeVbridgeAugment.class).child(BridgeMember.class));
-                                LOG.debug("Request create node in topology for VBD was stored to CONF DS. {}", nodeIid);
-                                new ListenableFutureSetter<>(dataProvider, futureBridgeMember, bridgeMemberIid,
-                                        ModificationType.WRITE);
-                            }
+                    @Override
+                    public void onSuccess(@Nullable final Void _void) {
+                        final DataTreeIdentifier<BridgeMember> bridgeMemberIid =
+                                new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
+                                        nodeIid.augmentation(NodeVbridgeAugment.class).child(BridgeMember.class));
+                        LOG.debug("Request create node in topology for VBD was stored to CONF DS. {}", nodeIid);
+                        new ListenableFutureSetter<>(dataProvider, futureBridgeMember, bridgeMemberIid,
+                                ModificationType.WRITE);
+                    }
 
-                            @Override
-                            public void onFailure(@Nonnull final Throwable t) {
-                                LOG.warn("Request create node in topology for VBD was not stored to CONF DS. {}", nodeIid, t);
-                                futureBridgeMember.setException(new Exception("Cannot send request to VBD."));
-                            }
-                        });
-                        return futureBridgeMember;
+                    @Override
+                    public void onFailure(@Nonnull final Throwable t) {
+                        LOG.warn("Request create node in topology for VBD was not stored to CONF DS. {}", nodeIid, t);
+                        futureBridgeMember.setException(new Exception("Cannot send request to VBD."));
                     }
-                });
-            }
-        });
+                }, MoreExecutors.directExecutor());
+                return futureBridgeMember;
+            }, MoreExecutors.directExecutor());
+        }, MoreExecutors.directExecutor());
     }
 
     @Override
@@ -364,7 +355,7 @@ public class BridgeDomainManagerImpl implements BridgeDomainManager {
                 LOG.warn("Request delete node in topology for VBD was not stored to CONF DS. {}", nodeIid, t);
                 future.setException(new Exception("Cannot send request to VBD."));
             }
-        });
+        }, MoreExecutors.directExecutor());
         return future;
     }
 }
index 396ba6617839d1cb2119d2c22116679c201e328b..7fa28fe02cab996bf2c10f6e4c98d94b50512a52 100644 (file)
@@ -51,7 +51,6 @@ import com.google.common.collect.Sets;
 import com.google.common.collect.Sets.SetView;
 import com.google.common.eventbus.Subscribe;
 
-
 public class VppRendererPolicyManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(VppRendererPolicyManager.class);
index 8a405d4f4a7836e5fd8f79e8387a4776fa82734b..885175dc3b717f9c1693661904ad4e8e1ff77f47 100644 (file)
@@ -14,6 +14,7 @@ import com.google.common.collect.Multimap;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
 import java.util.HashMap;
 import java.util.Map;
@@ -131,7 +132,7 @@ public class IpSgtDistributionServiceImpl implements AutoCloseable, IpSgtDistrib
 
             }
 
-        });
+        }, MoreExecutors.directExecutor());
         return future;
     }
 
@@ -219,7 +220,7 @@ public class IpSgtDistributionServiceImpl implements AutoCloseable, IpSgtDistrib
 
             }
 
-        });
+        }, MoreExecutors.directExecutor());
         return future;
     }
 
index 3ec8e5ecf26fad86bf51aea625b81a9196a325ea..c1134a8e0360104cf7a6f4176d2114f7d2292f10 100644 (file)
@@ -11,6 +11,8 @@ package org.opendaylight.groupbasedpolicy.sxp.ep.provider.impl;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.Collection;
 import java.util.HashSet;
 import javax.annotation.Nullable;
@@ -55,6 +57,7 @@ public class EPToSgtMapperImpl implements EPToSgtMapper {
     public ListenableFuture<Collection<Sgt>> findSgtForEP(final AddressEndpointWithLocation endpointWithLocation) {
         final EpPolicyTemplateValueKey rawKey = new EpPolicyTemplateValueKey(endpointWithLocation);
         final EpPolicyTemplateValueKey key = keyFactory.sortValueKeyLists(rawKey);
-        return Futures.transform(epPolicyTemplateReader.readBy(key), TRANSFORM_TEMPLATE_TO_SGT);
+        return Futures.transform(epPolicyTemplateReader.readBy(key), TRANSFORM_TEMPLATE_TO_SGT,
+            MoreExecutors.directExecutor());
     }
 }
index 71e6a5aeb669e677fb1ea7ed6c5616e79bf18fd7..3cfeddeba05910804eba546c6baa3dab8c24b4fe 100644 (file)
@@ -15,6 +15,8 @@ import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.Collections;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
@@ -101,7 +103,7 @@ public class SxpMapperReactorImpl implements SxpMapperReactor {
         final ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction();
         final CheckedFuture<Optional<AddressEndpoint>, ReadFailedException> read = rTx.read(
                 LogicalDatastoreType.OPERATIONAL, addressEndpointPath);
-        Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx));
+        Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx), MoreExecutors.directExecutor());
         return read;
     }
 
@@ -124,7 +126,7 @@ public class SxpMapperReactorImpl implements SxpMapperReactor {
                 }
                 return nextResult;
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     private boolean isSameEpg(RegisterEndpointInput epInput, AddressEndpoint input) {
index 245a3bb55c993614dc994942a1971560c7a19b0b..73b28bf3d2b30ebd44046eb9dfbb6da03966831f 100644 (file)
@@ -12,6 +12,8 @@ import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.List;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -56,13 +58,13 @@ public class EPForwardingTemplateDaoImpl implements DSAsyncDao<IpPrefix, Endpoin
             final CheckedFuture<Optional<SxpEpMapper>, ReadFailedException> read =
                     rTx.read(LogicalDatastoreType.CONFIGURATION, buildReadPath(key));
 
-            Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx));
+            Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx), MoreExecutors.directExecutor());
 
             readResult = Futures.transform(read, new Function<Optional<SxpEpMapper>, Optional<EndpointForwardingTemplateBySubnet>>() {
                 @Nullable
                 @Override
                 public Optional<EndpointForwardingTemplateBySubnet> apply(@Nullable final Optional<SxpEpMapper> input) {
-                    if (input.isPresent()) {
+                    if (input!=null && input.isPresent()) {
                         // clean cache
                         cachedDao.invalidateCache();
 
@@ -78,7 +80,7 @@ public class EPForwardingTemplateDaoImpl implements DSAsyncDao<IpPrefix, Endpoin
                         return Optional.absent();
                     }
                 }
-            });
+            }, MoreExecutors.directExecutor());
         }
         return readResult;
     }
index 6fdc0271ed373592803ff349cb6a88e87f18bd19..c414f5b9b60687952f45147d0fc6fa9130e2e1b4 100644 (file)
@@ -13,6 +13,8 @@ import com.google.common.base.Optional;
 import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.Collection;
 import java.util.Collections;
 import javax.annotation.Nonnull;
@@ -82,7 +84,7 @@ public class EPPolicyTemplateDaoFacadeImpl implements EPPolicyTemplateDaoFacade
                                 .orElse(Futures.immediateFuture(Optional.absent()))
                         );
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     private <T> ListenableFuture<Optional<T>> rewrapOptionalToGuavaOptional(final ListenableFuture<java.util.Optional<T>> templateFu) {
@@ -94,8 +96,8 @@ public class EPPolicyTemplateDaoFacadeImpl implements EPPolicyTemplateDaoFacade
                                 .map(origNonnullInput -> Optional.fromNullable(origNonnullInput.orElse(null)))
                                 .orElse(Optional.absent());
                     }
-                }
-        );
+                },
+            MoreExecutors.directExecutor());
     }
 
 
@@ -138,7 +140,8 @@ public class EPPolicyTemplateDaoFacadeImpl implements EPPolicyTemplateDaoFacade
                 .child(EndpointPolicyTemplateBySgt.class, new EndpointPolicyTemplateBySgtKey(sgt));
         wTx.put(LogicalDatastoreType.CONFIGURATION, epPolicyTemplatePath, template, true);
 
-        return Futures.transform(wTx.submit(), createStoreOutcomeHandlerToCollection(template));
+        return Futures.transform(wTx.submit(), createStoreOutcomeHandlerToCollection(template),
+            MoreExecutors.directExecutor());
     }
 
     private EndpointPolicyTemplateBySgt buildEpPolicyTemplate(final EpPolicyTemplateValueKey templateLookupKey, final Sgt sgt) {
index 3e028c9ad04c5665b39316d57cd849a9ccf86c47..af787ffbde49ca24854aeb5ffcd8d3581bd516e7 100644 (file)
@@ -15,6 +15,8 @@ import com.google.common.base.Predicates;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import javax.annotation.Nonnull;
@@ -66,7 +68,7 @@ public class EPPolicyTemplateDaoImpl implements DSAsyncDao<Sgt, EndpointPolicyTe
             final CheckedFuture<Optional<EndpointPolicyTemplateBySgt>, ReadFailedException> read =
                     rTx.read(LogicalDatastoreType.CONFIGURATION, buildReadPath(key));
 
-            Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx));
+            Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx), MoreExecutors.directExecutor());
 
             return Futures.transform(read, new Function<Optional<EndpointPolicyTemplateBySgt>, Optional<EndpointPolicyTemplateBySgt>>() {
                 @Nullable
@@ -77,7 +79,7 @@ public class EPPolicyTemplateDaoImpl implements DSAsyncDao<Sgt, EndpointPolicyTe
                     }
                     return input;
                 }
-            });
+            }, MoreExecutors.directExecutor());
         }
     }
 
index 01a7320d95c0cae3fec7732f62681917edb0572d..52a7a93ebbfe13f0da9d19ddcd445f689d97f6b2 100644 (file)
@@ -12,10 +12,13 @@ import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -48,7 +51,8 @@ public class MasterDatabaseBindingDaoImpl implements DSAsyncDao<IpPrefix, Master
         ReadableAsyncByKey<Sgt, MasterDatabaseBinding> {
 
     private static final Logger LOG = LoggerFactory.getLogger(MasterDatabaseBindingDaoImpl.class);
-    private static final ListenableFuture<Optional<MasterDatabaseBinding>> READ_FUTURE_ABSENT = Futures.immediateFuture(Optional.absent());
+    private static final ListenableFuture<Optional<MasterDatabaseBinding>>
+        READ_FUTURE_ABSENT = Futures.immediateFuture(Optional.absent());
 
     private final DataBroker dataBroker;
     private final SimpleCachedDao<IpPrefix, MasterDatabaseBinding> cachedDao;
@@ -75,7 +79,7 @@ public class MasterDatabaseBindingDaoImpl implements DSAsyncDao<IpPrefix, Master
                 public Optional<MasterDatabaseBinding> apply(@Nullable final Void input) {
                     return lookup(cachedDao, key);
                 }
-            });
+            }, MoreExecutors.directExecutor());
         }
     }
 
@@ -84,7 +88,7 @@ public class MasterDatabaseBindingDaoImpl implements DSAsyncDao<IpPrefix, Master
         final CheckedFuture<Optional<Topology>, ReadFailedException> read =
                 rTx.read(LogicalDatastoreType.CONFIGURATION, buildReadPath(null));
 
-        Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx));
+        Futures.addCallback(read, SxpListenerUtil.createTxCloseCallback(rTx), MoreExecutors.directExecutor());
 
         return Futures.transform(read, new Function<Optional<Topology>, Void>() {
             @Nullable
@@ -130,7 +134,7 @@ public class MasterDatabaseBindingDaoImpl implements DSAsyncDao<IpPrefix, Master
                 }
                 return null;
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     private InstanceIdentifier<Topology> buildReadPath(final Sgt key) {
@@ -163,6 +167,6 @@ public class MasterDatabaseBindingDaoImpl implements DSAsyncDao<IpPrefix, Master
                 }
                 return foundGroups;
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 }
index 4b14fae869d5e8f9a7cd6894c94e00536de0af36..b1bb439afd3890dbabf1db01172f44267090dbc0 100644 (file)
@@ -13,6 +13,8 @@ import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.Collection;
 import javax.annotation.Nonnull;
 import org.apache.commons.lang3.tuple.Pair;
@@ -99,13 +101,14 @@ public class EPForwardingTemplateListenerImpl implements EPTemplateListener<Endp
 
         // find all available epForwardingTemplates and pair those to sxpMasterDBBinding
         final ListenableFuture<Optional<Pair<MasterDatabaseBinding, EndpointPolicyTemplateBySgt>>> searchResult =
-                Futures.transformAsync(sxpMasterDbItemRead, createReadAndPairTemplateToBindingFunction(epForwardingTemplate));
+                Futures.transformAsync(sxpMasterDbItemRead, createReadAndPairTemplateToBindingFunction(epForwardingTemplate), MoreExecutors
+                    .directExecutor());
 
         // invoke sxpMapperReactor.process for every valid combination of sxpMasterDBBinding, epPolicyTemplate, epForwardingTemplate
         final ListenableFuture<RpcResult<Void>> rpcResult =
-                Futures.transformAsync(searchResult, createProcessAllFunction(epForwardingTemplate));
+                Futures.transformAsync(searchResult, createProcessAllFunction(epForwardingTemplate), MoreExecutors.directExecutor());
 
-        Futures.addCallback(rpcResult, ANY_RPC_FUTURE_CALLBACK);
+        Futures.addCallback(rpcResult, ANY_RPC_FUTURE_CALLBACK, MoreExecutors.directExecutor());
     }
 
     private AsyncFunction<Optional<Pair<MasterDatabaseBinding, EndpointPolicyTemplateBySgt>>, RpcResult<Void>>
index 31ad41b256436804d62e4f222cf418b0371bcf99..5924d98784ecc01ec631ea7c74f99be9df88271d 100644 (file)
@@ -13,6 +13,8 @@ import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -105,76 +107,74 @@ public class EPPolicyTemplateListenerImpl implements EPTemplateListener<Endpoint
                 masterDBBindingDao.readBy(epPolicyTemplate.getSgt());
 
         // find all available epForwardingTemplates and pair those to sxpMasterDBBinding
-        final ListenableFuture<List<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>> epForwardingTemplatesRead =
-                Futures.transformAsync(sxpMasterDbItemsRead, createReadAndPairTemplateToBindingFunction(epPolicyTemplate));
+        final ListenableFuture<List<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>>
+            epForwardingTemplatesRead = Futures.transformAsync(sxpMasterDbItemsRead,
+            createReadAndPairTemplateToBindingFunction(epPolicyTemplate), MoreExecutors.directExecutor());
 
         // invoke sxpMapperReactor.process for every valid combination of sxpMasterDBBinding, epPolicyTemplate, epForwardingTemplate
         final ListenableFuture<List<RpcResult<Void>>> rpcResult =
-                Futures.transformAsync(epForwardingTemplatesRead, createProcessAllFunction(epPolicyTemplate));
+            Futures.transformAsync(epForwardingTemplatesRead, createProcessAllFunction(epPolicyTemplate),
+                MoreExecutors.directExecutor());
 
-        Futures.addCallback(rpcResult, RPC_RESULT_FUTURE_CALLBACK);
+        Futures.addCallback(rpcResult, RPC_RESULT_FUTURE_CALLBACK, MoreExecutors.directExecutor());
     }
 
     private AsyncFunction<List<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>, List<RpcResult<Void>>>
     createProcessAllFunction(final EndpointPolicyTemplateBySgt epPolicyTemplate) {
-        return new AsyncFunction<List<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>, List<RpcResult<Void>>>() {
-            @Override
-            public ListenableFuture<List<RpcResult<Void>>>
-            apply(final List<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>> input) throws Exception {
-                final ListenableFuture<List<RpcResult<Void>>> result;
-                if (input == null || input.isEmpty()) {
-                    LOG.debug("no pair [epForwardingTemplate, ip-sgt-binding] available for sgt: {}", epPolicyTemplate.getSgt());
-                    result = Futures.immediateFuture(Collections.singletonList(
-                            RpcResultBuilder.<Void>failed()
-                                    .withError(RpcError.ErrorType.APPLICATION,
-                                            "no pair [epForwardingTemplate, ip-sgt-binding] available for sgt " + epPolicyTemplate.getSgt())
-                                    .build()));
-                } else {
-                    LOG.trace("processing epPolicyTemplate event for sgt: {}", epPolicyTemplate.getSgt());
-                    List<ListenableFuture<RpcResult<Void>>> allResults = new ArrayList<>(input.size());
-                    for (Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet> pair : input) {
-                        final MasterDatabaseBinding sxpMasterDBBinding = pair.getLeft();
-                        final EndpointForwardingTemplateBySubnet epForwardingTemplate = pair.getRight();
-                        if (epForwardingTemplate != null) {
-                            LOG.trace("processing epPolicyTemplate event with resolved sxpMasterDb entry and " +
-                                            "epForwardingTemplate for sgt/ip-prefix: {}/{}",
-                                    sxpMasterDBBinding.getSecurityGroupTag(), sxpMasterDBBinding.getImplementedInterface());
-                            allResults.add(sxpMapperReactor.processTemplatesAndSxpMasterDB(
-                                    epPolicyTemplate, epForwardingTemplate, sxpMasterDBBinding));
-                        }
+        return input -> {
+            final ListenableFuture<List<RpcResult<Void>>> result;
+            if (input == null || input.isEmpty()) {
+                LOG.debug("no pair [epForwardingTemplate, ip-sgt-binding] available for sgt: {}",
+                    epPolicyTemplate.getSgt());
+                result =
+                    Futures.immediateFuture(Collections.singletonList(
+                        RpcResultBuilder.<Void>failed().withError(RpcError.ErrorType.APPLICATION,
+                            "no pair [epForwardingTemplate, ip-sgt-binding] available for sgt "
+                                + epPolicyTemplate.getSgt()).build()));
+            } else {
+                LOG.trace("processing epPolicyTemplate event for sgt: {}", epPolicyTemplate.getSgt());
+                List<ListenableFuture<RpcResult<Void>>> allResults = new ArrayList<>(input.size());
+                for (Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet> pair : input) {
+                    final MasterDatabaseBinding sxpMasterDBBinding = pair.getLeft();
+                    final EndpointForwardingTemplateBySubnet epForwardingTemplate = pair.getRight();
+                    if (epForwardingTemplate != null) {
+                        LOG.trace("processing epPolicyTemplate event with resolved sxpMasterDb entry and "
+                                + "epForwardingTemplate for sgt/ip-prefix: {}/{}", sxpMasterDBBinding.getSecurityGroupTag(),
+                            sxpMasterDBBinding.getImplementedInterface());
+                        allResults.add(
+                            sxpMapperReactor.processTemplatesAndSxpMasterDB(epPolicyTemplate, epForwardingTemplate,
+                                sxpMasterDBBinding));
                     }
-                    result = Futures.successfulAsList(allResults);
                 }
-
-                return result;
+                result = Futures.successfulAsList(allResults);
             }
+
+            return result;
         };
     }
 
-    private AsyncFunction<Collection<MasterDatabaseBinding>, List<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>>
-    createReadAndPairTemplateToBindingFunction(final EndpointPolicyTemplateBySgt epPolicyTemplate) {
-        return new AsyncFunction<Collection<MasterDatabaseBinding>, List<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>>() {
-            @Override
-            public ListenableFuture<List<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>>
-            apply(final Collection<MasterDatabaseBinding> input) throws Exception {
-                final ListenableFuture<List<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>> result;
-                if (input == null || input.isEmpty()) {
-                    LOG.debug("no sxpMasterDB entry available for sgt: {}", epPolicyTemplate.getSgt());
-                    result = Futures.immediateFuture(Collections.emptyList());
-                } else {
-                    LOG.trace("processing sxpMasterDB entries for sgt: {}", epPolicyTemplate.getSgt());
-                    List<ListenableFuture<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>> allResults =
-                            new ArrayList<>(input.size());
-                    for (MasterDatabaseBinding masterDBItem : input) {
-                        final ListenableFuture<Optional<EndpointForwardingTemplateBySubnet>> epForwardingTemplateRead =
-                                epForwardingTemplateDao.read(masterDBItem.getIpPrefix());
-                        allResults.add(EPTemplateUtil.wrapToPair(masterDBItem, epForwardingTemplateRead));
-                    }
-                    result = Futures.successfulAsList(allResults);
+    private AsyncFunction<Collection<MasterDatabaseBinding>, List<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>> createReadAndPairTemplateToBindingFunction(
+        final EndpointPolicyTemplateBySgt epPolicyTemplate) {
+        return input -> {
+            final ListenableFuture<List<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>> result;
+            if (input == null || input.isEmpty()) {
+                LOG.debug("no sxpMasterDB entry available for sgt: {}", epPolicyTemplate.getSgt());
+                result = Futures.immediateFuture(Collections.emptyList());
+            } else {
+                LOG.trace("processing sxpMasterDB entries for sgt: {}", epPolicyTemplate.getSgt());
+                List<ListenableFuture<Pair<MasterDatabaseBinding, EndpointForwardingTemplateBySubnet>>>
+                    allResults =
+                    new ArrayList<>(input.size());
+                for (MasterDatabaseBinding masterDBItem : input) {
+                    final ListenableFuture<Optional<EndpointForwardingTemplateBySubnet>>
+                        epForwardingTemplateRead =
+                        epForwardingTemplateDao.read(masterDBItem.getIpPrefix());
+                    allResults.add(EPTemplateUtil.wrapToPair(masterDBItem, epForwardingTemplateRead));
                 }
-
-                return result;
+                result = Futures.successfulAsList(allResults);
             }
+
+            return result;
         };
     }
 
index c7410288e035b74d8b3d501f8ca0881f1e9dcd19..27684135f97bb1034d203ebf35fdfddc356dcf48 100644 (file)
@@ -14,6 +14,8 @@ import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.Collection;
 import javax.annotation.Nonnull;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -156,9 +158,9 @@ public class MasterDatabaseBindingListenerImpl implements MasterDatabaseBindingL
                 }
                 return result;
             }
-        });
+        }, MoreExecutors.directExecutor());
 
-        Futures.addCallback(rpcResult, RPC_POLICY_RESULT_FUTURE_CALLBACK);
+        Futures.addCallback(rpcResult, RPC_POLICY_RESULT_FUTURE_CALLBACK, MoreExecutors.directExecutor());
     }
 
     @Override
index 300ef8d36e27e3c150a0cd5a672f56e483c22ec7..ea90060386dea7bc6a249b30eb8aad4485b70181 100644 (file)
@@ -13,6 +13,8 @@ import com.google.common.base.Optional;
 import com.google.common.collect.Ordering;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.ArrayList;
 import java.util.List;
 import javax.annotation.Nonnull;
@@ -60,7 +62,7 @@ public final class EPTemplateUtil {
                 compositeResult.setLeft(input);
                 return compositeResult;
             }
-        }));
+        }, MoreExecutors.directExecutor()));
 
         results.add(Futures.transform(rightRead, new Function<Optional<R>, OptionalMutablePair<L, R>>() {
             @Nullable
@@ -69,7 +71,7 @@ public final class EPTemplateUtil {
                 compositeResult.setRight(input);
                 return compositeResult;
             }
-        }));
+        }, MoreExecutors.directExecutor()));
 
         return Futures.transform(Futures.successfulAsList(results),
                 new Function<List<?>, OptionalMutablePair<L, R>>() {
@@ -78,7 +80,7 @@ public final class EPTemplateUtil {
                     public OptionalMutablePair<L, R> apply(@Nullable final List<?> input) {
                         return compositeResult;
                     }
-                });
+                }, MoreExecutors.directExecutor());
     }
 
     public static <K, V> ListenableFuture<Pair<K, V>> wrapToPair(
@@ -90,7 +92,7 @@ public final class EPTemplateUtil {
             public Pair<K, V> apply(@Nullable final Optional<V> input) {
                 return new MutablePair<>(keyItem, input.orNull());
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     public static <V> ListenableFuture<Optional<V>> wrapToOptional(final ListenableFuture<V> value) {
@@ -100,7 +102,7 @@ public final class EPTemplateUtil {
             public Optional<V> apply(@Nullable final V input) {
                 return Optional.fromNullable(input);
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     public static Ordering<EndpointGroupId> createEndpointGroupIdOrdering() {
index 1e5c7fa7b9b7f13bf97a23ad6865b463794b08fd..17e09840c243e127dc926bb26416a9766ea92b2b 100644 (file)
@@ -13,6 +13,8 @@ import com.google.common.collect.Range;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Optional;
@@ -53,7 +55,7 @@ public class EPPolicyTemplateProviderIseImpl implements EPPolicyTemplateProvider
                 return Optional.ofNullable(input)
                         .flatMap(i -> i.map(sgtName -> buildTemplate(sgt, iseContext.getIseSourceConfig().getTenant(), sgtName)));
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     private EndpointPolicyTemplateBySgt buildTemplate(final @Nonnull Sgt sgt, final @Nonnull TenantId tenantId,
@@ -81,7 +83,7 @@ public class EPPolicyTemplateProviderIseImpl implements EPPolicyTemplateProvider
             public void onFailure(final Throwable t) {
                 LOG.debug("[epPolicyTemplateProvider] harvestAll FAILED: {}", t.getMessage());
             }
-        });
+        }, MoreExecutors.directExecutor());
 
         return Futures.transform(sgtUpdateFu, new Function<Collection<SgtInfo>, Optional<String>>() {
             @Nullable
@@ -93,7 +95,7 @@ public class EPPolicyTemplateProviderIseImpl implements EPPolicyTemplateProvider
                                 .filter(sgtInfo -> sgt.equals(sgtInfo.getSgt())).findFirst()
                                 .map(SgtInfo::getName));
             }
-        });
+        }, MoreExecutors.directExecutor());
     }
 
     private Optional<IseContext> findIseSourceConfigBySgt(final Sgt sgt) {
index 0c18a4ef92bf5586cd7a3581f3dbfee557c3b936..ae15aa5fd2e8b5c387b31f72d54cbb255dd70437 100644 (file)
@@ -12,6 +12,7 @@ import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import java.text.SimpleDateFormat;
 import java.util.Collection;
@@ -96,7 +97,7 @@ public class GbpIseConfigListenerImpl implements GbpIseConfigListener {
                             LOG.debug("ise harvest failed", t);
                             storeOutcome(false, 0, t.getMessage());
                         }
-                    });
+                    }, MoreExecutors.directExecutor());
 
                     try {
                         harvestResult.get(30, TimeUnit.SECONDS);
index 67e2cef3a92677f1b884b38625218310a422b123..833fd03b891eeaef60d9bdfe229fd73740eecc67 100644 (file)
@@ -12,6 +12,7 @@ import com.google.common.base.Function;
 import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import com.sun.jersey.api.client.Client;
 import com.sun.jersey.api.client.WebResource;
@@ -84,7 +85,7 @@ public class GbpIseSgtHarvesterImpl implements GbpIseSgtHarvester {
                         LOG.debug("entering stg-info processor {}", processor.getClass().getSimpleName());
                         return processor.processSgtInfo(iseSourceConfig.getTenant(), sgtInfos);
                     }
-                });
+                }, MoreExecutors.directExecutor());
             }
             result = Futures.transform(processingResult, new Function<Void, Collection<SgtInfo>>() {
                 @Nullable
@@ -98,7 +99,7 @@ public class GbpIseSgtHarvesterImpl implements GbpIseSgtHarvester {
                     // always success, otherwise there will be TransactionCommitFailedException thrown
                     return sgtInfos;
                 }
-            });
+            }, MoreExecutors.directExecutor());
         } catch (Exception e) {
             LOG.debug("failed to harvest ise", e);
             result = Futures.immediateFailedFuture(e);