Merge "SONAR TD - StatisticsContextImpl, StatisticsManagerImpl"
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / services / GroupService.java
index 431fea1e23c52b63ae5e59032f96bd22394ea367..aa1ebe15ccf02e0fcb808fe3c9321f63f68f350b 100644 (file)
@@ -7,25 +7,37 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import java.util.Optional;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.GroupConvertor;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 
 final class GroupService<I extends Group, O extends DataObject> extends AbstractSimpleService<I, O> {
-    GroupService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final Class<O> clazz) {
+    private final ConvertorExecutor convertorExecutor;
+    private final VersionDatapathIdConvertorData data;
+
+    GroupService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final Class<O> clazz, final ConvertorExecutor convertorExecutor) {
         super(requestContextStack, deviceContext, clazz);
+        this.convertorExecutor = convertorExecutor;
+        data = new VersionDatapathIdConvertorData(getVersion());
+        data.setDatapathId(getDatapathId());
     }
 
     @Override
-    protected OfHeader buildRequest(final Xid xid, final I input) {
-        final GroupModInputBuilder ofGroupModInput = GroupConvertor.toGroupModInput(input, getVersion(), getDatapathId());
-        ofGroupModInput.setXid(xid.getValue());
+    protected OfHeader buildRequest(final Xid xid, final I input) throws ServiceException {
+        final Optional<GroupModInputBuilder> ofGroupModInput = convertorExecutor.convert(input, data);
+
+        final GroupModInputBuilder groupModInputBuilder = ofGroupModInput
+                .orElse(GroupConvertor.defaultResult(getVersion()))
+                .setXid(xid.getValue());
 
-        return ofGroupModInput.build();
+        return groupModInputBuilder.build();
     }
 }