Switched to using IMDMessageTranslator<OfHeader, List<DataObject>>> in MDController
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / translator / ExperimenterTranslator.java
index f8fb921fecd2cd5a3890f53643f4a20419a04d03..af85a5f07900890ea9f7573ba13a03c361e24997 100644 (file)
@@ -1,6 +1,8 @@
 package org.opendaylight.openflowplugin.openflow.md.core.translator;
 
 import java.math.BigInteger;
+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;
@@ -14,44 +16,45 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class ExperimenterTranslator implements IMDMessageTranslator<OfHeader, DataObject> {
+public class ExperimenterTranslator implements IMDMessageTranslator<OfHeader, List<DataObject>> {
 
        protected static final Logger LOG = LoggerFactory.getLogger(ExperimenterTranslator.class);
-       
+
        @Override
-       public DataObject translate(SwitchConnectionDistinguisher cookie,
+       public List<DataObject> translate(SwitchConnectionDistinguisher cookie,
                        SessionContext sc, OfHeader msg) {
                if( msg instanceof ExperimenterMessage) {
                        ExperimenterMessage message = (ExperimenterMessage)msg ;
-                       LOG.error(" Experimenter Error Message received: Exp type={}, Exp Id={}, data={} ", 
+                       List<DataObject> list = new CopyOnWriteArrayList<DataObject>();
+                       LOG.error(" Experimenter Error Message received: Exp type={}, Exp Id={}, data={} ",
                        message.getExpType(), message.getExperimenter(),
                        new String(message.getData()) ) ;
-                       
+
                        // create a Node Experimenter Error Notification event builder
                        NodeExperimenterErrorNotificationBuilder nodeErrBuilder = new NodeExperimenterErrorNotificationBuilder() ;
-                       
+
                        nodeErrBuilder.setTransactionId(new TransactionId(BigInteger.valueOf( message.getXid() ))) ;
-                       
-                       // This is a fixed value 0xffff ( 65535 ) 
+
+                       // This is a fixed value 0xffff ( 65535 )
                        nodeErrBuilder.setType(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorType.Experimenter ) ;
-                       
+
                        // The experimenterType is defined as long in ExperimenterMessage where is just needs to be integer
-                       nodeErrBuilder.setExpType(message.getExpType().intValue() ) ; 
-                       
+                       nodeErrBuilder.setExpType(message.getExpType().intValue() ) ;
+
                        nodeErrBuilder.setExperimenterId(message.getExperimenter()) ;
-                       
+
                        nodeErrBuilder.setData(new String (message.getData()) ) ;
-                       
+
                        //Not handling Augmentation
-                        
+
                        NodeExperimenterErrorNotification nodeExpErrorEvent = nodeErrBuilder.build();
-                                               
-                       return nodeExpErrorEvent ;
+                       list.add(nodeExpErrorEvent);
+                       return list;
                }else {
                        LOG.error( "Message is not of Experimenter Error Message " ) ;
                        return null;
                }
        }
-               
+
 
 }