Updated experimenter model
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / MultipartReplyMessageFactory.java
index cf3e2d741cc0359473f9005424a6f578a8aef120..4074339a535908eb0daa07eebbaa9a19a48669c1 100644 (file)
@@ -26,8 +26,6 @@ import org.opendaylight.openflowjava.protocol.impl.util.ListDeserializer;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ActionRelatedTableFeatureProperty;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ActionRelatedTableFeaturePropertyBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterRelatedTableFeatureProperty;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterRelatedTableFeaturePropertyBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.InstructionRelatedTableFeatureProperty;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.InstructionRelatedTableFeaturePropertyBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.NextTableRelatedTableFeatureProperty;
@@ -432,14 +430,15 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
                 builder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
             } else if (type.equals(TableFeaturesPropType.OFPTFPTEXPERIMENTER)
                     || type.equals(TableFeaturesPropType.OFPTFPTEXPERIMENTERMISS)) {
-                ExperimenterRelatedTableFeaturePropertyBuilder expBuilder = new ExperimenterRelatedTableFeaturePropertyBuilder();
-                expBuilder.setExperimenter(input.readUnsignedInt());
-                expBuilder.setExpType(input.readUnsignedInt());
-                OFDeserializer<ExperimenterRelatedTableFeatureProperty> propDeserializer = registry.getDeserializer(
+                // return index to property start, so that the experimenter properties are deserialized
+                // correctly - as whole ofp_table_feature_prop_experimenter property
+                input.readerIndex(input.readerIndex() - 2 * EncodeConstants.SIZE_OF_SHORT_IN_BYTES);
+                OFDeserializer<TableFeatureProperties> propDeserializer = registry.getDeserializer(
                         new MessageCodeKey(EncodeConstants.OF13_VERSION_ID,
-                                type.getIntValue(), ExperimenterRelatedTableFeatureProperty.class));
-                ExperimenterRelatedTableFeatureProperty expProp = propDeserializer.deserialize(input);
-                builder.addAugmentation(ExperimenterRelatedTableFeatureProperty.class, expProp);
+                                type.getIntValue(), TableFeatureProperties.class));
+                TableFeatureProperties expProp = propDeserializer.deserialize(input);
+                properties.add(expProp);
+                continue;
             }
             if (paddingRemainder != 0) {
                 input.skipBytes(EncodeConstants.PADDING - paddingRemainder);
@@ -674,14 +673,15 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
                         bandsBuilder.setMeterBand(bandDscpRemarkCaseBuilder.build());
                         break;
                     case 0xFFFF:
-                       MeterBandExperimenterCaseBuilder bandExperimenterCaseBuilder = new MeterBandExperimenterCaseBuilder();
+                        MeterBandExperimenterCaseBuilder bandExperimenterCaseBuilder = new MeterBandExperimenterCaseBuilder();
                         MeterBandExperimenterBuilder bandExperimenterBuilder = new MeterBandExperimenterBuilder();
-                        bandExperimenterBuilder.setType(MeterBandType.forValue(bandType));
-                        actualLength += input.readUnsignedShort();
-                        bandExperimenterBuilder.setRate(input.readUnsignedInt());
-                        bandExperimenterBuilder.setBurstSize(input.readUnsignedInt());
-                        bandExperimenterBuilder.setExperimenter(input.readUnsignedInt());
-                        bandExperimenterCaseBuilder.setMeterBandExperimenter(bandExperimenterBuilder.build());
+                        // TODO - implement lookup into registry
+//                        bandExperimenterBuilder.setType(MeterBandType.forValue(bandType));
+//                        actualLength += input.readUnsignedShort();
+//                        bandExperimenterBuilder.setRate(input.readUnsignedInt());
+//                        bandExperimenterBuilder.setBurstSize(input.readUnsignedInt());
+//                        bandExperimenterBuilder.setExperimenter(input.readUnsignedInt());
+//                        bandExperimenterCaseBuilder.setMeterBandExperimenter(bandExperimenterBuilder.build());
                         bandsBuilder.setMeterBand(bandExperimenterCaseBuilder.build());
                         break;
                     default:
@@ -698,13 +698,14 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }
     
     private static MultipartReplyExperimenterCase setExperimenter(ByteBuf input) {
+     // TODO - implement lookup into registry
        MultipartReplyExperimenterCaseBuilder caseBuilder = new MultipartReplyExperimenterCaseBuilder();
         MultipartReplyExperimenterBuilder builder = new MultipartReplyExperimenterBuilder();
-        builder.setExperimenter(input.readUnsignedInt());
-        builder.setExpType(input.readUnsignedInt());
-        byte[] data = new byte[input.readableBytes()];
-        input.readBytes(data);
-        builder.setData(data);
+//        builder.setExperimenter(input.readUnsignedInt());
+//        builder.setExpType(input.readUnsignedInt());
+//        byte[] data = new byte[input.readableBytes()];
+//        input.readBytes(data);
+//        builder.setData(data);
         caseBuilder.setMultipartReplyExperimenter(builder.build());
         return caseBuilder.build();
     }