Fix errors in serializers and deserializers
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / util / DeviceInitializationUtils.java
index 9a8548c82a3e2583973be250dac783d91203d984..0bdbe08a9c82e01be756b0cabec21d027f6a2863 100644 (file)
@@ -241,20 +241,26 @@ public class DeviceInitializationUtils {
     static void translateAndWriteReply(final MultipartType type, final DeviceContext dContext,
                                        final InstanceIdentifier<Node> nodeII, final Collection<MultipartReply> result,
                                        final ConvertorExecutor convertorExecutor) {
-        try {
-            result.stream()
-                    .map(MultipartReply::getMultipartReplyBody)
-                    .forEach(multipartReplyBody -> {
-                        if (!(writeDesc(type, multipartReplyBody, dContext, nodeII)
-                                || writeTableFeatures(type, multipartReplyBody, dContext, nodeII, convertorExecutor)
-                                || writeMeterFeatures(type, multipartReplyBody, dContext, nodeII)
-                                || writeGroupFeatures(type, multipartReplyBody, dContext, nodeII)
-                                || writePortDesc(type, multipartReplyBody, dContext, nodeII))) {
-                            throw new IllegalArgumentException("Unexpected MultipartType " + type);
-                        }
-                    });
-        } catch (final Exception e) {
-            LOG.debug("translateAndWriteReply: Failed to write node {} to DS ", dContext.getDeviceInfo().getNodeId().toString(), e);
+        if (Objects.nonNull(result)) {
+            try {
+                result.stream()
+                        .map(MultipartReply::getMultipartReplyBody)
+                        .forEach(multipartReplyBody -> {
+                            if (!(writeDesc(type, multipartReplyBody, dContext, nodeII)
+                                    || writeTableFeatures(type, multipartReplyBody, dContext, nodeII, convertorExecutor)
+                                    || writeMeterFeatures(type, multipartReplyBody, dContext, nodeII)
+                                    || writeGroupFeatures(type, multipartReplyBody, dContext, nodeII)
+                                    || writePortDesc(type, multipartReplyBody, dContext, nodeII))) {
+                                throw new IllegalArgumentException("Unexpected MultipartType " + type);
+                            }
+                        });
+            } catch (final Exception e) {
+                LOG.debug("translateAndWriteReply: Failed to write node {} to DS ", dContext.getDeviceInfo().getNodeId().toString(), e);
+            }
+        } else {
+            LOG.debug("translateAndWriteReply: Failed to write node {} to DS because we failed to gather device" +
+                            "info.",
+                    dContext.getDeviceInfo().getNodeId().toString());
         }
     }
 
@@ -492,6 +498,11 @@ public class DeviceInitializationUtils {
 
         final Xid xid = requestContext.getXid();
 
+        if (Objects.isNull(xid)) {
+            LOG.debug("Xid is not present, so cancelling node static info gathering.");
+            return Futures.immediateCancelledFuture();
+        }
+
         LOG.trace("Hooking xid {} to device context - precaution.", reserved);
 
         final MultiMsgCollector multiMsgCollector = deviceContext.getMultiMsgCollector(requestContext);