X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fimpl%2Fservices%2FSalPortServiceImpl.java;h=3fc621e356a990966b517c924df375876cd0a7b9;hb=7b1d6d2ef6be22fdd7a141b8508693bad0407734;hp=fdabffa239b7d3a9d670bea7f80eb9e83903651e;hpb=b2d1d79adbbbceaff2b8eeba2f346ddbbcd29705;p=openflowplugin.git diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImpl.java index fdabffa239..3fc621e356 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImpl.java @@ -7,46 +7,47 @@ */ package org.opendaylight.openflowplugin.impl.services; -import com.google.common.base.Function; -import com.google.common.util.concurrent.JdkFutureAdapters; -import com.google.common.util.concurrent.ListenableFuture; +import java.util.Optional; import java.util.concurrent.Future; 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.api.openflow.statistics.ofpspecific.MessageSpy; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.PortConvertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.Port; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.SalPortService; import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.UpdatePortInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.UpdatePortOutput; import org.opendaylight.yangtools.yang.common.RpcResult; -import org.slf4j.Logger; -public class SalPortServiceImpl extends CommonService implements SalPortService { - private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(SalPortServiceImpl.class); +public final class SalPortServiceImpl extends AbstractSimpleService implements SalPortService { + private final ConvertorExecutor convertorExecutor; + private final VersionConvertorData data; - public SalPortServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext) { - super(requestContextStack, deviceContext); + public SalPortServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final ConvertorExecutor convertorExecutor) { + super(requestContextStack, deviceContext, UpdatePortOutput.class); + this.convertorExecutor = convertorExecutor; + data = new VersionConvertorData(getVersion()); } @Override public Future> updatePort(final UpdatePortInput input) { - return this. handleServiceCall(new Function, ListenableFuture>>() { - @Override - public ListenableFuture> apply(final DataCrate data) { - getMessageSpy().spyMessage(input.getImplementedInterface(), MessageSpy.STATISTIC_GROUP.TO_SWITCH_SUBMITTED_SUCCESS); - - final Port inputPort = input.getUpdatedPort().getPort().getPort().get(0); - final PortModInput ofPortModInput = PortConvertor.toPortModInput(inputPort, getVersion()); - final PortModInputBuilder mdInput = new PortModInputBuilder(ofPortModInput); - final Xid xid = data.getRequestContext().getXid(); - mdInput.setXid(xid.getValue()); - return JdkFutureAdapters.listenInPoolThread(provideConnectionAdapter(data.getiDConnection()).portMod(mdInput.build())); - } - }); + return handleServiceCall(input); } + @Override + protected OfHeader buildRequest(final Xid xid, final UpdatePortInput input) throws ServiceException { + final Port inputPort = input.getUpdatedPort().getPort().getPort().get(0); + final Optional ofPortModInput = convertorExecutor.convert(inputPort, data); + + final PortModInputBuilder mdInput = new PortModInputBuilder(ofPortModInput + .orElse(PortConvertor.defaultResult(getVersion()))) + .setXid(xid.getValue()); + + return mdInput.build(); + } }