Bug 1764 - moved Session related interfaces to openflowplugin-api
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / translator / MultiPartMessageDescToNodeUpdatedTranslator.java
index bb1cc8f41d6ff1e99dfe7040fb42970bf874754b..4c7491e8fd230f23f905e164f3cd4a7f5816777f 100644 (file)
@@ -1,10 +1,20 @@
+/**
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
 package org.opendaylight.openflowplugin.openflow.md.core.translator;
 
 import java.math.BigInteger;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
-import org.opendaylight.openflowplugin.openflow.md.core.IMDMessageTranslator;
-import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher;
-import org.opendaylight.openflowplugin.openflow.md.core.session.SessionContext;
+import org.opendaylight.openflowplugin.api.openflow.md.core.IMDMessageTranslator;
+import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
+import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;
 import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeUpdated;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeUpdatedBuilder;
@@ -14,32 +24,37 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyDesc;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyDescCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.desc._case.MultipartReplyDesc;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class MultiPartMessageDescToNodeUpdatedTranslator implements IMDMessageTranslator<OfHeader, DataObject> {
-    protected static final Logger LOG = LoggerFactory.getLogger(PacketInTranslator.class);
+public class MultiPartMessageDescToNodeUpdatedTranslator implements IMDMessageTranslator<OfHeader, List<DataObject>> {
+    protected static final Logger LOG = LoggerFactory.getLogger(MultiPartMessageDescToNodeUpdatedTranslator.class);
     @Override
-    public NodeUpdated translate(SwitchConnectionDistinguisher cookie,
+    public List<DataObject> translate(SwitchConnectionDistinguisher cookie,
             SessionContext sc, OfHeader msg) {
         if(msg instanceof MultipartReply && ((MultipartReply) msg).getType() == MultipartType.OFPMPDESC) {
-            LOG.info("MultipartReplyMessage Being translated to NodeUpdated ");
+            LOG.debug("MultipartReplyMessage - MultipartReplyDesc Being translated to NodeUpdated ");
             MultipartReplyMessage message = (MultipartReplyMessage) msg;
+            List<DataObject> list = new CopyOnWriteArrayList<DataObject>();
             BigInteger datapathId = sc.getFeatures().getDatapathId();
             NodeUpdatedBuilder builder = InventoryDataServiceUtil.nodeUpdatedBuilderFromDataPathId(datapathId);
             FlowCapableNodeUpdatedBuilder fnub = new FlowCapableNodeUpdatedBuilder();
-            MultipartReplyDesc body = (MultipartReplyDesc) message.getMultipartReplyBody();
+            MultipartReplyDescCase caseBody = (MultipartReplyDescCase) message.getMultipartReplyBody();
+            MultipartReplyDesc body = caseBody.getMultipartReplyDesc();
             fnub.setHardware(body.getHwDesc());
             fnub.setManufacturer(body.getMfrDesc());
             fnub.setSerialNumber(body.getSerialNum());
             fnub.setDescription(body.getDpDesc());
             fnub.setSoftware(body.getSwDesc());
             builder.addAugmentation(FlowCapableNodeUpdated.class, fnub.build());
-            return builder.build();
+            NodeUpdated nodeUpdated = builder.build();
+            list.add(nodeUpdated);
+            return list;
         } else {
-            return null;
+            return Collections.emptyList();
         }
     }