From 535991e48f3bf7de4b5a94502b699c07e48e929e Mon Sep 17 00:00:00 2001 From: Jozef Gloncak Date: Thu, 5 Mar 2015 14:19:31 +0100 Subject: [PATCH] BUG 2661 - sonar issues in openflowplugin artifact - anonymous class. Annonymous class was replaced with named inner class. REMARK: it is possible that this commit will be reverted. Change-Id: Ice30fbe21ae160ec6b1004644d1c1397ac0bec56 Signed-off-by: Jozef Gloncak --- .../md/core/sal/OFRpcTaskFactory.java | 2231 +++++++++-------- 1 file changed, 1197 insertions(+), 1034 deletions(-) diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcTaskFactory.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcTaskFactory.java index 72d14a9e29..88265ffa28 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcTaskFactory.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcTaskFactory.java @@ -178,8 +178,12 @@ import org.slf4j.LoggerFactory; * */ public abstract class OFRpcTaskFactory { - protected static final Logger logger = LoggerFactory.getLogger(OFRpcTaskFactory.class); + protected static final Logger LOG = LoggerFactory.getLogger(OFRpcTaskFactory.class); + private OFRpcTaskFactory() { + // hiding implicit constructor + } + /** * @param taskContext * @param input @@ -189,35 +193,36 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createAddFlowTask( OFRpcTaskContext taskContext, AddFlowInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { - - @Override - public ListenableFuture> call() { - ListenableFuture> result = SettableFuture.create(); - // Convert the AddFlowInput to FlowModInput - List ofFlowModInputs = FlowConvertor.toFlowModInputs(getInput(), - getVersion(), getSession().getFeatures().getDatapathId()); + class OFRpcTaskImpl extends OFRpcTask> { - logger.debug("Number of flows to push to switch: {}", ofFlowModInputs.size()); - - result = chainFlowMods(ofFlowModInputs, 0, getTaskContext(), getCookie()); + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, AddFlowInput input) { + super(taskContext, cookie, input); + } + @Override + public ListenableFuture> call() { + ListenableFuture> result = SettableFuture.create(); + + // Convert the AddFlowInput to FlowModInput + List ofFlowModInputs = FlowConvertor.toFlowModInputs(getInput(), + getVersion(), getSession().getFeatures().getDatapathId()); + LOG.debug("Number of flows to push to switch: {}", ofFlowModInputs.size()); + result = chainFlowMods(ofFlowModInputs, 0, getTaskContext(), getCookie()); + result = OFRpcTaskUtil.chainFutureBarrier(this, result); + OFRpcTaskUtil.hookFutureNotification(this, result, + getRpcNotificationProviderService(), + createFlowAddedNotification(getInput())); + return result; + } - result = OFRpcTaskUtil.chainFutureBarrier(this, result); - OFRpcTaskUtil.hookFutureNotification(this, result, - getRpcNotificationProviderService(), - createFlowAddedNotification(getInput())); - return result; - } + @Override + public Boolean isBarrier() { + return getInput().isBarrier(); + } + } - @Override - public Boolean isBarrier() { - return getInput().isBarrier(); - } - }; - return task; + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -246,7 +251,7 @@ public abstract class OFRpcTaskFactory { if (input.isSuccessful()) { return chainFlowMods(ofFlowModInputs, index + 1, taskContext, cookie); } else { - logger.warn("Flowmod failed. Any chained flowmods are ignored. xid:{}", + LOG.warn("Flowmod failed. Any chained flowmods are ignored. xid:{}", ofFlowModInputs.get(index).getXid()); return Futures.immediateFuture(input); } @@ -293,55 +298,59 @@ public abstract class OFRpcTaskFactory { final OFRpcTaskContext taskContext, UpdateFlowInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { - - @Override - public ListenableFuture> call() { - ListenableFuture> result = null; - - UpdateFlowInput in = getInput(); - UpdatedFlow updated = in.getUpdatedFlow(); - OriginalFlow original = in.getOriginalFlow(); - Short version = getVersion(); - - List allFlowMods = new ArrayList<>(); - List ofFlowModInputs; - - if (!FlowCreatorUtil.canModifyFlow(original, updated, version)) { - // We would need to remove original and add updated. - - //remove flow - RemoveFlowInputBuilder removeflow = new RemoveFlowInputBuilder(original); - List ofFlowRemoveInput = FlowConvertor.toFlowModInputs(removeflow.build(), - version, getSession().getFeatures().getDatapathId()); - // remove flow should be the first - allFlowMods.addAll(ofFlowRemoveInput); - AddFlowInputBuilder addFlowInputBuilder = new AddFlowInputBuilder(updated); - ofFlowModInputs = FlowConvertor.toFlowModInputs(addFlowInputBuilder.build(), - version, getSession().getFeatures().getDatapathId()); - } else { - ofFlowModInputs = FlowConvertor.toFlowModInputs(updated, - version, getSession().getFeatures().getDatapathId()); - } + class OFRpcTaskImpl extends OFRpcTask> { - allFlowMods.addAll(ofFlowModInputs); - logger.debug("Number of flows to push to switch: {}", allFlowMods.size()); - result = chainFlowMods(allFlowMods, 0, getTaskContext(), getCookie()); + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + UpdateFlowInput input) { + super(taskContext, cookie, input); + } - result = OFRpcTaskUtil.chainFutureBarrier(this, result); - OFRpcTaskUtil.hookFutureNotification(this, result, - getRpcNotificationProviderService(), - createFlowUpdatedNotification(in)); - return result; - } + @Override + public ListenableFuture> call() { + ListenableFuture> result = null; + + UpdateFlowInput in = getInput(); + UpdatedFlow updated = in.getUpdatedFlow(); + OriginalFlow original = in.getOriginalFlow(); + Short version = getVersion(); + + List allFlowMods = new ArrayList<>(); + List ofFlowModInputs; + + if (!FlowCreatorUtil.canModifyFlow(original, updated, version)) { + // We would need to remove original and add updated. + + //remove flow + RemoveFlowInputBuilder removeflow = new RemoveFlowInputBuilder(original); + List ofFlowRemoveInput = FlowConvertor.toFlowModInputs(removeflow.build(), + version, getSession().getFeatures().getDatapathId()); + // remove flow should be the first + allFlowMods.addAll(ofFlowRemoveInput); + AddFlowInputBuilder addFlowInputBuilder = new AddFlowInputBuilder(updated); + ofFlowModInputs = FlowConvertor.toFlowModInputs(addFlowInputBuilder.build(), + version, getSession().getFeatures().getDatapathId()); + } else { + ofFlowModInputs = FlowConvertor.toFlowModInputs(updated, + version, getSession().getFeatures().getDatapathId()); + } + + allFlowMods.addAll(ofFlowModInputs); + LOG.debug("Number of flows to push to switch: {}", allFlowMods.size()); + result = chainFlowMods(allFlowMods, 0, getTaskContext(), getCookie()); + + result = OFRpcTaskUtil.chainFutureBarrier(this, result); + OFRpcTaskUtil.hookFutureNotification(this, result, + getRpcNotificationProviderService(), + createFlowUpdatedNotification(in)); + return result; + } - @Override - public Boolean isBarrier() { - return getInput().getUpdatedFlow().isBarrier(); - } - }; - return task; + @Override + public Boolean isBarrier() { + return getInput().getUpdatedFlow().isBarrier(); + } + } + return new OFRpcTaskImpl(taskContext, cookie, input); } @@ -371,37 +380,40 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createAddGroupTask( final OFRpcTaskContext taskContext, AddGroupInput input, final SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { - @Override - public ListenableFuture> call() { - ListenableFuture> result = SettableFuture.create(); + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, AddGroupInput input) { + super(taskContext, cookie, input); + } - // Convert the AddGroupInput to GroupModInput - GroupModInputBuilder ofGroupModInput = GroupConvertor.toGroupModInput(getInput(), - getVersion(), getSession().getFeatures().getDatapathId()); - final Long xId = getSession().getNextXid(); - ofGroupModInput.setXid(xId); + @Override + public ListenableFuture> call() { + ListenableFuture> result = SettableFuture.create(); - Future> resultFromOFLib = getMessageService() - .groupMod(ofGroupModInput.build(), getCookie()); - result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + // Convert the AddGroupInput to GroupModInput + GroupModInputBuilder ofGroupModInput = GroupConvertor.toGroupModInput(getInput(), + getVersion(), getSession().getFeatures().getDatapathId()); + final Long xId = getSession().getNextXid(); + ofGroupModInput.setXid(xId); - result = OFRpcTaskUtil.chainFutureBarrier(this, result); - OFRpcTaskUtil.hookFutureNotification(this, result, - getRpcNotificationProviderService(), createGroupAddedNotification(getInput())); + Future> resultFromOFLib = getMessageService() + .groupMod(ofGroupModInput.build(), getCookie()); + result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - return result; - } + result = OFRpcTaskUtil.chainFutureBarrier(this, result); + OFRpcTaskUtil.hookFutureNotification(this, result, + getRpcNotificationProviderService(), createGroupAddedNotification(getInput())); - @Override - public Boolean isBarrier() { - return getInput().isBarrier(); - } - }; + return result; + } + + @Override + public Boolean isBarrier() { + return getInput().isBarrier(); + } + }; - return task; + return new OFRpcTaskImpl(taskContext, cookie, input); } @@ -431,37 +443,39 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createAddMeterTask( OFRpcTaskContext taskContext, AddMeterInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { - @Override - public ListenableFuture> call() { - ListenableFuture> result = SettableFuture.create(); + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, AddMeterInput input) { + super(taskContext, cookie, input); + } - // Convert the AddGroupInput to GroupModInput - MeterModInputBuilder ofMeterModInput = MeterConvertor.toMeterModInput(getInput(), getVersion()); - final Long xId = getSession().getNextXid(); - ofMeterModInput.setXid(xId); + @Override + public ListenableFuture> call() { + ListenableFuture> result = SettableFuture.create(); - Future> resultFromOFLib = getMessageService() - .meterMod(ofMeterModInput.build(), getCookie()); - result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + // Convert the AddGroupInput to GroupModInput + MeterModInputBuilder ofMeterModInput = MeterConvertor.toMeterModInput(getInput(), getVersion()); + final Long xId = getSession().getNextXid(); + ofMeterModInput.setXid(xId); - result = OFRpcTaskUtil.chainFutureBarrier(this, result); - OFRpcTaskUtil.hookFutureNotification(this, result, - getRpcNotificationProviderService(), createMeterAddedNotification(getInput())); + Future> resultFromOFLib = getMessageService() + .meterMod(ofMeterModInput.build(), getCookie()); + result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - return result; - } + result = OFRpcTaskUtil.chainFutureBarrier(this, result); + OFRpcTaskUtil.hookFutureNotification(this, result, + getRpcNotificationProviderService(), createMeterAddedNotification(getInput())); - @Override - public Boolean isBarrier() { - return getInput().isBarrier(); - } - }; + return result; + } - return task; + @Override + public Boolean isBarrier() { + return getInput().isBarrier(); + } + }; + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -490,32 +504,37 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createUpdateGroupTask( OFRpcTaskContext taskContext, UpdateGroupInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { - @Override - public ListenableFuture> call() { - ListenableFuture> result = null; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + UpdateGroupInput input) { + super(taskContext, cookie, input); + } - // Convert the UpdateGroupInput to GroupModInput - GroupModInputBuilder ofGroupModInput = GroupConvertor.toGroupModInput( - getInput().getUpdatedGroup(), getVersion(), - getSession().getFeatures().getDatapathId()); - final Long xId = getSession().getNextXid(); - ofGroupModInput.setXid(xId); + @Override + public ListenableFuture> call() { + ListenableFuture> result = null; - Future> resultFromOFLib = - getMessageService().groupMod(ofGroupModInput.build(), getCookie()); - result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + // Convert the UpdateGroupInput to GroupModInput + GroupModInputBuilder ofGroupModInput = GroupConvertor.toGroupModInput( + getInput().getUpdatedGroup(), getVersion(), + getSession().getFeatures().getDatapathId()); + final Long xId = getSession().getNextXid(); + ofGroupModInput.setXid(xId); - result = OFRpcTaskUtil.chainFutureBarrier(this, result); - OFRpcTaskUtil.hookFutureNotification(this, result, - getRpcNotificationProviderService(), createGroupUpdatedNotification(getInput())); + Future> resultFromOFLib = + getMessageService().groupMod(ofGroupModInput.build(), getCookie()); + result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - return result; - } - }; - return task; + result = OFRpcTaskUtil.chainFutureBarrier(this, result); + OFRpcTaskUtil.hookFutureNotification(this, result, + getRpcNotificationProviderService(), createGroupUpdatedNotification(getInput())); + + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -544,30 +563,35 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createUpdateMeterTask( OFRpcTaskContext taskContext, UpdateMeterInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { - @Override - public ListenableFuture> call() { - ListenableFuture> result = null; - - // Convert the UpdateMeterInput to MeterModInput - MeterModInputBuilder ofMeterModInput = MeterConvertor.toMeterModInput( - getInput().getUpdatedMeter(), getVersion()); - final Long xId = getSession().getNextXid(); - ofMeterModInput.setXid(xId); - - Future> resultFromOFLib = - getMessageService().meterMod(ofMeterModInput.build(), getCookie()); - result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - result = OFRpcTaskUtil.chainFutureBarrier(this, result); - OFRpcTaskUtil.hookFutureNotification(this, result, - getRpcNotificationProviderService(), createMeterUpdatedNotification(getInput())); - return result; - } - }; - return task; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + UpdateMeterInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() { + ListenableFuture> result = null; + + // Convert the UpdateMeterInput to MeterModInput + MeterModInputBuilder ofMeterModInput = MeterConvertor.toMeterModInput( + getInput().getUpdatedMeter(), getVersion()); + final Long xId = getSession().getNextXid(); + ofMeterModInput.setXid(xId); + + Future> resultFromOFLib = + getMessageService().meterMod(ofMeterModInput.build(), getCookie()); + result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + result = OFRpcTaskUtil.chainFutureBarrier(this, result); + OFRpcTaskUtil.hookFutureNotification(this, result, + getRpcNotificationProviderService(), createMeterUpdatedNotification(getInput())); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -597,32 +621,36 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createRemoveFlowTask( OFRpcTaskContext taskContext, RemoveFlowInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { - @Override - public ListenableFuture> call() { - ListenableFuture> result = SettableFuture.create(); + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + RemoveFlowInput input) { + super(taskContext, cookie, input); + } - // Convert the AddFlowInput to FlowModInput - FlowModInputBuilder ofFlowModInput = FlowConvertor.toFlowModInput(getInput(), - getVersion(), getSession().getFeatures().getDatapathId()); - final Long xId = getSession().getNextXid(); - ofFlowModInput.setXid(xId); + @Override + public ListenableFuture> call() { + ListenableFuture> result = SettableFuture.create(); - Future> resultFromOFLib = - getMessageService().flowMod(ofFlowModInput.build(), getCookie()); - result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + // Convert the AddFlowInput to FlowModInput + FlowModInputBuilder ofFlowModInput = FlowConvertor.toFlowModInput(getInput(), + getVersion(), getSession().getFeatures().getDatapathId()); + final Long xId = getSession().getNextXid(); + ofFlowModInput.setXid(xId); - result = OFRpcTaskUtil.chainFutureBarrier(this, result); - OFRpcTaskUtil.hookFutureNotification(this, result, - getRpcNotificationProviderService(), createFlowRemovedNotification(getInput())); + Future> resultFromOFLib = + getMessageService().flowMod(ofFlowModInput.build(), getCookie()); + result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - return result; - } - }; + result = OFRpcTaskUtil.chainFutureBarrier(this, result); + OFRpcTaskUtil.hookFutureNotification(this, result, + getRpcNotificationProviderService(), createFlowRemovedNotification(getInput())); - return task; + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -652,32 +680,36 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createRemoveGroupTask( final OFRpcTaskContext taskContext, RemoveGroupInput input, final SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { - @Override - public ListenableFuture> call() { - ListenableFuture> result = SettableFuture.create(); + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + RemoveGroupInput input) { + super(taskContext, cookie, input); + } - // Convert the AddGroupInput to GroupModInput - GroupModInputBuilder ofGroupModInput = GroupConvertor.toGroupModInput(getInput(), - getVersion(), getSession().getFeatures().getDatapathId()); - final Long xId = getSession().getNextXid(); - ofGroupModInput.setXid(xId); + @Override + public ListenableFuture> call() { + ListenableFuture> result = SettableFuture.create(); - Future> resultFromOFLib = getMessageService() - .groupMod(ofGroupModInput.build(), getCookie()); - result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + // Convert the AddGroupInput to GroupModInput + GroupModInputBuilder ofGroupModInput = GroupConvertor.toGroupModInput(getInput(), + getVersion(), getSession().getFeatures().getDatapathId()); + final Long xId = getSession().getNextXid(); + ofGroupModInput.setXid(xId); - result = OFRpcTaskUtil.chainFutureBarrier(this, result); - OFRpcTaskUtil.hookFutureNotification(this, result, - getRpcNotificationProviderService(), createGroupRemovedNotification(getInput())); + Future> resultFromOFLib = getMessageService() + .groupMod(ofGroupModInput.build(), getCookie()); + result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - return result; - } - }; + result = OFRpcTaskUtil.chainFutureBarrier(this, result); + OFRpcTaskUtil.hookFutureNotification(this, result, + getRpcNotificationProviderService(), createGroupRemovedNotification(getInput())); + + return result; + } + } - return task; + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -706,31 +738,36 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createRemoveMeterTask( OFRpcTaskContext taskContext, RemoveMeterInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { - @Override - public ListenableFuture> call() { - ListenableFuture> result = SettableFuture.create(); + class OFRpcTaskImpl extends OFRpcTask> { - // Convert the AddGroupInput to GroupModInput - MeterModInputBuilder ofMeterModInput = MeterConvertor.toMeterModInput(getInput(), getVersion()); - final Long xId = getSession().getNextXid(); - ofMeterModInput.setXid(xId); + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + RemoveMeterInput input) { + super(taskContext, cookie, input); + } - Future> resultFromOFLib = getMessageService() - .meterMod(ofMeterModInput.build(), getCookie()); - result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + @Override + public ListenableFuture> call() { + ListenableFuture> result = SettableFuture.create(); - result = OFRpcTaskUtil.chainFutureBarrier(this, result); - OFRpcTaskUtil.hookFutureNotification(this, result, - getRpcNotificationProviderService(), createMeterRemovedNotification(getInput())); + // Convert the AddGroupInput to GroupModInput + MeterModInputBuilder ofMeterModInput = MeterConvertor.toMeterModInput(getInput(), getVersion()); + final Long xId = getSession().getNextXid(); + ofMeterModInput.setXid(xId); - return result; - } - }; + Future> resultFromOFLib = getMessageService() + .meterMod(ofMeterModInput.build(), getCookie()); + result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + result = OFRpcTaskUtil.chainFutureBarrier(this, result); + OFRpcTaskUtil.hookFutureNotification(this, result, + getRpcNotificationProviderService(), createMeterRemovedNotification(getInput())); - return task; + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } @@ -760,58 +797,64 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createGetAllGroupStatisticsTask( final OFRpcTaskContext taskContext, GetAllGroupStatisticsInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { - @Override - public ListenableFuture> call() { - final SettableFuture> result = SettableFuture.create(); + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetAllGroupStatisticsInput input) { + super(taskContext, cookie, input); + } - if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { - RpcResult rpcResult = RpcResultBuilder.success( - new GetAllGroupStatisticsOutputBuilder().build()).build(); + @Override + public ListenableFuture> call() { + final SettableFuture> result = SettableFuture.create(); - return Futures.immediateFuture(rpcResult); - } else { + if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { + RpcResult rpcResult = RpcResultBuilder.success( + new GetAllGroupStatisticsOutputBuilder().build()).build(); - // Generate xid to associate it with the request - final Long xid = taskContext.getSession().getNextXid(); + return Futures.immediateFuture(rpcResult); + } else { - // Create multipart request body for fetch all the group stats - MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder(); - MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder(); - mprGroupBuild.setGroupId(new GroupId(BinContent.intToUnsignedLong( - org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731 - .Group.OFPGALL.getIntValue()))); - caseBuilder.setMultipartRequestGroup(mprGroupBuild.build()); + // Generate xid to associate it with the request + final Long xid = taskContext.getSession().getNextXid(); - // Create multipart request header - MultipartRequestInputBuilder mprInput = createMultipartHeader(MultipartType.OFPMPGROUP, - taskContext, xid); + // Create multipart request body for fetch all the group stats + MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder(); + MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder(); + mprGroupBuild.setGroupId(new GroupId(BinContent.intToUnsignedLong( + org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731 + .Group.OFPGALL.getIntValue()))); + caseBuilder.setMultipartRequestGroup(mprGroupBuild.build()); - // Set request body to main multipart request - mprInput.setMultipartRequestBody(caseBuilder.build()); + // Create multipart request header + MultipartRequestInputBuilder mprInput = createMultipartHeader(MultipartType.OFPMPGROUP, + taskContext, xid); - // Send the request, no cookies associated, use any connection + // Set request body to main multipart request + mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + // Send the request, no cookies associated, use any connection - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetAllGroupStatisticsOutput createResult() { - GetAllGroupStatisticsOutputBuilder groupStatBuilder = new GetAllGroupStatisticsOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return groupStatBuilder.build(); - } - }); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - return result; + Futures.addCallback(resultLib, new ResultCallback(result) { + @Override + public GetAllGroupStatisticsOutput createResult() { + GetAllGroupStatisticsOutputBuilder groupStatBuilder = new GetAllGroupStatisticsOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return groupStatBuilder.build(); } - } - }; - return task; + }); + + return result; + } + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -823,43 +866,48 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createGetGroupDescriptionTask( final OFRpcTaskContext taskContext, GetGroupDescriptionInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { - @Override - public ListenableFuture> call() - throws Exception { - final SettableFuture> result = SettableFuture.create(); - - if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { - RpcResult rpcResult = RpcResultBuilder.success( - new GetGroupDescriptionOutputBuilder().build()).build(); - return Futures.immediateFuture(rpcResult); - } else { - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestGroupDescCaseBuilder mprGroupDescCaseBuild = - new MultipartRequestGroupDescCaseBuilder(); - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPGROUPDESC, taskContext, xid); - mprInput.setMultipartRequestBody(mprGroupDescCaseBuild.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetGroupDescriptionOutput createResult() { - GetGroupDescriptionOutputBuilder groupStatBuilder = new GetGroupDescriptionOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return groupStatBuilder.build(); - } - }); - return result; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetGroupDescriptionInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() + throws Exception { + final SettableFuture> result = SettableFuture.create(); + + if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { + RpcResult rpcResult = RpcResultBuilder.success( + new GetGroupDescriptionOutputBuilder().build()).build(); + return Futures.immediateFuture(rpcResult); + } else { + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestGroupDescCaseBuilder mprGroupDescCaseBuild = + new MultipartRequestGroupDescCaseBuilder(); + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPGROUPDESC, taskContext, xid); + mprInput.setMultipartRequestBody(mprGroupDescCaseBuild.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { + @Override + public GetGroupDescriptionOutput createResult() { + GetGroupDescriptionOutputBuilder groupStatBuilder = new GetGroupDescriptionOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return groupStatBuilder.build(); } - } - }; - return task; + }); + return result; + } + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -871,43 +919,49 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createGetGroupFeaturesTask( final OFRpcTaskContext taskContext, GetGroupFeaturesInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { - @Override - public ListenableFuture> call() - throws Exception { - final SettableFuture> result = SettableFuture.create(); - - if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { - RpcResult rpcResult = RpcResultBuilder.success( - new GetGroupFeaturesOutputBuilder().build()).build(); - return Futures.immediateFuture(rpcResult); - } else { - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestGroupFeaturesCaseBuilder mprGroupFeaturesBuild = - new MultipartRequestGroupFeaturesCaseBuilder(); - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPGROUPFEATURES, taskContext, xid); - mprInput.setMultipartRequestBody(mprGroupFeaturesBuild.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetGroupFeaturesOutput createResult() { - GetGroupFeaturesOutputBuilder groupFeatureBuilder = new GetGroupFeaturesOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return groupFeatureBuilder.build(); - } - }); - return result; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetGroupFeaturesInput input) { + super(taskContext, cookie, input); + // TODO Auto-generated constructor stub + } + + @Override + public ListenableFuture> call() + throws Exception { + final SettableFuture> result = SettableFuture.create(); + + if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { + RpcResult rpcResult = RpcResultBuilder.success( + new GetGroupFeaturesOutputBuilder().build()).build(); + return Futures.immediateFuture(rpcResult); + } else { + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestGroupFeaturesCaseBuilder mprGroupFeaturesBuild = + new MultipartRequestGroupFeaturesCaseBuilder(); + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPGROUPFEATURES, taskContext, xid); + mprInput.setMultipartRequestBody(mprGroupFeaturesBuild.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { + @Override + public GetGroupFeaturesOutput createResult() { + GetGroupFeaturesOutputBuilder groupFeatureBuilder = new GetGroupFeaturesOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return groupFeatureBuilder.build(); } - } - }; - return task; + }); + return result; + } + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -919,47 +973,53 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createGetGroupStatisticsTask( final OFRpcTaskContext taskContext, final GetGroupStatisticsInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { - @Override - public ListenableFuture> call() - throws Exception { - final SettableFuture> result = SettableFuture.create(); - - if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { - RpcResult rpcResult = RpcResultBuilder.success( - new GetGroupStatisticsOutputBuilder().build()).build(); - return Futures.immediateFuture(rpcResult); - } else { - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder(); - MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder(); - mprGroupBuild.setGroupId(new GroupId(input.getGroupId().getValue())); - caseBuilder.setMultipartRequestGroup(mprGroupBuild.build()); - - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPGROUP, taskContext, xid); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetGroupStatisticsOutput createResult() { - GetGroupStatisticsOutputBuilder groupStatisticsBuilder = - new GetGroupStatisticsOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return groupStatisticsBuilder.build(); - } - }); - return result; + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetGroupStatisticsInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() + throws Exception { + final SettableFuture> result = SettableFuture.create(); + + if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { + RpcResult rpcResult = RpcResultBuilder.success( + new GetGroupStatisticsOutputBuilder().build()).build(); + return Futures.immediateFuture(rpcResult); + } else { + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder(); + MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder(); + mprGroupBuild.setGroupId(new GroupId(input.getGroupId().getValue())); + caseBuilder.setMultipartRequestGroup(mprGroupBuild.build()); + + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPGROUP, taskContext, xid); + mprInput.setMultipartRequestBody(caseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { + @Override + public GetGroupStatisticsOutput createResult() { + GetGroupStatisticsOutputBuilder groupStatisticsBuilder = + new GetGroupStatisticsOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return groupStatisticsBuilder.build(); } - } - }; - return task; + }); + return result; + } + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -971,51 +1031,56 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createGetAllMeterConfigStatisticsTask( final OFRpcTaskContext taskContext, final GetAllMeterConfigStatisticsInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { - @Override - public ListenableFuture> call() - throws Exception { - final SettableFuture> result = SettableFuture.create(); - - if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { - RpcResult rpcResult = RpcResultBuilder.success( - new GetAllMeterConfigStatisticsOutputBuilder().build()).build(); - return Futures.immediateFuture(rpcResult); - } else { - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestMeterConfigCaseBuilder caseBuilder = - new MultipartRequestMeterConfigCaseBuilder(); - MultipartRequestMeterConfigBuilder mprMeterConfigBuild = - new MultipartRequestMeterConfigBuilder(); - mprMeterConfigBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong( - org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common - .types.rev130731.Meter.OFPMALL.getIntValue()))); - caseBuilder.setMultipartRequestMeterConfig(mprMeterConfigBuild.build()); - - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPMETERCONFIG, taskContext, xid); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetAllMeterConfigStatisticsOutput createResult() { - GetAllMeterConfigStatisticsOutputBuilder allMeterConfStatBuilder = - new GetAllMeterConfigStatisticsOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return allMeterConfStatBuilder.build(); - } - }); - return result; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetAllMeterConfigStatisticsInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() + throws Exception { + final SettableFuture> result = SettableFuture.create(); + + if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { + RpcResult rpcResult = RpcResultBuilder.success( + new GetAllMeterConfigStatisticsOutputBuilder().build()).build(); + return Futures.immediateFuture(rpcResult); + } else { + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestMeterConfigCaseBuilder caseBuilder = + new MultipartRequestMeterConfigCaseBuilder(); + MultipartRequestMeterConfigBuilder mprMeterConfigBuild = + new MultipartRequestMeterConfigBuilder(); + mprMeterConfigBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong( + org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common + .types.rev130731.Meter.OFPMALL.getIntValue()))); + caseBuilder.setMultipartRequestMeterConfig(mprMeterConfigBuild.build()); + + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPMETERCONFIG, taskContext, xid); + mprInput.setMultipartRequestBody(caseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { + @Override + public GetAllMeterConfigStatisticsOutput createResult() { + GetAllMeterConfigStatisticsOutputBuilder allMeterConfStatBuilder = + new GetAllMeterConfigStatisticsOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return allMeterConfStatBuilder.build(); } - } - }; - return task; + }); + return result; + } + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1027,51 +1092,57 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createGetAllMeterStatisticsTask( final OFRpcTaskContext taskContext, final GetAllMeterStatisticsInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { - @Override - public ListenableFuture> call() - throws Exception { - final SettableFuture> result = SettableFuture.create(); - - if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { - RpcResult rpcResult = RpcResultBuilder.success( - new GetAllMeterStatisticsOutputBuilder().build()).build(); - return Futures.immediateFuture(rpcResult); - } else { - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestMeterCaseBuilder caseBuilder = - new MultipartRequestMeterCaseBuilder(); - MultipartRequestMeterBuilder mprMeterBuild = - new MultipartRequestMeterBuilder(); - mprMeterBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong( - org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common - .types.rev130731.Meter.OFPMALL.getIntValue()))); - caseBuilder.setMultipartRequestMeter(mprMeterBuild.build()); - - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPMETER, taskContext, xid); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetAllMeterStatisticsOutput createResult() { - GetAllMeterStatisticsOutputBuilder allMeterStatBuilder = - new GetAllMeterStatisticsOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return allMeterStatBuilder.build(); - } - }); - return result; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetAllMeterStatisticsInput input) { + super(taskContext, cookie, input); + // TODO Auto-generated constructor stub + } + + @Override + public ListenableFuture> call() + throws Exception { + final SettableFuture> result = SettableFuture.create(); + + if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { + RpcResult rpcResult = RpcResultBuilder.success( + new GetAllMeterStatisticsOutputBuilder().build()).build(); + return Futures.immediateFuture(rpcResult); + } else { + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestMeterCaseBuilder caseBuilder = + new MultipartRequestMeterCaseBuilder(); + MultipartRequestMeterBuilder mprMeterBuild = + new MultipartRequestMeterBuilder(); + mprMeterBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong( + org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common + .types.rev130731.Meter.OFPMALL.getIntValue()))); + caseBuilder.setMultipartRequestMeter(mprMeterBuild.build()); + + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPMETER, taskContext, xid); + mprInput.setMultipartRequestBody(caseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { + @Override + public GetAllMeterStatisticsOutput createResult() { + GetAllMeterStatisticsOutputBuilder allMeterStatBuilder = + new GetAllMeterStatisticsOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return allMeterStatBuilder.build(); } - } - }; - return task; + }); + return result; + } + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1083,45 +1154,51 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createGetMeterFeaturesTask( final OFRpcTaskContext taskContext, final GetMeterFeaturesInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { - @Override - public ListenableFuture> call() - throws Exception { - final SettableFuture> result = SettableFuture.create(); - - if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { - RpcResult rpcResult = RpcResultBuilder.success( - new GetMeterFeaturesOutputBuilder().build()).build(); - return Futures.immediateFuture(rpcResult); - } else { - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestMeterFeaturesCaseBuilder mprMeterFeaturesBuild = - new MultipartRequestMeterFeaturesCaseBuilder(); - - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPMETERFEATURES, taskContext, xid); - mprInput.setMultipartRequestBody(mprMeterFeaturesBuild.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetMeterFeaturesOutput createResult() { - GetMeterFeaturesOutputBuilder meterFeaturesBuilder = - new GetMeterFeaturesOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return meterFeaturesBuilder.build(); - } - }); - return result; + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetMeterFeaturesInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() + throws Exception { + final SettableFuture> result = SettableFuture.create(); + + if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { + RpcResult rpcResult = RpcResultBuilder.success( + new GetMeterFeaturesOutputBuilder().build()).build(); + return Futures.immediateFuture(rpcResult); + } else { + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestMeterFeaturesCaseBuilder mprMeterFeaturesBuild = + new MultipartRequestMeterFeaturesCaseBuilder(); + + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPMETERFEATURES, taskContext, xid); + mprInput.setMultipartRequestBody(mprMeterFeaturesBuild.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { + @Override + public GetMeterFeaturesOutput createResult() { + GetMeterFeaturesOutputBuilder meterFeaturesBuilder = + new GetMeterFeaturesOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return meterFeaturesBuilder.build(); } - } - }; - return task; + }); + return result; + } + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1133,49 +1210,55 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createGetMeterStatisticsTask( final OFRpcTaskContext taskContext, final GetMeterStatisticsInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { - @Override - public ListenableFuture> call() - throws Exception { - final SettableFuture> result = SettableFuture.create(); - - if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { - RpcResult rpcResult = RpcResultBuilder.success( - new GetMeterStatisticsOutputBuilder().build()).build(); - return Futures.immediateFuture(rpcResult); - } else { - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestMeterCaseBuilder caseBuilder = - new MultipartRequestMeterCaseBuilder(); - MultipartRequestMeterBuilder mprMeterBuild = - new MultipartRequestMeterBuilder(); - mprMeterBuild.setMeterId(new MeterId(input.getMeterId().getValue())); - caseBuilder.setMultipartRequestMeter(mprMeterBuild.build()); - - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPMETER, taskContext, xid); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetMeterStatisticsOutput createResult() { - GetMeterStatisticsOutputBuilder meterStatBuilder = - new GetMeterStatisticsOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return meterStatBuilder.build(); - } - }); - return result; + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetMeterStatisticsInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() + throws Exception { + final SettableFuture> result = SettableFuture.create(); + + if (taskContext.getSession().getPrimaryConductor().getVersion() == OFConstants.OFP_VERSION_1_0) { + RpcResult rpcResult = RpcResultBuilder.success( + new GetMeterStatisticsOutputBuilder().build()).build(); + return Futures.immediateFuture(rpcResult); + } else { + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestMeterCaseBuilder caseBuilder = + new MultipartRequestMeterCaseBuilder(); + MultipartRequestMeterBuilder mprMeterBuild = + new MultipartRequestMeterBuilder(); + mprMeterBuild.setMeterId(new MeterId(input.getMeterId().getValue())); + caseBuilder.setMultipartRequestMeter(mprMeterBuild.build()); + + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPMETER, taskContext, xid); + mprInput.setMultipartRequestBody(caseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { + @Override + public GetMeterStatisticsOutput createResult() { + GetMeterStatisticsOutputBuilder meterStatBuilder = + new GetMeterStatisticsOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return meterStatBuilder.build(); } - } - }; - return task; + }); + return result; + } + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1188,44 +1271,49 @@ public abstract class OFRpcTaskFactory { createGetAllNodeConnectorsStatisticsTask( final OFRpcTaskContext taskContext, final GetAllNodeConnectorsStatisticsInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetAllNodeConnectorsStatisticsInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() + throws Exception { + final SettableFuture> result = SettableFuture.create(); + + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestPortStatsCaseBuilder caseBuilder = + new MultipartRequestPortStatsCaseBuilder(); + MultipartRequestPortStatsBuilder mprPortStatsBuilder = + new MultipartRequestPortStatsBuilder(); + // Select all ports + mprPortStatsBuilder.setPortNo(OFConstants.OFPP_ANY); + caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build()); + + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPPORTSTATS, taskContext, xid); + mprInput.setMultipartRequestBody(caseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { @Override - public ListenableFuture> call() - throws Exception { - final SettableFuture> result = SettableFuture.create(); - - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestPortStatsCaseBuilder caseBuilder = - new MultipartRequestPortStatsCaseBuilder(); - MultipartRequestPortStatsBuilder mprPortStatsBuilder = - new MultipartRequestPortStatsBuilder(); - // Select all ports - mprPortStatsBuilder.setPortNo(OFConstants.OFPP_ANY); - caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build()); - - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPPORTSTATS, taskContext, xid); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetAllNodeConnectorsStatisticsOutput createResult() { - GetAllNodeConnectorsStatisticsOutputBuilder allNodeConnectorStatBuilder = - new GetAllNodeConnectorsStatisticsOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return allNodeConnectorStatBuilder.build(); - } - }); - return result; + public GetAllNodeConnectorsStatisticsOutput createResult() { + GetAllNodeConnectorsStatisticsOutputBuilder allNodeConnectorStatBuilder = + new GetAllNodeConnectorsStatisticsOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return allNodeConnectorStatBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1238,47 +1326,52 @@ public abstract class OFRpcTaskFactory { createGetNodeConnectorStatisticsTask( final OFRpcTaskContext taskContext, final GetNodeConnectorStatisticsInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetNodeConnectorStatisticsInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() + throws Exception { + final SettableFuture> result = SettableFuture.create(); + + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestPortStatsCaseBuilder caseBuilder = + new MultipartRequestPortStatsCaseBuilder(); + MultipartRequestPortStatsBuilder mprPortStatsBuilder = + new MultipartRequestPortStatsBuilder(); + // Set specific port + mprPortStatsBuilder + .setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId( + OpenflowVersion.get(taskContext.getSession().getFeatures().getVersion()), + input.getNodeConnectorId())); + caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build()); + + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPPORTSTATS, taskContext, xid); + mprInput.setMultipartRequestBody(caseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { @Override - public ListenableFuture> call() - throws Exception { - final SettableFuture> result = SettableFuture.create(); - - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestPortStatsCaseBuilder caseBuilder = - new MultipartRequestPortStatsCaseBuilder(); - MultipartRequestPortStatsBuilder mprPortStatsBuilder = - new MultipartRequestPortStatsBuilder(); - // Set specific port - mprPortStatsBuilder - .setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId( - OpenflowVersion.get(taskContext.getSession().getFeatures().getVersion()), - input.getNodeConnectorId())); - caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build()); - - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPPORTSTATS, taskContext, xid); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetNodeConnectorStatisticsOutput createResult() { - GetNodeConnectorStatisticsOutputBuilder allNodeConnectorStatBuilder = - new GetNodeConnectorStatisticsOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return allNodeConnectorStatBuilder.build(); - } - }); - return result; + public GetNodeConnectorStatisticsOutput createResult() { + GetNodeConnectorStatisticsOutputBuilder allNodeConnectorStatBuilder = + new GetNodeConnectorStatisticsOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return allNodeConnectorStatBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1292,47 +1385,52 @@ public abstract class OFRpcTaskFactory { final OFRpcTaskContext taskContext, final GetAllFlowStatisticsFromFlowTableInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetAllFlowStatisticsFromFlowTableInput input) { + super(taskContext, cookie, input); + } + @Override + public ListenableFuture> call() throws Exception { + final SettableFuture> result = SettableFuture.create(); + + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder(); + mprFlowRequestBuilder.setTableId(input.getTableId().getValue()); + mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY); + mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY); + mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE); + mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); + FlowCreatorUtil.setWildcardedFlowMatch(taskContext.getSession() + .getPrimaryConductor().getVersion(), mprFlowRequestBuilder); + + MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder(); + multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build()); + + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPFLOW, taskContext, xid); + mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { @Override - public ListenableFuture> call() throws Exception { - final SettableFuture> result = SettableFuture.create(); - - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder(); - mprFlowRequestBuilder.setTableId(input.getTableId().getValue()); - mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY); - mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY); - mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE); - mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); - FlowCreatorUtil.setWildcardedFlowMatch(taskContext.getSession() - .getPrimaryConductor().getVersion(), mprFlowRequestBuilder); - - MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder(); - multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build()); - - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPFLOW, taskContext, xid); - mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetAllFlowStatisticsFromFlowTableOutput createResult() { - GetAllFlowStatisticsFromFlowTableOutputBuilder allFlowStatsFromFlowTableBuilder = - new GetAllFlowStatisticsFromFlowTableOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return allFlowStatsFromFlowTableBuilder.build(); - } - }); - return result; + public GetAllFlowStatisticsFromFlowTableOutput createResult() { + GetAllFlowStatisticsFromFlowTableOutputBuilder allFlowStatsFromFlowTableBuilder = + new GetAllFlowStatisticsFromFlowTableOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return allFlowStatsFromFlowTableBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1346,51 +1444,55 @@ public abstract class OFRpcTaskFactory { final OFRpcTaskContext taskContext, final GetAllFlowsStatisticsFromAllFlowTablesInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetAllFlowsStatisticsFromAllFlowTablesInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() throws Exception { + final SettableFuture> result = SettableFuture.create(); + + final Long xid = taskContext.getSession().getNextXid(); + // Create multipart request body for fetch all the group stats + MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = + new MultipartRequestFlowCaseBuilder(); + MultipartRequestFlowBuilder mprFlowRequestBuilder = + new MultipartRequestFlowBuilder(); + mprFlowRequestBuilder.setTableId(OFConstants.OFPTT_ALL); + mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY); + mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY); + mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE); + mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); + FlowCreatorUtil.setWildcardedFlowMatch(taskContext.getSession() + .getPrimaryConductor().getVersion(), mprFlowRequestBuilder); + + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPFLOW, taskContext, xid); + multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build()); + mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { @Override - public ListenableFuture> call() throws Exception { - final SettableFuture> result = SettableFuture.create(); - - final Long xid = taskContext.getSession().getNextXid(); - - // Create multipart request body for fetch all the group stats - MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = - new MultipartRequestFlowCaseBuilder(); - MultipartRequestFlowBuilder mprFlowRequestBuilder = - new MultipartRequestFlowBuilder(); - mprFlowRequestBuilder.setTableId(OFConstants.OFPTT_ALL); - mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY); - mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY); - mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE); - mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); - FlowCreatorUtil.setWildcardedFlowMatch(taskContext.getSession() - .getPrimaryConductor().getVersion(), mprFlowRequestBuilder); - - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPFLOW, taskContext, xid); - multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build()); - mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetAllFlowsStatisticsFromAllFlowTablesOutput createResult() { - GetAllFlowsStatisticsFromAllFlowTablesOutputBuilder allFlowStatsFromAllFlowTableBuilder = - new GetAllFlowsStatisticsFromAllFlowTablesOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return allFlowStatsFromAllFlowTableBuilder.build(); - } - }); - return result; + public GetAllFlowsStatisticsFromAllFlowTablesOutput createResult() { + GetAllFlowsStatisticsFromAllFlowTablesOutputBuilder allFlowStatsFromAllFlowTableBuilder = + new GetAllFlowsStatisticsFromAllFlowTablesOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return allFlowStatsFromAllFlowTableBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1403,67 +1505,77 @@ public abstract class OFRpcTaskFactory { createGetFlowStatisticsFromFlowTableTask( final OFRpcTaskContext taskContext, final GetFlowStatisticsFromFlowTableInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetFlowStatisticsFromFlowTableInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() throws Exception { + final SettableFuture> result = SettableFuture.create(); + + final Long xid = taskContext.getSession().getNextXid(); + + // Create multipart request body for fetch all the group stats + MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder(); + MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder(); + mprFlowRequestBuilder.setTableId(input.getTableId()); + + if (input.getOutPort() != null) { + mprFlowRequestBuilder.setOutPort(input.getOutPort().longValue()); + } else { + mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY); + } + + if (input.getOutGroup() != null) { + mprFlowRequestBuilder.setOutGroup(input.getOutGroup()); + } else { + mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY); + } + + if (input.getCookie() != null) { + mprFlowRequestBuilder.setCookie(input.getCookie().getValue()); + } else { + mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE); + } + + if (input.getCookieMask() != null) { + mprFlowRequestBuilder.setCookieMask(input.getCookieMask().getValue()); + } else { + mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); + } + + // convert and inject match + MatchReactor.getInstance().convert(input.getMatch(), taskContext.getSession() + .getPrimaryConductor().getVersion(), mprFlowRequestBuilder, + taskContext.getSession().getFeatures().getDatapathId()); + + // Set request body to main multipart request + multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build()); + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPFLOW, taskContext, xid); + mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { @Override - public ListenableFuture> call() throws Exception { - final SettableFuture> result = SettableFuture.create(); - - final Long xid = taskContext.getSession().getNextXid(); - - // Create multipart request body for fetch all the group stats - MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder(); - MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder(); - mprFlowRequestBuilder.setTableId(input.getTableId()); - - if (input.getOutPort() != null) - mprFlowRequestBuilder.setOutPort(input.getOutPort().longValue()); - else - mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY); - - if (input.getOutGroup() != null) - mprFlowRequestBuilder.setOutGroup(input.getOutGroup()); - else - mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY); - - if (input.getCookie() != null) - mprFlowRequestBuilder.setCookie(input.getCookie().getValue()); - else - mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE); - - if (input.getCookieMask() != null) - mprFlowRequestBuilder.setCookieMask(input.getCookieMask().getValue()); - else - mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); - - // convert and inject match - MatchReactor.getInstance().convert(input.getMatch(), taskContext.getSession() - .getPrimaryConductor().getVersion(), mprFlowRequestBuilder, - taskContext.getSession().getFeatures().getDatapathId()); - - // Set request body to main multipart request - multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build()); - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPFLOW, taskContext, xid); - mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetFlowStatisticsFromFlowTableOutput createResult() { - GetFlowStatisticsFromFlowTableOutputBuilder flowStatsFromFlowTableBuilder = - new GetFlowStatisticsFromFlowTableOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return flowStatsFromFlowTableBuilder.build(); - } - }); - return result; + public GetFlowStatisticsFromFlowTableOutput createResult() { + GetFlowStatisticsFromFlowTableOutputBuilder flowStatsFromFlowTableBuilder = + new GetFlowStatisticsFromFlowTableOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return flowStatsFromFlowTableBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1476,49 +1588,54 @@ public abstract class OFRpcTaskFactory { createGetAggregateFlowStatisticsFromFlowTableForAllFlowsTask( final OFRpcTaskContext taskContext, final GetAggregateFlowStatisticsFromFlowTableForAllFlowsInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetAggregateFlowStatisticsFromFlowTableForAllFlowsInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() throws Exception { + final SettableFuture> result = SettableFuture.create(); + + final Long xid = taskContext.getSession().getNextXid(); + // Create multipart request body for fetch all the group stats + MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder(); + MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder(); + mprAggregateRequestBuilder.setTableId(input.getTableId().getValue()); + mprAggregateRequestBuilder.setOutPort(OFConstants.OFPP_ANY); + mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY); + mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE); + mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); + + FlowCreatorUtil.setWildcardedFlowMatch(taskContext.getSession() + .getPrimaryConductor().getVersion(), mprAggregateRequestBuilder); + + // Set request body to main multipart request + multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder.build()); + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPAGGREGATE, taskContext, xid); + mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { @Override - public ListenableFuture> call() throws Exception { - final SettableFuture> result = SettableFuture.create(); - - final Long xid = taskContext.getSession().getNextXid(); - - // Create multipart request body for fetch all the group stats - MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder(); - MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder(); - mprAggregateRequestBuilder.setTableId(input.getTableId().getValue()); - mprAggregateRequestBuilder.setOutPort(OFConstants.OFPP_ANY); - mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY); - mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE); - mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); - - FlowCreatorUtil.setWildcardedFlowMatch(taskContext.getSession() - .getPrimaryConductor().getVersion(), mprAggregateRequestBuilder); - - // Set request body to main multipart request - multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder.build()); - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPAGGREGATE, taskContext, xid); - mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput createResult() { - GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutputBuilder flowStatsFromFlowTableBuilder = - new GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return flowStatsFromFlowTableBuilder.build(); - } - }); - return result; + public GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput createResult() { + GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutputBuilder flowStatsFromFlowTableBuilder = + new GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return flowStatsFromFlowTableBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1531,60 +1648,65 @@ public abstract class OFRpcTaskFactory { createGetAggregateFlowStatisticsFromFlowTableForGivenMatchTask( final OFRpcTaskContext taskContext, final GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { - @Override - public ListenableFuture> call() throws Exception { - final SettableFuture> result = SettableFuture.create(); - - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder(); - MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder(); - mprAggregateRequestBuilder.setTableId(input.getTableId()); - mprAggregateRequestBuilder.setOutPort(input.getOutPort().longValue()); - // TODO: repeating code - if (taskContext.getSession().getPrimaryConductor().getVersion() == - OFConstants.OFP_VERSION_1_3) { - mprAggregateRequestBuilder.setCookie(input.getCookie().getValue()); - mprAggregateRequestBuilder.setCookieMask(input.getCookieMask().getValue()); - mprAggregateRequestBuilder.setOutGroup(input.getOutGroup()); - } else { - mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY); - mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE); - mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); - } + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput input) { + super(taskContext, cookie, input); + } - MatchReactor.getInstance().convert(input.getMatch(), taskContext.getSession() - .getPrimaryConductor().getVersion(), mprAggregateRequestBuilder, - taskContext.getSession().getFeatures().getDatapathId()); - - FlowCreatorUtil.setWildcardedFlowMatch(taskContext.getSession() - .getPrimaryConductor().getVersion(), mprAggregateRequestBuilder); - - // Set request body to main multipart request - multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder.build()); - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPAGGREGATE, taskContext, xid); - mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutput createResult() { - GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutputBuilder aggregFlowStatsFromFlowTableBuilder = - new GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return aggregFlowStatsFromFlowTableBuilder.build(); - } - }); - return result; + @Override + public ListenableFuture> call() throws Exception { + final SettableFuture> result = SettableFuture.create(); + + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder(); + MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder(); + mprAggregateRequestBuilder.setTableId(input.getTableId()); + mprAggregateRequestBuilder.setOutPort(input.getOutPort().longValue()); + // TODO: repeating code + if (taskContext.getSession().getPrimaryConductor().getVersion() == + OFConstants.OFP_VERSION_1_3) { + mprAggregateRequestBuilder.setCookie(input.getCookie().getValue()); + mprAggregateRequestBuilder.setCookieMask(input.getCookieMask().getValue()); + mprAggregateRequestBuilder.setOutGroup(input.getOutGroup()); + } else { + mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY); + mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE); + mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); + } + + MatchReactor.getInstance().convert(input.getMatch(), taskContext.getSession() + .getPrimaryConductor().getVersion(), mprAggregateRequestBuilder, + taskContext.getSession().getFeatures().getDatapathId()); + + FlowCreatorUtil.setWildcardedFlowMatch(taskContext.getSession() + .getPrimaryConductor().getVersion(), mprAggregateRequestBuilder); + + // Set request body to main multipart request + multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder.build()); + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPAGGREGATE, taskContext, xid); + mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { + @Override + public GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutput createResult() { + GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutputBuilder aggregFlowStatsFromFlowTableBuilder = + new GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return aggregFlowStatsFromFlowTableBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1595,42 +1717,48 @@ public abstract class OFRpcTaskFactory { */ public static OFRpcTask> createGetFlowTablesStatisticsTask( final OFRpcTaskContext taskContext, final GetFlowTablesStatisticsInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetFlowTablesStatisticsInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() throws Exception { + final SettableFuture> result = SettableFuture.create(); + + final Long xid = taskContext.getSession().getNextXid(); + + // Create multipart request body for fetch all the group stats + MultipartRequestTableCaseBuilder multipartRequestTableCaseBuilder = new MultipartRequestTableCaseBuilder(); + MultipartRequestTableBuilder multipartRequestTableBuilder = new MultipartRequestTableBuilder(); + multipartRequestTableBuilder.setEmpty(true); + multipartRequestTableCaseBuilder.setMultipartRequestTable(multipartRequestTableBuilder.build()); + + // Set request body to main multipart request + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPTABLE, taskContext, xid); + mprInput.setMultipartRequestBody(multipartRequestTableCaseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { @Override - public ListenableFuture> call() throws Exception { - final SettableFuture> result = SettableFuture.create(); - - final Long xid = taskContext.getSession().getNextXid(); - - // Create multipart request body for fetch all the group stats - MultipartRequestTableCaseBuilder multipartRequestTableCaseBuilder = new MultipartRequestTableCaseBuilder(); - MultipartRequestTableBuilder multipartRequestTableBuilder = new MultipartRequestTableBuilder(); - multipartRequestTableBuilder.setEmpty(true); - multipartRequestTableCaseBuilder.setMultipartRequestTable(multipartRequestTableBuilder.build()); - - // Set request body to main multipart request - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPTABLE, taskContext, xid); - mprInput.setMultipartRequestBody(multipartRequestTableCaseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetFlowTablesStatisticsOutput createResult() { - GetFlowTablesStatisticsOutputBuilder flowTableStatsBuilder = - new GetFlowTablesStatisticsOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return flowTableStatsBuilder.build(); - } - }); - return result; + public GetFlowTablesStatisticsOutput createResult() { + GetFlowTablesStatisticsOutputBuilder flowTableStatsBuilder = + new GetFlowTablesStatisticsOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return flowTableStatsBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1641,44 +1769,50 @@ public abstract class OFRpcTaskFactory { */ public static OFRpcTask> createGetAllQueuesStatisticsFromAllPortsTask( final OFRpcTaskContext taskContext, final GetAllQueuesStatisticsFromAllPortsInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetAllQueuesStatisticsFromAllPortsInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() throws Exception { + final SettableFuture> result = SettableFuture.create(); + + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder(); + MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder(); + // Select all ports + mprQueueBuilder.setPortNo(OFConstants.OFPP_ANY); + // Select all the ports + mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY); + caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build()); + + // Set request body to main multipart request + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPQUEUE, taskContext, xid); + mprInput.setMultipartRequestBody(caseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { @Override - public ListenableFuture> call() throws Exception { - final SettableFuture> result = SettableFuture.create(); - - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder(); - MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder(); - // Select all ports - mprQueueBuilder.setPortNo(OFConstants.OFPP_ANY); - // Select all the ports - mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY); - caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build()); - - // Set request body to main multipart request - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPQUEUE, taskContext, xid); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetAllQueuesStatisticsFromAllPortsOutput createResult() { - GetAllQueuesStatisticsFromAllPortsOutputBuilder allQueueStatsBuilder = - new GetAllQueuesStatisticsFromAllPortsOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return allQueueStatsBuilder.build(); - } - }); - return result; + public GetAllQueuesStatisticsFromAllPortsOutput createResult() { + GetAllQueuesStatisticsFromAllPortsOutputBuilder allQueueStatsBuilder = + new GetAllQueuesStatisticsFromAllPortsOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return allQueueStatsBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1689,46 +1823,52 @@ public abstract class OFRpcTaskFactory { */ public static OFRpcTask> createGetAllQueuesStatisticsFromGivenPortTask( final OFRpcTaskContext taskContext, final GetAllQueuesStatisticsFromGivenPortInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { - @Override - public ListenableFuture> call() throws Exception { - final SettableFuture> result = SettableFuture.create(); + class OFRpcTaskImpl extends OFRpcTask> { - final Long xid = taskContext.getSession().getNextXid(); + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetAllQueuesStatisticsFromGivenPortInput input) { + super(taskContext, cookie, input); + } - MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder(); - MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder(); - // Select all queues - mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY); - // Select specific port - mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId( - OpenflowVersion.get(taskContext.getSession().getFeatures().getVersion()), - input.getNodeConnectorId())); - caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build()); - - // Set request body to main multipart request - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPQUEUE, taskContext, xid); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetAllQueuesStatisticsFromGivenPortOutput createResult() { - GetAllQueuesStatisticsFromGivenPortOutputBuilder allQueueStatsBuilder = - new GetAllQueuesStatisticsFromGivenPortOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return allQueueStatsBuilder.build(); - } - }); - return result; + @Override + public ListenableFuture> call() throws Exception { + final SettableFuture> result = SettableFuture.create(); + + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder(); + MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder(); + // Select all queues + mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY); + // Select specific port + mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId( + OpenflowVersion.get(taskContext.getSession().getFeatures().getVersion()), + input.getNodeConnectorId())); + caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build()); + + // Set request body to main multipart request + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPQUEUE, taskContext, xid); + mprInput.setMultipartRequestBody(caseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { + @Override + public GetAllQueuesStatisticsFromGivenPortOutput createResult() { + GetAllQueuesStatisticsFromGivenPortOutputBuilder allQueueStatsBuilder = + new GetAllQueuesStatisticsFromGivenPortOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return allQueueStatsBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1739,46 +1879,52 @@ public abstract class OFRpcTaskFactory { */ public static OFRpcTask> createGetQueueStatisticsFromGivenPortTask( final OFRpcTaskContext taskContext, final GetQueueStatisticsFromGivenPortInput input, SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { - @Override - public ListenableFuture> call() throws Exception { - final SettableFuture> result = SettableFuture.create(); + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + GetQueueStatisticsFromGivenPortInput input) { + super(taskContext, cookie, input); + } - final Long xid = taskContext.getSession().getNextXid(); + @Override + public ListenableFuture> call() throws Exception { + final SettableFuture> result = SettableFuture.create(); - MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder(); - MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder(); - // Select specific queue - mprQueueBuilder.setQueueId(input.getQueueId().getValue()); - // Select specific port - mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId( - OpenflowVersion.get(taskContext.getSession().getFeatures().getVersion()), - input.getNodeConnectorId())); - caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build()); - - // Set request body to main multipart request - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPQUEUE, taskContext, xid); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public GetQueueStatisticsFromGivenPortOutput createResult() { - GetQueueStatisticsFromGivenPortOutputBuilder queueStatsFromPortBuilder = - new GetQueueStatisticsFromGivenPortOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return queueStatsFromPortBuilder.build(); - } - }); - return result; + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder(); + MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder(); + // Select specific queue + mprQueueBuilder.setQueueId(input.getQueueId().getValue()); + // Select specific port + mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId( + OpenflowVersion.get(taskContext.getSession().getFeatures().getVersion()), + input.getNodeConnectorId())); + caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build()); + + // Set request body to main multipart request + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPQUEUE, taskContext, xid); + mprInput.setMultipartRequestBody(caseBuilder.build()); + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { + @Override + public GetQueueStatisticsFromGivenPortOutput createResult() { + GetQueueStatisticsFromGivenPortOutputBuilder queueStatsFromPortBuilder = + new GetQueueStatisticsFromGivenPortOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return queueStatsFromPortBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } static MultipartRequestInputBuilder createMultipartHeader(MultipartType multipart, @@ -1791,7 +1937,7 @@ public abstract class OFRpcTaskFactory { return mprInput; } - private static abstract class ResultCallback implements FutureCallback> { + private abstract static class ResultCallback implements FutureCallback> { private SettableFuture> result; @@ -1829,31 +1975,35 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createUpdatePortTask( final OFRpcTaskContext taskContext, final UpdatePortInput input, final SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { - @Override - public ListenableFuture> call() { - ListenableFuture> result = SettableFuture.create(); - final Long xid = taskContext.getSession().getNextXid(); - Port inputPort = input.getUpdatedPort().getPort().getPort().get(0); + class OFRpcTaskImpl extends OFRpcTask> { - PortModInput ofPortModInput = PortConvertor.toPortModInput(inputPort, - taskContext.getSession().getPrimaryConductor().getVersion()); + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + UpdatePortInput input) { + super(taskContext, cookie, input); + } - PortModInputBuilder mdInput = new PortModInputBuilder(ofPortModInput); - mdInput.setXid(xid); + @Override + public ListenableFuture> call() { + ListenableFuture> result = SettableFuture.create(); + final Long xid = taskContext.getSession().getNextXid(); + Port inputPort = input.getUpdatedPort().getPort().getPort().get(0); - Future> resultFromOFLib = getMessageService() - .portMod(mdInput.build(), cookie); - result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + PortModInput ofPortModInput = PortConvertor.toPortModInput(inputPort, + taskContext.getSession().getPrimaryConductor().getVersion()); - return result; - } - }; + PortModInputBuilder mdInput = new PortModInputBuilder(ofPortModInput); + mdInput.setXid(xid); + + Future> resultFromOFLib = getMessageService() + .portMod(mdInput.build(), cookie); + result = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - return task; + return result; + } + } + return new OFRpcTaskImpl(taskContext, cookie, input); } /** @@ -1865,50 +2015,62 @@ public abstract class OFRpcTaskFactory { public static OFRpcTask> createUpdateTableTask( final OFRpcTaskContext taskContext, final UpdateTableInput input, final SwitchConnectionDistinguisher cookie) { - OFRpcTask> task = - new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + UpdateTableInput input) { + super(taskContext, cookie, input); + } + + @Override + public ListenableFuture> call() { + final SettableFuture> result = SettableFuture.create(); + + final Long xid = taskContext.getSession().getNextXid(); + + MultipartRequestTableFeaturesCaseBuilder caseBuilder = new MultipartRequestTableFeaturesCaseBuilder(); + MultipartRequestTableFeaturesBuilder requestBuilder = new MultipartRequestTableFeaturesBuilder(); + List ofTableFeatureList = TableFeaturesConvertor + .toTableFeaturesRequest(input.getUpdatedTable()); + requestBuilder.setTableFeatures(ofTableFeatureList); + caseBuilder.setMultipartRequestTableFeatures(requestBuilder.build()); + + // Set request body to main multipart request + MultipartRequestInputBuilder mprInput = + createMultipartHeader(MultipartType.OFPMPTABLEFEATURES, taskContext, xid); + mprInput.setMultipartRequestBody(caseBuilder.build()); + + Future> resultFromOFLib = getMessageService() + .multipartRequest(mprInput.build(), getCookie()); + ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); + + Futures.addCallback(resultLib, new ResultCallback(result) { @Override - public ListenableFuture> call() { - final SettableFuture> result = SettableFuture.create(); - - final Long xid = taskContext.getSession().getNextXid(); - - MultipartRequestTableFeaturesCaseBuilder caseBuilder = new MultipartRequestTableFeaturesCaseBuilder(); - MultipartRequestTableFeaturesBuilder requestBuilder = new MultipartRequestTableFeaturesBuilder(); - List ofTableFeatureList = TableFeaturesConvertor - .toTableFeaturesRequest(input.getUpdatedTable()); - requestBuilder.setTableFeatures(ofTableFeatureList); - caseBuilder.setMultipartRequestTableFeatures(requestBuilder.build()); - - // Set request body to main multipart request - MultipartRequestInputBuilder mprInput = - createMultipartHeader(MultipartType.OFPMPTABLEFEATURES, taskContext, xid); - mprInput.setMultipartRequestBody(caseBuilder.build()); - - Future> resultFromOFLib = getMessageService() - .multipartRequest(mprInput.build(), getCookie()); - ListenableFuture> resultLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - - Futures.addCallback(resultLib, new ResultCallback(result) { - @Override - public UpdateTableOutput createResult() { - UpdateTableOutputBuilder queueStatsFromPortBuilder = - new UpdateTableOutputBuilder() - .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); - return queueStatsFromPortBuilder.build(); - } - }); - return result; + public UpdateTableOutput createResult() { + UpdateTableOutputBuilder queueStatsFromPortBuilder = + new UpdateTableOutputBuilder() + .setTransactionId(new TransactionId(BigInteger.valueOf(xid))); + return queueStatsFromPortBuilder.build(); } - }; - return task; + }); + return result; + } + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } public static OFRpcTask> createSetNodeConfigTask(final OFRpcTaskContext taskContext, final SetConfigInput input, final SwitchConnectionDistinguisher cookie) { - OFRpcTask> rpcTask = new OFRpcTask>(taskContext, cookie, input) { + class OFRpcTaskImpl extends OFRpcTask> { + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, + SetConfigInput input) { + super(taskContext, cookie, input); + } + @Override public ListenableFuture> call() throws Exception { @@ -1932,7 +2094,8 @@ public abstract class OFRpcTaskFactory { }); return result; } - }; - return rpcTask; + } + + return new OFRpcTaskImpl(taskContext, cookie, input); } } -- 2.36.6