From 7f4b511776bcdeab7d965ec78fc4a6d5b626ef47 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Tue, 12 Jul 2016 13:59:50 +0200 Subject: [PATCH] Bug 5540 - Remove ConvertorManager singleton - Removed singleton from ConvertorManager - Added ConvertorManagerFactory - Now ConvertorManager lookup is also based on Openflow version - New test for ConvertorManager Change-Id: Ib23fa304143d6e2fb7f09781acc1fd0c6a3be5e8 Signed-off-by: Tomas Slusny --- .../impl/LifecycleConductorImpl.java | 9 +- .../impl/OpenFlowPluginProviderImpl.java | 13 +- .../common/NodeStaticReplyTranslatorUtil.java | 14 +- .../impl/device/DeviceManagerImpl.java | 8 +- .../AbstractMultipartOnTheFlyService.java | 9 +- .../impl/services/FlowService.java | 15 +- .../impl/services/GroupService.java | 16 +- .../impl/services/MeterService.java | 12 +- .../MultipartRequestOnTheFlyCallback.java | 10 +- .../services/PacketProcessingServiceImpl.java | 9 +- .../impl/services/SalFlowServiceImpl.java | 9 +- .../impl/services/SalGroupServiceImpl.java | 9 +- .../impl/services/SalMeterServiceImpl.java | 9 +- .../impl/services/SalPortServiceImpl.java | 13 +- .../impl/services/SalTableServiceImpl.java | 19 +- ...SinglePurposeMultipartReplyTranslator.java | 100 ++++---- .../statistics/StatisticsContextImpl.java | 23 +- .../statistics/StatisticsGatheringUtils.java | 11 +- .../statistics/StatisticsManagerImpl.java | 8 +- .../services/AllFlowsInAllTablesService.java | 7 +- .../services/AllFlowsInTableService.java | 7 +- .../services/AllGroupsStatsService.java | 8 +- .../services/AllMeterConfigStatsService.java | 12 +- .../services/AllMeterStatsService.java | 8 +- .../services/FlowsInTableService.java | 10 +- .../services/GroupDescriptionService.java | 8 +- .../services/GroupStatsService.java | 8 +- .../services/MatchingFlowsInTableService.java | 8 +- .../services/MeterStatsService.java | 8 +- ...OpendaylightFlowStatisticsServiceImpl.java | 9 +- ...pendaylightGroupStatisticsServiceImpl.java | 10 +- ...pendaylightMeterStatisticsServiceImpl.java | 10 +- ...owStatisticsToNotificationTransformer.java | 8 +- ...upStatisticsToNotificationTransformer.java | 12 +- ...erStatisticsToNotificationTransformer.java | 10 +- ...ightFlowStatisticsServiceDelegateImpl.java | 10 +- .../StatisticsGatheringOnTheFlyService.java | 5 +- .../AbstractDirectStatisticsService.java | 12 +- .../direct/FlowDirectStatisticsService.java | 20 +- .../direct/GroupDirectStatisticsService.java | 18 +- .../direct/MeterDirectStatisticsService.java | 16 +- .../NodeConnectorDirectStatisticsService.java | 9 +- .../direct/QueueDirectStatisticsService.java | 9 +- .../translator/FlowRemovedTranslator.java | 13 +- .../translator/FlowRemovedV10Translator.java | 8 +- .../translator/PacketReceivedTranslator.java | 12 +- .../impl/util/DeviceInitializationUtils.java | 28 ++- .../impl/util/MdSalRegistrationUtils.java | 48 ++-- .../impl/util/TranslatorLibraryUtil.java | 16 +- .../impl/LifecycleConductorImplTest.java | 5 +- .../impl/device/DeviceManagerImplTest.java | 5 +- .../MultipartRequestOnTheFlyCallbackTest.java | 7 +- .../PacketProcessingServiceImplTest.java | 5 +- .../impl/services/SalFlowServiceImplTest.java | 5 +- .../services/SalGroupServiceImplTest.java | 5 +- .../services/SalMeterServiceImplTest.java | 5 +- .../impl/services/SalPortServiceImplTest.java | 5 +- .../services/SalTableServiceImplTest.java | 5 +- ...lePurposeMultipartReplyTranslatorTest.java | 11 +- .../StatisticsContextImpMockInitiation.java | 1 - .../StatisticsContextImplParamTest.java | 6 +- .../statistics/StatisticsContextImplTest.java | 8 +- .../StatisticsGatheringUtilsTest.java | 15 +- .../statistics/StatisticsManagerImplTest.java | 5 +- .../services/AbstractStatsServiceTest.java | 1 - ...aylightFlowStatisticsServiceImpl1Test.java | 5 +- ...aylightFlowStatisticsServiceImpl2Test.java | 5 +- ...aylightFlowStatisticsServiceImpl3Test.java | 5 +- ...aylightGroupStatisticsServiceImplTest.java | 5 +- ...aylightMeterStatisticsServiceImplTest.java | 5 +- ...FlowStatisticsServiceDelegateImplTest.java | 5 +- ...tatisticsGatheringOnTheFlyServiceTest.java | 5 +- .../AbstractDirectStatisticsServiceTest.java | 5 + .../FlowDirectStatisticsServiceTest.java | 2 +- .../GroupDirectStatisticsServiceTest.java | 2 +- .../MeterDirectStatisticsServiceTest.java | 2 +- ...eConnectorDirectStatisticsServiceTest.java | 2 +- .../QueueDirectStatisticsServiceTest.java | 2 +- .../translator/FlowRemovedTranslatorTest.java | 7 +- .../PacketReceivedTranslatorTest.java | 10 +- .../util/DeviceInitializationUtilsTest.java | 22 +- .../impl/util/MdSalRegistrationUtilsTest.java | 6 +- .../impl/util/TranslatorLibratyUtilTest.java | 5 +- .../openflow/md/core/MDController.java | 18 +- .../md/core/sal/ModelDrivenSwitchImpl.java | 34 +-- .../md/core/sal/OFRpcTaskFactory.java | 221 +++++++++++------- .../md/core/sal/OpenflowPluginProvider.java | 8 +- .../md/core/sal/SalRegistrationManager.java | 7 +- .../core/sal/convertor/ConvertorManager.java | 168 ++++++------- .../convertor/ConvertorManagerFactory.java | 83 +++++++ .../sal/convertor/ConvertorRegistrator.java | 3 +- .../md/core/sal/convertor/GroupConvertor.java | 9 +- .../GroupDescStatsResponseConvertor.java | 6 +- .../GroupStatsResponseConvertor.java | 5 +- .../MeterConfigStatsResponseConvertor.java | 6 +- .../md/core/sal/convertor/MeterConvertor.java | 4 +- .../MeterStatsResponseConvertor.java | 6 +- .../sal/convertor/PacketOutConvertor.java | 6 +- .../md/core/sal/convertor/PortConvertor.java | 4 +- .../sal/convertor/TableFeaturesConvertor.java | 5 +- .../TableFeaturesResponseConvertor.java | 5 +- .../sal/convertor/action/ActionConvertor.java | 6 +- .../action/ActionResponseConvertor.java | 6 +- .../action/cases/OfToSalCopyTtlInCase.java | 3 +- .../action/cases/OfToSalCopyTtlOutCase.java | 3 +- .../action/cases/OfToSalDecMplsTtlCase.java | 3 +- .../action/cases/OfToSalDecNwTtlCase.java | 3 +- .../action/cases/OfToSalGroupCase.java | 3 +- .../action/cases/OfToSalOutputActionCase.java | 3 +- .../action/cases/OfToSalPopMplsCase.java | 3 +- .../action/cases/OfToSalPopPbbCase.java | 3 +- .../action/cases/OfToSalPopVlanCase.java | 3 +- .../action/cases/OfToSalPushMplsCase.java | 3 +- .../action/cases/OfToSalPushPbbCase.java | 3 +- .../action/cases/OfToSalPushVlanCase.java | 3 +- .../action/cases/OfToSalSetFieldCase.java | 6 +- .../action/cases/OfToSalSetMplsTtlCase.java | 3 +- .../action/cases/OfToSalSetNwDstCase.java | 3 +- .../action/cases/OfToSalSetNwTtlCase.java | 3 +- .../action/cases/OfToSalSetQueueCase.java | 3 +- .../action/cases/OfToSalStripVlanCase.java | 3 +- .../action/cases/SalToOfCopyTtlInCase.java | 3 +- .../action/cases/SalToOfCopyTtlOutCase.java | 3 +- .../action/cases/SalToOfDecMplsTtlCase.java | 3 +- .../action/cases/SalToOfDecNwTtlCase.java | 3 +- .../action/cases/SalToOfDropActionCase.java | 3 +- .../SalToOfGeneralExtensionGroupingCase.java | 3 +- .../action/cases/SalToOfGroupActionCase.java | 3 +- .../action/cases/SalToOfOutputActionCase.java | 3 +- .../cases/SalToOfPopMplsActionCase.java | 3 +- .../action/cases/SalToOfPopPbbActionCase.java | 3 +- .../cases/SalToOfPopVlanActionCase.java | 3 +- .../cases/SalToOfPopVlanActionV10Case.java | 3 +- .../cases/SalToOfPushMplsActionCase.java | 3 +- .../cases/SalToOfPushPbbActionCase.java | 3 +- .../cases/SalToOfPushVlanActionCase.java | 3 +- .../cases/SalToOfSetDlDstActionCase.java | 3 +- .../cases/SalToOfSetDlDstActionV10Case.java | 3 +- .../cases/SalToOfSetDlSrcActionCase.java | 3 +- .../cases/SalToOfSetDlSrcActionV10Case.java | 3 +- .../action/cases/SalToOfSetFieldCase.java | 5 +- .../action/cases/SalToOfSetFieldV10Case.java | 3 +- .../cases/SalToOfSetMplsTtlActionCase.java | 3 +- .../cases/SalToOfSetNwDstActionCase.java | 3 +- .../cases/SalToOfSetNwDstActionV10Case.java | 3 +- .../cases/SalToOfSetNwSrcActionCase.java | 3 +- .../cases/SalToOfSetNwSrcActionV10Case.java | 3 +- .../cases/SalToOfSetNwTosActionCase.java | 3 +- .../cases/SalToOfSetNwTosActionV10Case.java | 3 +- .../cases/SalToOfSetNwTtlActionCase.java | 3 +- .../cases/SalToOfSetQueueActionCase.java | 3 +- .../cases/SalToOfSetTpDstActionCase.java | 3 +- .../cases/SalToOfSetTpDstActionV10Case.java | 3 +- .../cases/SalToOfSetTpSrcActionCase.java | 3 +- .../cases/SalToOfSetTpSrcActionV10Case.java | 3 +- .../cases/SalToOfSetVlanIdActionCase.java | 3 +- .../cases/SalToOfSetVlanIdActionV10Case.java | 3 +- .../cases/SalToOfSetVlanPcpActionCase.java | 3 +- .../cases/SalToOfSetVlanPcpActionV10Case.java | 3 +- .../cases/SalToOfStripVlanActionCase.java | 3 +- .../cases/SalToOfStripVlanActionV10Case.java | 3 +- .../action/cases/SalToOfVendorCodecCase.java | 3 +- .../sal/convertor/common/ConvertReactor.java | 30 +-- .../common/ConvertReactorConvertor.java | 28 +++ .../core/sal/convertor/common/Convertor.java | 28 ++- .../sal/convertor/common/ConvertorCase.java | 11 +- .../{InjectionKey.java => ConvertorKey.java} | 11 +- .../convertor/common/ConvertorProcessor.java | 33 ++- .../data/VersionDatapathIdConvertorData.java | 3 +- .../sal/convertor/flow/FlowConvertor.java | 24 +- .../FlowInstructionResponseConvertor.java | 9 +- .../flow/FlowStatsResponseConvertor.java | 17 +- .../flow/cases/ApplyActionsCase.java | 7 +- .../flow/cases/ClearActionsCase.java | 3 +- .../convertor/flow/cases/GoToTableCase.java | 3 +- .../sal/convertor/flow/cases/MeterCase.java | 3 +- .../flow/cases/WriteActionsCase.java | 7 +- .../flow/cases/WriteMetadataCase.java | 3 +- .../flow/flowflag/FlowFlagConvertor.java | 23 +- .../flow/flowflag/FlowFlagReactor.java | 8 +- .../FlowFlagReactorMappingFactory.java | 12 +- .../flow/flowflag/FlowFlagsConvertorImpl.java | 3 +- .../flowflag/FlowFlagsConvertorV10Impl.java | 3 +- .../sal/convertor/match/MatchConvertor.java | 23 +- .../convertor/match/MatchConvertorImpl.java | 15 +- .../match/MatchConvertorV10Impl.java | 4 +- .../sal/convertor/match/MatchReactor.java | 8 +- .../match/MatchReactorMappingFactory.java | 22 +- .../match/MatchResponseConvertor.java | 8 +- .../match/MatchV10ResponseConvertor.java | 4 +- .../match/cases/OfToSalArpOpCase.java | 3 +- .../match/cases/OfToSalArpShaCase.java | 3 +- .../match/cases/OfToSalArpSpaCase.java | 3 +- .../match/cases/OfToSalArpThaCase.java | 3 +- .../match/cases/OfToSalArpTpaCase.java | 3 +- .../match/cases/OfToSalEthDstCase.java | 3 +- .../match/cases/OfToSalEthSrcCase.java | 3 +- .../match/cases/OfToSalEthTypeCase.java | 3 +- .../cases/OfToSalExperimenterIdCase.java | 3 +- .../match/cases/OfToSalIcmpv4CodeCase.java | 3 +- .../match/cases/OfToSalIcmpv4TypeCase.java | 3 +- .../match/cases/OfToSalIcmpv6CodeCase.java | 3 +- .../match/cases/OfToSalIcmpv6TypeCase.java | 3 +- .../match/cases/OfToSalInPhyPortCase.java | 3 +- .../match/cases/OfToSalInPortCase.java | 3 +- .../match/cases/OfToSalIpDscpCase.java | 3 +- .../match/cases/OfToSalIpEcnCase.java | 3 +- .../match/cases/OfToSalIpProtoCase.java | 3 +- .../match/cases/OfToSalIpv4DstCase.java | 3 +- .../match/cases/OfToSalIpv4SrcCase.java | 3 +- .../match/cases/OfToSalIpv6DstCase.java | 3 +- .../match/cases/OfToSalIpv6ExthdrCase.java | 3 +- .../match/cases/OfToSalIpv6FlabelCase.java | 3 +- .../match/cases/OfToSalIpv6NdSllCase.java | 3 +- .../match/cases/OfToSalIpv6NdTargetCase.java | 3 +- .../match/cases/OfToSalIpv6NdTllCase.java | 3 +- .../match/cases/OfToSalIpv6SrcCase.java | 3 +- .../match/cases/OfToSalMetadataCase.java | 3 +- .../match/cases/OfToSalMplsBosCase.java | 3 +- .../match/cases/OfToSalMplsLabelCase.java | 3 +- .../match/cases/OfToSalMplsTcCase.java | 3 +- .../match/cases/OfToSalPbbIsidCase.java | 3 +- .../match/cases/OfToSalSctpDstCase.java | 3 +- .../match/cases/OfToSalSctpSrcCase.java | 3 +- .../match/cases/OfToSalTcpDstCase.java | 3 +- .../match/cases/OfToSalTcpSrcCase.java | 3 +- .../match/cases/OfToSalTunnelIdCase.java | 3 +- .../match/cases/OfToSalTunnelIpv4DstCase.java | 3 +- .../match/cases/OfToSalTunnelIpv4SrcCase.java | 3 +- .../match/cases/OfToSalUdpDstCase.java | 3 +- .../match/cases/OfToSalUdpSrcCase.java | 3 +- .../match/cases/OfToSalVlanPcpCase.java | 3 +- .../match/cases/OfToSalVlanVidCase.java | 3 +- .../match/cases/SalToOfArpMatchCase.java | 3 +- .../SalToOfIpv4MatchArbitraryBitMaskCase.java | 3 +- .../match/cases/SalToOfIpv4MatchCase.java | 3 +- .../SalToOfIpv6MatchArbitraryBitMaskCase.java | 3 +- .../match/cases/SalToOfIpv6MatchCase.java | 3 +- .../match/cases/SalToOfSctpMatchCase.java | 3 +- .../match/cases/SalToOfTcpMatchCase.java | 3 +- .../cases/SalToOfTunnelIpv4MatchCase.java | 3 +- .../match/cases/SalToOfUdpMatchCase.java | 3 +- .../translator/FlowRemovedTranslator.java | 9 +- ...TableFeaturesToTableUpdatedTranslator.java | 13 +- .../translator/MultipartReplyTranslator.java | 23 +- .../core/translator/PacketInTranslator.java | 9 +- .../md/core/ConnectionConductorImplTest.java | 5 +- .../openflow/md/core/MDControllerTest.java | 12 +- .../ConcurrentSalRegistrationManagerTest.java | 6 +- .../core/sal/ModelDrivenSwitchImplTest.java | 7 +- .../md/core/sal/OFRpcTaskUtilTest.java | 15 +- .../core/sal/SalRegistrationManagerTest.java | 10 +- .../sal/convertor/ConvertorManagerTest.java | 111 +++++++++ .../sal/convertor/GroupConvertorTest.java | 9 +- .../GroupDescStatsResponseConvertorTest.java | 9 +- .../GroupStatsResponseConvertorTest.java | 17 +- ...MeterConfigStatsResponseConvertorTest.java | 5 +- .../sal/convertor/MeterConvertorTest.java | 10 +- .../MeterStatsResponseConvertorTest.java | 6 +- .../sal/convertor/PacketOutConvertorTest.java | 9 +- .../core/sal/convertor/PortConvertorTest.java | 3 +- .../convertor/TableFeaturesConvertorTest.java | 15 +- .../TableFeaturesResponseConvertorTest.java | 11 +- .../convertor/action/ActionConvertorTest.java | 5 +- .../action/ActionConvertorV10Test.java | 12 +- .../action/ActionConvertorV13Test.java | 15 +- .../sal/convertor/flow/FlowConvertorTest.java | 10 +- .../flow/FlowStatsResponseConvertorTest.java | 24 +- .../flow/flowflag/FlowFlagReactorTest.java | 8 +- .../match/MatchConvertorImpl2Test.java | 77 ++---- .../match/MatchConvertorV10ImplTest.java | 21 +- .../sal/convertor/match/MatchReactorTest.java | 21 +- .../match/MatchResponseConvertor2Test.java | 14 +- .../match/MatchResponseConvertorTest.java | 14 +- .../match/MatchV10ResponseConvertorTest.java | 6 +- .../session/SessionManagerOFImplTest.java | 6 +- .../translator/FlowRemovedTranslatorTest.java | 10 +- ...eFeaturesToTableUpdatedTranslatorTest.java | 17 +- .../MultipartReplyTranslatorFifthTest.java | 9 +- .../MultipartReplyTranslatorFirstTest.java | 14 +- .../MultipartReplyTranslatorFourthTest.java | 12 +- .../MultipartReplyTranslatorSecondTest.java | 14 +- .../MultipartReplyTranslatorThirdTest.java | 14 +- 283 files changed, 1791 insertions(+), 1024 deletions(-) create mode 100644 openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManagerFactory.java create mode 100644 openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertReactorConvertor.java rename openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/{InjectionKey.java => ConvertorKey.java} (85%) create mode 100644 openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManagerTest.java diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/LifecycleConductorImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/LifecycleConductorImpl.java index af2efaf21f..24e1d7e2ef 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/LifecycleConductorImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/LifecycleConductorImpl.java @@ -43,6 +43,7 @@ import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.Messa import org.opendaylight.openflowplugin.extension.api.ExtensionConverterProviderKeeper; import org.opendaylight.openflowplugin.extension.api.core.extension.ExtensionConverterProvider; import org.opendaylight.openflowplugin.impl.util.MdSalRegistrationUtils; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.role.service.rev150727.OfpRole; import org.slf4j.Logger; @@ -62,11 +63,13 @@ final class LifecycleConductorImpl implements LifecycleConductor, RoleChangeList private StatisticsManager statisticsManager; private RpcManager rpcManager; private final MessageIntelligenceAgency messageIntelligenceAgency; + private final ConvertorExecutor convertorExecutor; private ConcurrentHashMap serviceChangeListeners = new ConcurrentHashMap<>(); private NotificationPublishService notificationPublishService; - LifecycleConductorImpl(final MessageIntelligenceAgency messageIntelligenceAgency) { + LifecycleConductorImpl(final MessageIntelligenceAgency messageIntelligenceAgency, ConvertorExecutor convertorExecutor) { this.messageIntelligenceAgency = Preconditions.checkNotNull(messageIntelligenceAgency); + this.convertorExecutor = convertorExecutor; } @Override @@ -166,13 +169,13 @@ final class LifecycleConductorImpl implements LifecycleConductor, RoleChangeList if (OfpRole.BECOMEMASTER.equals(newRole)) { logText = "Start"; fillDeviceFlowRegistry(deviceInfo, deviceContext.getDeviceFlowRegistry()); - MdSalRegistrationUtils.registerServices(rpcContext, deviceContext, this.extensionConverterProvider); + MdSalRegistrationUtils.registerServices(rpcContext, deviceContext, this.extensionConverterProvider, convertorExecutor); if (rpcContext.isStatisticsRpcEnabled()) { MdSalRegistrationUtils.registerStatCompatibilityServices( rpcContext, deviceContext, - notificationPublishService); + notificationPublishService, convertorExecutor); } } else { logText = "Stopp"; diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java index 70c4da81bd..7215fa6ab3 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java @@ -57,6 +57,8 @@ import org.opendaylight.openflowplugin.impl.statistics.ofpspecific.MessageIntell import org.opendaylight.openflowplugin.impl.util.TranslatorLibraryUtil; import org.opendaylight.openflowplugin.openflow.md.core.ThreadPoolLoggingExecutor; import org.opendaylight.openflowplugin.openflow.md.core.extension.ExtensionConverterManagerImpl; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -68,6 +70,7 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF private final int rpcRequestsQuota; private final long globalNotificationQuota; + private final ConvertorManager convertorManager; private long barrierInterval; private int barrierCountLimit; private long echoReplyTimeout; @@ -112,7 +115,8 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF Preconditions.checkNotNull(threadPoolTimeout), TimeUnit.SECONDS, new SynchronousQueue<>(), "ofppool"); - conductor = new LifecycleConductorImpl(messageIntelligenceAgency); + convertorManager = ConvertorManagerFactory.createDefaultManager(); + conductor = new LifecycleConductorImpl(messageIntelligenceAgency, convertorManager); } @Override @@ -224,7 +228,8 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF barrierInterval, barrierCountLimit, conductor, - isNotificationFlowRemovedOff); + isNotificationFlowRemovedOff, + convertorManager); ((ExtensionConverterProviderKeeper) conductor).setExtensionConverterProvider(extensionConverterManager); ((ExtensionConverterProviderKeeper) deviceManager).setExtensionConverterProvider(extensionConverterManager); @@ -232,7 +237,7 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF conductor.setNotificationPublishService(notificationPublishService); roleManager = new RoleManagerImpl(entityOwnershipService, dataBroker, conductor); - statisticsManager = new StatisticsManagerImpl(rpcProviderRegistry, isStatisticsPollingOff, conductor); + statisticsManager = new StatisticsManagerImpl(rpcProviderRegistry, isStatisticsPollingOff, conductor, convertorManager); conductor.setSafelyManager(statisticsManager); rpcManager = new RpcManagerImpl(rpcProviderRegistry, rpcRequestsQuota, conductor); @@ -256,7 +261,7 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF rpcManager.setStatisticsRpcEnabled(isStatisticsRpcEnabled); - TranslatorLibraryUtil.setBasicTranslatorLibrary(deviceManager); + TranslatorLibraryUtil.injectBasicTranslatorLibrary(deviceManager, convertorManager); deviceManager.initialize(); startSwitchConnections(); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/NodeStaticReplyTranslatorUtil.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/NodeStaticReplyTranslatorUtil.java index 8a2284c3d9..9828888c83 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/NodeStaticReplyTranslatorUtil.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/NodeStaticReplyTranslatorUtil.java @@ -15,7 +15,8 @@ import java.util.List; import java.util.Optional; import javax.annotation.CheckForNull; import org.opendaylight.openflowplugin.api.OFConstants; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32; @@ -217,12 +218,15 @@ public class NodeStaticReplyTranslatorUtil { * table can have List of TableFeatures so add it directly to * {@link org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableBuilder} * - * @param reply - * @return + * @param reply reply + * @param version Openflow version + * @param convertorExecutor convertor executor + * @return list of table features */ - public static List nodeTableFeatureTranslator(@CheckForNull final MultipartReplyTableFeatures reply) { + public static List nodeTableFeatureTranslator(@CheckForNull final MultipartReplyTableFeatures reply, final short version, @CheckForNull final ConvertorExecutor convertorExecutor) { Preconditions.checkArgument(reply != null); - final Optional> tableFeaturesList = ConvertorManager.getInstance().convert(reply); + Preconditions.checkArgument(convertorExecutor != null); + final Optional> tableFeaturesList = convertorExecutor.convert(reply, new VersionConvertorData(version)); return tableFeaturesList.orElse(Collections.emptyList()); } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java index f9ee7ce84f..154c226fa9 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java @@ -52,6 +52,7 @@ import org.opendaylight.openflowplugin.extension.api.core.extension.ExtensionCon import org.opendaylight.openflowplugin.impl.connection.OutboundQueueProviderImpl; import org.opendaylight.openflowplugin.impl.device.listener.OpenflowProtocolListenerFullImpl; import org.opendaylight.openflowplugin.impl.util.DeviceInitializationUtils; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodesBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; @@ -74,6 +75,7 @@ public class DeviceManagerImpl implements DeviceManager, ExtensionConverterProvi private static final int SPY_RATE = 10; private final DataBroker dataBroker; + private final ConvertorExecutor convertorExecutor; private TranslatorLibrary translatorLibrary; private DeviceInitializationPhaseHandler deviceInitPhaseHandler; private DeviceTerminationPhaseHandler deviceTerminPhaseHandler; @@ -92,11 +94,13 @@ public class DeviceManagerImpl implements DeviceManager, ExtensionConverterProvi public DeviceManagerImpl(@Nonnull final DataBroker dataBroker, final long globalNotificationQuota, final boolean switchFeaturesMandatory, final long barrierInterval, final int barrierCountLimit, - final LifecycleConductor lifecycleConductor, boolean isNotificationFlowRemovedOff) { + final LifecycleConductor lifecycleConductor, boolean isNotificationFlowRemovedOff, + final ConvertorExecutor convertorExecutor) { this.switchFeaturesMandatory = switchFeaturesMandatory; this.globalNotificationQuota = globalNotificationQuota; this.isNotificationFlowRemovedOff = isNotificationFlowRemovedOff; this.dataBroker = Preconditions.checkNotNull(dataBroker); + this.convertorExecutor = convertorExecutor; /* merge empty nodes to oper DS to predict any problems with missing parent for Node */ final WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); @@ -379,7 +383,7 @@ public class DeviceManagerImpl implements DeviceManager, ExtensionConverterProvi ((DeviceContextImpl)deviceContext).getTransactionChainManager().activateTransactionManager(); /* Init Collecting NodeInfo */ final ListenableFuture initCollectingDeviceInfo = DeviceInitializationUtils.initializeNodeInformation( - deviceContext, switchFeaturesMandatory); + deviceContext, switchFeaturesMandatory, convertorExecutor); /* Init Collecting StatInfo */ final ListenableFuture statPollFuture = Futures.transform(initCollectingDeviceInfo, new AsyncFunction() { diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/AbstractMultipartOnTheFlyService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/AbstractMultipartOnTheFlyService.java index e20a48dd6e..06ccafd774 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/AbstractMultipartOnTheFlyService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/AbstractMultipartOnTheFlyService.java @@ -13,19 +13,24 @@ import java.util.List; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; public abstract class AbstractMultipartOnTheFlyService extends AbstractService> { - protected AbstractMultipartOnTheFlyService(final RequestContextStack requestContextStack, final DeviceContext deviceContext) { + private final ConvertorExecutor convertorExecutor; + + protected AbstractMultipartOnTheFlyService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext); + this.convertorExecutor = convertorExecutor; } @Override protected final FutureCallback createCallback(final RequestContext> context, final Class requestType) { return new MultipartRequestOnTheFlyCallback(context, requestType, getMessageSpy(), getEventIdentifier(), getDeviceInfo(), - getDeviceContext().getDeviceFlowRegistry(), getTxFacade()); + getDeviceContext().getDeviceFlowRegistry(), getTxFacade(), + convertorExecutor); } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/FlowService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/FlowService.java index 8fdab89397..e3fbb01c02 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/FlowService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/FlowService.java @@ -19,7 +19,7 @@ import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.device.Xid; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.Flow; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInputBuilder; @@ -31,8 +31,14 @@ import org.opendaylight.yangtools.yang.common.RpcResultBuilder; final class FlowService extends AbstractSimpleService { - protected FlowService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final Class clazz) { + private final ConvertorExecutor convertorExecutor; + private final VersionDatapathIdConvertorData data; + + protected FlowService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final Class clazz, final ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, clazz); + this.convertorExecutor = convertorExecutor; + data = new VersionDatapathIdConvertorData(getVersion()); + data.setDatapathId(getDatapathId()); } @Override @@ -42,10 +48,7 @@ final class FlowService extends AbstractSimpleService toFlowModInputs(final Flow input) { - final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(getVersion()); - data.setDatapathId(getDatapathId()); - - final Optional> flowModInputBuilders = ConvertorManager.getInstance().convert(input, data); + final Optional> flowModInputBuilders = convertorExecutor.convert(input, data); return flowModInputBuilders.orElse(Collections.emptyList()); } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/GroupService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/GroupService.java index b165d8bdb1..d0f50eaa74 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/GroupService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/GroupService.java @@ -11,7 +11,7 @@ import java.util.Optional; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.device.Xid; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.GroupConvertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group; @@ -20,17 +20,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 import org.opendaylight.yangtools.yang.binding.DataObject; final class GroupService extends AbstractSimpleService { - GroupService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final Class clazz) { + private final ConvertorExecutor convertorExecutor; + private final VersionDatapathIdConvertorData data; + + GroupService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final Class clazz, final ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, clazz); + this.convertorExecutor = convertorExecutor; + data = new VersionDatapathIdConvertorData(getVersion()); + data.setDatapathId(getDatapathId()); } @Override protected OfHeader buildRequest(final Xid xid, final I input) { - final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(getVersion()); - data.setDatapathId(getDatapathId()); - final Optional ofGroupModInput = ConvertorManager - .getInstance() - .convert(input, data); + final Optional ofGroupModInput = convertorExecutor.convert(input, data); final GroupModInputBuilder groupModInputBuilder = ofGroupModInput .orElse(GroupConvertor.defaultResult(getVersion())) diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/MeterService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/MeterService.java index 94009f0671..91d4abbacb 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/MeterService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/MeterService.java @@ -11,7 +11,7 @@ import java.util.Optional; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.device.Xid; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterConvertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.Meter; @@ -21,14 +21,18 @@ import org.opendaylight.yangtools.yang.binding.DataObject; final class MeterService extends AbstractSimpleService { - MeterService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final Class clazz) { + private final ConvertorExecutor convertorExecutor; + private final VersionConvertorData data; + + MeterService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final Class clazz, final ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, clazz); + this.convertorExecutor = convertorExecutor; + data = new VersionConvertorData(getVersion()); } @Override protected OfHeader buildRequest(final Xid xid, final I input) { - final VersionConvertorData data = new VersionConvertorData(getVersion()); - final Optional ofMeterModInput = ConvertorManager.getInstance().convert(input, data); + final Optional ofMeterModInput = convertorExecutor.convert(input, data); final MeterModInputBuilder meterModInputBuilder = ofMeterModInput .orElse(MeterConvertor.defaultResult(getVersion())); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/MultipartRequestOnTheFlyCallback.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/MultipartRequestOnTheFlyCallback.java index dcb445b11e..9b1c0e7291 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/MultipartRequestOnTheFlyCallback.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/MultipartRequestOnTheFlyCallback.java @@ -21,6 +21,7 @@ import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.Messa import org.opendaylight.openflowplugin.impl.statistics.SinglePurposeMultipartReplyTranslator; import org.opendaylight.openflowplugin.impl.statistics.StatisticsGatheringUtils; import org.opendaylight.openflowplugin.impl.statistics.ofpspecific.EventsTimeCounter; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply; @@ -34,7 +35,7 @@ import org.slf4j.LoggerFactory; final class MultipartRequestOnTheFlyCallback extends AbstractRequestCallback> { private static final Logger LOG = LoggerFactory.getLogger(MultipartRequestOnTheFlyCallback.class); - private static final SinglePurposeMultipartReplyTranslator MULTIPART_REPLY_TRANSLATOR = new SinglePurposeMultipartReplyTranslator(); + private final SinglePurposeMultipartReplyTranslator multipartReplyTranslator; private final DeviceInfo deviceInfo; private final DeviceFlowRegistry registry; private boolean virgin = true; @@ -49,13 +50,16 @@ final class MultipartRequestOnTheFlyCallback extends AbstractRequestCallback multipartDataList = MULTIPART_REPLY_TRANSLATOR.translate( + final List multipartDataList = multipartReplyTranslator.translate( deviceInfo.getDatapathId(), deviceInfo.getVersion(), singleReply); final Iterable allMultipartData = multipartDataList; diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/PacketProcessingServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/PacketProcessingServiceImpl.java index 348495c44a..b8449e4954 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/PacketProcessingServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/PacketProcessingServiceImpl.java @@ -12,7 +12,7 @@ import java.util.concurrent.Future; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.device.Xid; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.PacketOutConvertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.PacketOutConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; @@ -23,8 +23,11 @@ import org.opendaylight.yangtools.yang.common.RpcResult; public final class PacketProcessingServiceImpl extends AbstractVoidService implements PacketProcessingService { - public PacketProcessingServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext) { + private final ConvertorExecutor convertorExecutor; + + public PacketProcessingServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext); + this.convertorExecutor = convertorExecutor; } @Override @@ -38,7 +41,7 @@ public final class PacketProcessingServiceImpl extends AbstractVoidService result = ConvertorManager.getInstance().convert(input, data); + final Optional result = convertorExecutor.convert(input, data); return result.orElse(PacketOutConvertor.defaultResult(getVersion())); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalFlowServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalFlowServiceImpl.java index c0ab557425..8609c1192f 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalFlowServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalFlowServiceImpl.java @@ -26,6 +26,7 @@ import org.opendaylight.openflowplugin.api.openflow.rpc.ItemLifeCycleSource; import org.opendaylight.openflowplugin.api.openflow.rpc.listener.ItemLifecycleListener; import org.opendaylight.openflowplugin.impl.registry.flow.FlowDescriptorFactory; import org.opendaylight.openflowplugin.impl.registry.flow.FlowRegistryKeyFactory; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.util.FlowCreatorUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId; @@ -62,11 +63,11 @@ public class SalFlowServiceImpl implements SalFlowService, ItemLifeCycleSource { private final DeviceContext deviceContext; private ItemLifecycleListener itemLifecycleListener; - public SalFlowServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext) { + public SalFlowServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final ConvertorExecutor convertorExecutor) { this.deviceContext = deviceContext; - flowRemove = new FlowService(requestContextStack, deviceContext, RemoveFlowOutput.class); - flowAdd = new FlowService<>(requestContextStack, deviceContext, AddFlowOutput.class); - flowUpdate = new FlowService<>(requestContextStack, deviceContext, UpdateFlowOutput.class); + flowRemove = new FlowService<>(requestContextStack, deviceContext, RemoveFlowOutput.class, convertorExecutor); + flowAdd = new FlowService<>(requestContextStack, deviceContext, AddFlowOutput.class, convertorExecutor); + flowUpdate = new FlowService<>(requestContextStack, deviceContext, UpdateFlowOutput.class, convertorExecutor); } @Override diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalGroupServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalGroupServiceImpl.java index cdbc10b6f0..41ea6d5181 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalGroupServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalGroupServiceImpl.java @@ -17,6 +17,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.rpc.ItemLifeCycleSource; import org.opendaylight.openflowplugin.api.openflow.rpc.listener.ItemLifecycleListener; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupOutput; @@ -45,11 +46,11 @@ public class SalGroupServiceImpl implements SalGroupService, ItemLifeCycleSource private final DeviceContext deviceContext; private ItemLifecycleListener itemLifecycleListener; - public SalGroupServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext) { + public SalGroupServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final ConvertorExecutor convertorExecutor) { this.deviceContext = deviceContext; - addGroup = new GroupService<>(requestContextStack, deviceContext, AddGroupOutput.class); - updateGroup = new GroupService<>(requestContextStack, deviceContext, UpdateGroupOutput.class); - removeGroup = new GroupService<>(requestContextStack, deviceContext, RemoveGroupOutput.class); + addGroup = new GroupService<>(requestContextStack, deviceContext, AddGroupOutput.class, convertorExecutor); + updateGroup = new GroupService<>(requestContextStack, deviceContext, UpdateGroupOutput.class, convertorExecutor); + removeGroup = new GroupService<>(requestContextStack, deviceContext, RemoveGroupOutput.class, convertorExecutor); } @Override diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImpl.java index b053d99cb8..2ed7df5f84 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImpl.java @@ -17,6 +17,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.rpc.ItemLifeCycleSource; import org.opendaylight.openflowplugin.api.openflow.rpc.listener.ItemLifecycleListener; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterKey; @@ -45,11 +46,11 @@ public class SalMeterServiceImpl implements SalMeterService, ItemLifeCycleSource private ItemLifecycleListener itemLifecycleListener; private final DeviceContext deviceContext; - public SalMeterServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext) { + public SalMeterServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final ConvertorExecutor convertorExecutor) { this.deviceContext = deviceContext; - addMeter = new MeterService<>(requestContextStack, deviceContext, AddMeterOutput.class); - updateMeter = new MeterService<>(requestContextStack, deviceContext, UpdateMeterOutput.class); - removeMeter = new MeterService<>(requestContextStack, deviceContext, RemoveMeterOutput.class); + addMeter = new MeterService<>(requestContextStack, deviceContext, AddMeterOutput.class, convertorExecutor); + updateMeter = new MeterService<>(requestContextStack, deviceContext, UpdateMeterOutput.class, convertorExecutor); + removeMeter = new MeterService<>(requestContextStack, deviceContext, RemoveMeterOutput.class, convertorExecutor); } @Override diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImpl.java index 674d6b2374..86f9afe8e9 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImpl.java @@ -12,7 +12,7 @@ import java.util.concurrent.Future; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.device.Xid; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.PortConvertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.Port; @@ -25,8 +25,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.Upda import org.opendaylight.yangtools.yang.common.RpcResult; public final class SalPortServiceImpl extends AbstractSimpleService implements SalPortService { - public SalPortServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext) { + private final ConvertorExecutor convertorExecutor; + private final VersionConvertorData data; + + public SalPortServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, UpdatePortOutput.class); + this.convertorExecutor = convertorExecutor; + data = new VersionConvertorData(getVersion()); } @Override @@ -37,9 +42,7 @@ public final class SalPortServiceImpl extends AbstractSimpleService ofPortModInput = ConvertorManager - .getInstance() - .convert(inputPort, new VersionConvertorData(getVersion())); + final Optional ofPortModInput = convertorExecutor.convert(inputPort, data); final PortModInputBuilder mdInput = new PortModInputBuilder(ofPortModInput .orElse(PortConvertor.defaultResult(getVersion()))) diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalTableServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalTableServiceImpl.java index 7282896ea7..25ccd243ae 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalTableServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalTableServiceImpl.java @@ -22,10 +22,10 @@ import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.device.TxFacade; import org.opendaylight.openflowplugin.api.openflow.device.Xid; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; @@ -55,13 +55,14 @@ import org.slf4j.Logger; public final class SalTableServiceImpl extends AbstractMultipartService implements SalTableService { private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(SalTableServiceImpl.class); private final TxFacade txFacade; - private final NodeId nodeId; + private final ConvertorExecutor convertorExecutor; + private final VersionConvertorData data; - public SalTableServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, - final NodeId nodeId) { + public SalTableServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext); this.txFacade = deviceContext; - this.nodeId = nodeId; + this.convertorExecutor = convertorExecutor; + data = new VersionConvertorData(getVersion()); } @Override @@ -134,7 +135,7 @@ public final class SalTableServiceImpl extends AbstractMultipartService convertToSalTableFeatures( + protected List convertToSalTableFeatures( final List multipartReplies) { final List salTableFeaturesAll = new ArrayList<>(); for (final MultipartReply multipartReply : multipartReplies) { @@ -146,7 +147,7 @@ public final class SalTableServiceImpl extends AbstractMultipartService> salTableFeaturesPartial = - ConvertorManager.getInstance().convert(salTableFeatures); + convertorExecutor.convert(salTableFeatures, data); if (salTableFeaturesPartial.isPresent()) { salTableFeaturesAll.addAll(salTableFeaturesPartial.get()); @@ -173,7 +174,7 @@ public final class SalTableServiceImpl extends AbstractMultipartService> ofTableFeatureList = ConvertorManager.getInstance().convert(input.getUpdatedTable()); + final Optional> ofTableFeatureList = convertorExecutor.convert(input.getUpdatedTable(), data); requestBuilder.setTableFeatures(ofTableFeatureList.orElse(Collections.emptyList())); caseBuilder.setMultipartRequestTableFeatures(requestBuilder.build()); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/SinglePurposeMultipartReplyTranslator.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/SinglePurposeMultipartReplyTranslator.java index 676badbd51..80c9d42cfa 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/SinglePurposeMultipartReplyTranslator.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/SinglePurposeMultipartReplyTranslator.java @@ -13,8 +13,7 @@ import java.util.Collections; import java.util.List; import java.util.Optional; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32; @@ -110,6 +109,11 @@ public class SinglePurposeMultipartReplyTranslator { protected static final Logger logger = LoggerFactory .getLogger(SinglePurposeMultipartReplyTranslator.class); + private final ConvertorExecutor convertorExecutor; + + public SinglePurposeMultipartReplyTranslator(ConvertorExecutor convertorExecutor) { + this.convertorExecutor = convertorExecutor; + } public List translate(final BigInteger datapathId, final short version, final OfHeader msg) { @@ -119,18 +123,17 @@ public class SinglePurposeMultipartReplyTranslator { MultipartReplyMessage mpReply = (MultipartReplyMessage) msg; OpenflowVersion ofVersion = OpenflowVersion.get(version); NodeId node = nodeIdFromDatapathId(datapathId); - VersionDatapathIdConvertorData versionDatapathIdConvertorData = new VersionDatapathIdConvertorData(version); - versionDatapathIdConvertorData.setDatapathId(datapathId); - VersionConvertorData simpleConvertorData = new VersionConvertorData(version); + VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(version); + data.setDatapathId(datapathId); - translateFlow(listDataObject, mpReply, node, versionDatapathIdConvertorData); + translateFlow(listDataObject, mpReply, node, data); translateAggregate(listDataObject, mpReply, node); translatePortStats(listDataObject, mpReply, node, ofVersion, datapathId); - translateGroup(listDataObject, mpReply, node); - translateGroupDesc(listDataObject, mpReply, node, simpleConvertorData); + translateGroup(listDataObject, mpReply, node, data); + translateGroupDesc(listDataObject, mpReply, node, data); translateGroupFeatures(listDataObject, mpReply, node); - translateMeter(listDataObject, mpReply, node); - translateMeterConfig(listDataObject, mpReply, node); + translateMeter(listDataObject, mpReply, node, data); + translateMeterConfig(listDataObject, mpReply, node, data); translateMeterFeatures(listDataObject, mpReply, node); translateTable(listDataObject, mpReply, node); translateQueue(listDataObject, mpReply, node, ofVersion, datapathId); @@ -139,9 +142,9 @@ public class SinglePurposeMultipartReplyTranslator { return listDataObject; } - private static void translateFlow(final List listDataObject, - final MultipartReplyMessage mpReply, - final NodeId node, VersionDatapathIdConvertorData versionDatapathIdConvertorData) { + private void translateFlow(final List listDataObject, + final MultipartReplyMessage mpReply, + final NodeId node, VersionDatapathIdConvertorData data) { if (!MultipartType.OFPMPFLOW.equals(mpReply.getType())) { return; } @@ -153,16 +156,16 @@ public class SinglePurposeMultipartReplyTranslator { MultipartReplyFlowCase caseBody = (MultipartReplyFlowCase) mpReply.getMultipartReplyBody(); MultipartReplyFlow replyBody = caseBody.getMultipartReplyFlow(); final Optional> flowAndStatisticsMapLists = - ConvertorManager.getInstance().convert(replyBody.getFlowStats(), versionDatapathIdConvertorData); + convertorExecutor.convert(replyBody.getFlowStats(), data); message.setFlowAndStatisticsMapList(flowAndStatisticsMapLists.orElse(Collections.emptyList())); listDataObject.add(message.build()); } - private static void translateAggregate(final List listDataObject, - final MultipartReplyMessage mpReply, - final NodeId node) { + private void translateAggregate(final List listDataObject, + final MultipartReplyMessage mpReply, + final NodeId node) { if (!MultipartType.OFPMPAGGREGATE.equals(mpReply.getType())) { return; } @@ -181,11 +184,11 @@ public class SinglePurposeMultipartReplyTranslator { listDataObject.add(message.build()); } - private static void translatePortStats(final List listDataObject, - final MultipartReplyMessage mpReply, - final NodeId node, - final OpenflowVersion ofVersion, - final BigInteger datapathId) { + private void translatePortStats(final List listDataObject, + final MultipartReplyMessage mpReply, + final NodeId node, + final OpenflowVersion ofVersion, + final BigInteger datapathId) { if (!MultipartType.OFPMPPORTSTATS.equals(mpReply.getType())) { return; } @@ -244,9 +247,10 @@ public class SinglePurposeMultipartReplyTranslator { listDataObject.add(message.build()); } - private static void translateGroup(final List listDataObject, - final MultipartReplyMessage mpReply, - final NodeId node) { + private void translateGroup(final List listDataObject, + final MultipartReplyMessage mpReply, + final NodeId node, + final VersionDatapathIdConvertorData data) { if (!MultipartType.OFPMPGROUP.equals(mpReply.getType())) { return; } @@ -257,18 +261,18 @@ public class SinglePurposeMultipartReplyTranslator { message.setTransactionId(generateTransactionId(mpReply.getXid())); MultipartReplyGroupCase caseBody = (MultipartReplyGroupCase) mpReply.getMultipartReplyBody(); MultipartReplyGroup replyBody = caseBody.getMultipartReplyGroup(); - final Optional> groupStatsList = ConvertorManager.getInstance().convert( - replyBody.getGroupStats()); + final Optional> groupStatsList = convertorExecutor.convert( + replyBody.getGroupStats(), data); message.setGroupStats(groupStatsList.orElse(Collections.emptyList())); listDataObject.add(message.build()); } - private static void translateGroupDesc(final List listDataObject, - final MultipartReplyMessage mpReply, - final NodeId node, - VersionConvertorData simpleConvertorData) { + private void translateGroupDesc(final List listDataObject, + final MultipartReplyMessage mpReply, + final NodeId node, + final VersionDatapathIdConvertorData data) { if (!MultipartType.OFPMPGROUPDESC.equals(mpReply.getType())) { return; } @@ -280,17 +284,17 @@ public class SinglePurposeMultipartReplyTranslator { MultipartReplyGroupDescCase caseBody = (MultipartReplyGroupDescCase) mpReply.getMultipartReplyBody(); MultipartReplyGroupDesc replyBody = caseBody.getMultipartReplyGroupDesc(); - final Optional> groupDescStatsList = ConvertorManager.getInstance().convert( - replyBody.getGroupDesc(), simpleConvertorData); + final Optional> groupDescStatsList = convertorExecutor.convert( + replyBody.getGroupDesc(), data); message.setGroupDescStats(groupDescStatsList.orElse(Collections.emptyList())); listDataObject.add(message.build()); } - private static void translateGroupFeatures(final List listDataObject, - final MultipartReplyMessage mpReply, - final NodeId node) { + private void translateGroupFeatures(final List listDataObject, + final MultipartReplyMessage mpReply, + final NodeId node) { if (!MultipartType.OFPMPGROUPFEATURES.equals(mpReply.getType())) { return; } @@ -341,9 +345,10 @@ public class SinglePurposeMultipartReplyTranslator { listDataObject.add(message.build()); } - private static void translateMeter(final List listDataObject, - final MultipartReplyMessage mpReply, - final NodeId node) { + private void translateMeter(final List listDataObject, + final MultipartReplyMessage mpReply, + final NodeId node, + final VersionDatapathIdConvertorData data) { if (!MultipartType.OFPMPMETER.equals(mpReply.getType())) { return; } @@ -356,16 +361,17 @@ public class SinglePurposeMultipartReplyTranslator { MultipartReplyMeterCase caseBody = (MultipartReplyMeterCase) mpReply.getMultipartReplyBody(); MultipartReplyMeter replyBody = caseBody.getMultipartReplyMeter(); final Optional> meterStatsList = - ConvertorManager.getInstance().convert(replyBody.getMeterStats()); + convertorExecutor.convert(replyBody.getMeterStats(), data); message.setMeterStats(meterStatsList.orElse(Collections.emptyList())); listDataObject.add(message.build()); } - private static void translateMeterConfig(final List listDataObject, - final MultipartReplyMessage mpReply, - final NodeId node) { + private void translateMeterConfig(final List listDataObject, + final MultipartReplyMessage mpReply, + final NodeId node, + final VersionDatapathIdConvertorData data) { if (!MultipartType.OFPMPMETERCONFIG.equals(mpReply.getType())) { return; } @@ -377,14 +383,14 @@ public class SinglePurposeMultipartReplyTranslator { MultipartReplyMeterConfigCase caseBody = (MultipartReplyMeterConfigCase) mpReply.getMultipartReplyBody(); MultipartReplyMeterConfig replyBody = caseBody.getMultipartReplyMeterConfig(); - final Optional> meterConfigStatsList = ConvertorManager.getInstance().convert(replyBody.getMeterConfig()); + final Optional> meterConfigStatsList = convertorExecutor.convert(replyBody.getMeterConfig(), data); message.setMeterConfigStats(meterConfigStatsList.orElse(Collections.emptyList())); listDataObject.add(message.build()); } - private static void translateMeterFeatures(final List listDataObject, + private void translateMeterFeatures(final List listDataObject, final MultipartReplyMessage mpReply, final NodeId node) { if (!MultipartType.OFPMPMETERFEATURES.equals(mpReply.getType())) { @@ -434,7 +440,7 @@ public class SinglePurposeMultipartReplyTranslator { listDataObject.add(message.build()); } - private static void translateTable(final List listDataObject, + private void translateTable(final List listDataObject, final MultipartReplyMessage mpReply, final NodeId node) { if (!MultipartType.OFPMPTABLE.equals(mpReply.getType())) { @@ -465,7 +471,7 @@ public class SinglePurposeMultipartReplyTranslator { listDataObject.add(message.build()); } - private static void translateQueue(final List listDataObject, + private void translateQueue(final List listDataObject, final MultipartReplyMessage mpReply, final NodeId node, final OpenflowVersion ofVersion, diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImpl.java index 8fe6bb4b52..b34e9529ed 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImpl.java @@ -40,6 +40,7 @@ import org.opendaylight.openflowplugin.impl.rpc.listener.ItemLifecycleListenerIm import org.opendaylight.openflowplugin.impl.services.RequestContextUtil; import org.opendaylight.openflowplugin.impl.statistics.services.dedicated.StatisticsGatheringOnTheFlyService; import org.opendaylight.openflowplugin.impl.statistics.services.dedicated.StatisticsGatheringService; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,6 +57,7 @@ class StatisticsContextImpl implements StatisticsContext { private final ListenableFuture emptyFuture; private final boolean shuttingDownStatisticsPolling; private final Object COLLECTION_STAT_TYPE_LOCK = new Object(); + private final SinglePurposeMultipartReplyTranslator multipartReplyTranslator; @GuardedBy("COLLECTION_STAT_TYPE_LOCK") private List collectingStatType; @@ -66,13 +68,14 @@ class StatisticsContextImpl implements StatisticsContext { private volatile boolean schedulingEnabled; private volatile CONTEXT_STATE contextState; - StatisticsContextImpl(@CheckForNull final DeviceInfo deviceInfo, final boolean shuttingDownStatisticsPolling, final LifecycleConductor lifecycleConductor) { + StatisticsContextImpl(@CheckForNull final DeviceInfo deviceInfo, final boolean shuttingDownStatisticsPolling, final LifecycleConductor lifecycleConductor, final ConvertorExecutor convertorExecutor) { this.deviceContext = Preconditions.checkNotNull(lifecycleConductor.getDeviceContext(deviceInfo)); this.devState = Preconditions.checkNotNull(deviceContext.getDeviceState()); this.shuttingDownStatisticsPolling = shuttingDownStatisticsPolling; + multipartReplyTranslator = new SinglePurposeMultipartReplyTranslator(convertorExecutor); emptyFuture = Futures.immediateFuture(false); statisticsGatheringService = new StatisticsGatheringService(this, deviceContext); - statisticsGatheringOnTheFlyService = new StatisticsGatheringOnTheFlyService(this, deviceContext); + statisticsGatheringOnTheFlyService = new StatisticsGatheringOnTheFlyService(this, deviceContext, convertorExecutor); itemLifeCycleListener = new ItemLifecycleListenerImpl(deviceContext); statListForCollectingInitialization(); contextState = CONTEXT_STATE.WORKING; @@ -289,7 +292,7 @@ class StatisticsContextImpl implements StatisticsContext { /*MultipartType.OFPMPFLOW*/ multipartType, deviceContext, deviceContext, - initial) : emptyFuture; + initial, multipartReplyTranslator) : emptyFuture; } private ListenableFuture collectTableStatistics(final MultipartType multipartType) { @@ -299,7 +302,7 @@ class StatisticsContextImpl implements StatisticsContext { /*MultipartType.OFPMPTABLE*/ multipartType, deviceContext, deviceContext, - false) : emptyFuture; + false, multipartReplyTranslator) : emptyFuture; } private ListenableFuture collectPortStatistics(final MultipartType multipartType) { @@ -309,7 +312,7 @@ class StatisticsContextImpl implements StatisticsContext { /*MultipartType.OFPMPPORTSTATS*/ multipartType, deviceContext, deviceContext, - false) : emptyFuture; + false, multipartReplyTranslator) : emptyFuture; } private ListenableFuture collectQueueStatistics(final MultipartType multipartType) { @@ -319,7 +322,7 @@ class StatisticsContextImpl implements StatisticsContext { /*MultipartType.OFPMPQUEUE*/ multipartType, deviceContext, deviceContext, - false); + false, multipartReplyTranslator); } private ListenableFuture collectGroupDescStatistics(final MultipartType multipartType) { @@ -329,7 +332,7 @@ class StatisticsContextImpl implements StatisticsContext { /*MultipartType.OFPMPGROUPDESC*/ multipartType, deviceContext, deviceContext, - false) : emptyFuture; + false, multipartReplyTranslator) : emptyFuture; } private ListenableFuture collectGroupStatistics(final MultipartType multipartType) { @@ -339,7 +342,7 @@ class StatisticsContextImpl implements StatisticsContext { /*MultipartType.OFPMPGROUP*/ multipartType, deviceContext, deviceContext, - false) : emptyFuture; + false, multipartReplyTranslator) : emptyFuture; } private ListenableFuture collectMeterConfigStatistics(final MultipartType multipartType) { @@ -349,7 +352,7 @@ class StatisticsContextImpl implements StatisticsContext { /*MultipartType.OFPMPMETERCONFIG*/ multipartType, deviceContext, deviceContext, - false) : emptyFuture; + false, multipartReplyTranslator) : emptyFuture; } private ListenableFuture collectMeterStatistics(final MultipartType multipartType) { @@ -359,7 +362,7 @@ class StatisticsContextImpl implements StatisticsContext { /*MultipartType.OFPMPMETER*/ multipartType, deviceContext, deviceContext, - false) : emptyFuture; + false, multipartReplyTranslator) : emptyFuture; } @VisibleForTesting diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtils.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtils.java index ea0a7c6f4d..b47dfee913 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtils.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtils.java @@ -119,7 +119,6 @@ public final class StatisticsGatheringUtils { private static String DATE_AND_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"; private static final Logger LOG = LoggerFactory.getLogger(StatisticsGatheringUtils.class); - private static final SinglePurposeMultipartReplyTranslator MULTIPART_REPLY_TRANSLATOR = new SinglePurposeMultipartReplyTranslator(); private static final String QUEUE2_REQCTX = "QUEUE2REQCTX-"; private StatisticsGatheringUtils() { @@ -132,7 +131,8 @@ public final class StatisticsGatheringUtils { final MultipartType type, final TxFacade txFacade, final DeviceRegistry registry, - final Boolean initial) { + final Boolean initial, + final SinglePurposeMultipartReplyTranslator multipartReplyTranslator) { EventIdentifier wholeProcessEventIdentifier = null; if (MultipartType.OFPMPFLOW.equals(type)) { wholeProcessEventIdentifier = new EventIdentifier(type.toString(), deviceInfo.getNodeId().getValue()); @@ -142,7 +142,7 @@ public final class StatisticsGatheringUtils { final ListenableFuture>> statisticsDataInFuture = JdkFutureAdapters.listenInPoolThread(statisticsGatheringService.getStatisticsOfType( ofpQueuToRequestContextEventIdentifier, type)); - return transformAndStoreStatisticsData(statisticsDataInFuture, deviceInfo, wholeProcessEventIdentifier, type, txFacade, registry, initial); + return transformAndStoreStatisticsData(statisticsDataInFuture, deviceInfo, wholeProcessEventIdentifier, type, txFacade, registry, initial, multipartReplyTranslator); } private static ListenableFuture transformAndStoreStatisticsData(final ListenableFuture>> statisticsDataInFuture, @@ -151,7 +151,8 @@ public final class StatisticsGatheringUtils { final MultipartType type, final TxFacade txFacade, final DeviceRegistry registry, - final boolean initial) { + final boolean initial, + final SinglePurposeMultipartReplyTranslator multipartReplyTranslator) { return Futures.transform(statisticsDataInFuture, new AsyncFunction>, Boolean>() { @Nullable @Override @@ -169,7 +170,7 @@ public final class StatisticsGatheringUtils { try { for (final MultipartReply singleReply : rpcResult.getResult()) { - final List multipartDataList = MULTIPART_REPLY_TRANSLATOR.translate( + final List multipartDataList = multipartReplyTranslator.translate( deviceInfo.getDatapathId(), deviceInfo.getVersion(), singleReply); multipartData = multipartDataList.get(0); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java index 8aa3c7aa53..8386755c85 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java @@ -40,6 +40,7 @@ import org.opendaylight.openflowplugin.api.openflow.lifecycle.LifecycleConductor import org.opendaylight.openflowplugin.api.openflow.rpc.ItemLifeCycleSource; import org.opendaylight.openflowplugin.api.openflow.statistics.StatisticsContext; import org.opendaylight.openflowplugin.api.openflow.statistics.StatisticsManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.ChangeStatisticsWorkModeInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.GetStatisticsWorkModeOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.GetStatisticsWorkModeOutputBuilder; @@ -56,6 +57,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag private static final Logger LOG = LoggerFactory.getLogger(StatisticsManagerImpl.class); private static final long DEFAULT_STATS_TIMEOUT_SEC = 50L; + private final ConvertorExecutor convertorExecutor; private DeviceInitializationPhaseHandler deviceInitPhaseHandler; private DeviceTerminationPhaseHandler deviceTerminPhaseHandler; @@ -80,7 +82,9 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag public StatisticsManagerImpl(@CheckForNull final RpcProviderRegistry rpcProviderRegistry, final boolean shuttingDownStatisticsPolling, - final LifecycleConductor lifecycleConductor) { + final LifecycleConductor lifecycleConductor, + final ConvertorExecutor convertorExecutor) { + this.convertorExecutor = convertorExecutor; Preconditions.checkArgument(rpcProviderRegistry != null); this.controlServiceRegistration = Preconditions.checkNotNull(rpcProviderRegistry.addRpcImplementation( StatisticsManagerControlService.class, this)); @@ -93,7 +97,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag final DeviceContext deviceContext = Preconditions.checkNotNull(conductor.getDeviceContext(deviceInfo)); - final StatisticsContext statisticsContext = new StatisticsContextImpl(deviceInfo, shuttingDownStatisticsPolling, conductor); + final StatisticsContext statisticsContext = new StatisticsContextImpl(deviceInfo, shuttingDownStatisticsPolling, conductor, convertorExecutor); Verify.verify(contexts.putIfAbsent(deviceInfo, statisticsContext) == null, "StatisticsCtx still not closed for Node {}", deviceInfo.getNodeId()); deviceInitPhaseHandler.onDeviceContextLevelUp(deviceInfo); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllFlowsInAllTablesService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllFlowsInAllTablesService.java index d49c00b696..caa24be942 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllFlowsInAllTablesService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllFlowsInAllTablesService.java @@ -16,6 +16,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.impl.services.RequestInputUtils; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.AbstractCompatibleStatService; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.FlowStatisticsToNotificationTransformer; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.util.FlowCreatorUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAllFlowsStatisticsFromAllFlowTablesInput; @@ -33,10 +34,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 public final class AllFlowsInAllTablesService extends AbstractCompatibleStatService { private final MultipartRequestFlowCase flowCase; + private final ConvertorExecutor convertorExecutor; public AllFlowsInAllTablesService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, - final AtomicLong compatibilityXidSeed) { + final AtomicLong compatibilityXidSeed, final ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, compatibilityXidSeed); + this.convertorExecutor = convertorExecutor; final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder(); final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder(); @@ -67,6 +70,6 @@ public final class AllFlowsInAllTablesService extends AbstractCompatibleStatServ @Override public FlowsStatisticsUpdate transformToNotification(List result, TransactionId emulatedTxId) { - return FlowStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), getOfVersion(), emulatedTxId); + return FlowStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), getOfVersion(), emulatedTxId, convertorExecutor); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllFlowsInTableService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllFlowsInTableService.java index cdd2256904..d7a4af5da3 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllFlowsInTableService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllFlowsInTableService.java @@ -17,6 +17,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.impl.services.RequestInputUtils; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.AbstractCompatibleStatService; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.FlowStatisticsToNotificationTransformer; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.util.FlowCreatorUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAllFlowStatisticsFromFlowTableInput; @@ -34,10 +35,12 @@ import org.opendaylight.yangtools.yang.common.RpcResult; public class AllFlowsInTableService extends AbstractCompatibleStatService { + private final ConvertorExecutor convertorExecutor; private Function>, FlowsStatisticsUpdate> transformer; - public AllFlowsInTableService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, AtomicLong compatibilityXidSeed) { + public AllFlowsInTableService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, AtomicLong compatibilityXidSeed, ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, compatibilityXidSeed); + this.convertorExecutor = convertorExecutor; } @Override @@ -72,6 +75,6 @@ public class AllFlowsInTableService extends AbstractCompatibleStatService mpResult, TransactionId emulatedTxId) { - return FlowStatisticsToNotificationTransformer.transformToNotification(mpResult, getDeviceInfo(), getOfVersion(), emulatedTxId); + return FlowStatisticsToNotificationTransformer.transformToNotification(mpResult, getDeviceInfo(), getOfVersion(), emulatedTxId, convertorExecutor); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllGroupsStatsService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllGroupsStatsService.java index 5cf5db31ef..4c563dde03 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllGroupsStatsService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllGroupsStatsService.java @@ -16,6 +16,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.impl.services.RequestInputUtils; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.AbstractCompatibleStatService; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.GroupStatisticsToNotificationTransformer; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsOutput; @@ -45,9 +46,12 @@ final class AllGroupsStatsService extends GROUP_CASE = caseBuilder.build(); } + private final ConvertorExecutor convertorExecutor; - public AllGroupsStatsService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed) { + + public AllGroupsStatsService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed, ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, compatibilityXidSeed); + this.convertorExecutor = convertorExecutor; } @@ -71,6 +75,6 @@ final class AllGroupsStatsService extends @Override public GroupStatisticsUpdated transformToNotification(List result, TransactionId emulatedTxId) { - return GroupStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), emulatedTxId); + return GroupStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), emulatedTxId, convertorExecutor); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllMeterConfigStatsService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllMeterConfigStatsService.java index 4055b69f04..19768808ad 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllMeterConfigStatsService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllMeterConfigStatsService.java @@ -17,7 +17,8 @@ import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.impl.services.RequestInputUtils; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.AbstractCompatibleStatService; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsOutput; @@ -54,8 +55,13 @@ final class AllMeterConfigStatsService METER_CONFIG_CASE = caseBuilder.build(); } - public AllMeterConfigStatsService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed) { + private final ConvertorExecutor convertorExecutor; + private final VersionConvertorData data; + + public AllMeterConfigStatsService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed, ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, compatibilityXidSeed); + this.convertorExecutor = convertorExecutor; + data = new VersionConvertorData(getVersion()); } @Override @@ -82,7 +88,7 @@ final class AllMeterConfigStatsService MultipartReplyMeterConfigCase caseBody = (MultipartReplyMeterConfigCase) mpReply.getMultipartReplyBody(); MultipartReplyMeterConfig replyBody = caseBody.getMultipartReplyMeterConfig(); - final Optional> meterConfigStatsList = ConvertorManager.getInstance().convert(replyBody.getMeterConfig()); + final Optional> meterConfigStatsList = convertorExecutor.convert(replyBody.getMeterConfig(), data); if (meterConfigStatsList.isPresent()) { message.getMeterConfigStats().addAll(meterConfigStatsList.get()); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllMeterStatsService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllMeterStatsService.java index aae79faed6..2c47f1ec58 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllMeterStatsService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/AllMeterStatsService.java @@ -16,6 +16,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.impl.services.RequestInputUtils; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.AbstractCompatibleStatService; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.MeterStatisticsToNotificationTransformer; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsOutput; @@ -46,8 +47,11 @@ final class AllMeterStatsService METER_CASE = caseBuilder.build(); } - public AllMeterStatsService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed) { + private final ConvertorExecutor convertorExecutor; + + public AllMeterStatsService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed, ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, compatibilityXidSeed); + this.convertorExecutor = convertorExecutor; } @Override @@ -65,6 +69,6 @@ final class AllMeterStatsService @Override public MeterStatisticsUpdated transformToNotification(List result, TransactionId emulatedTxId) { - return MeterStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), getOfVersion(), emulatedTxId); + return MeterStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), getOfVersion(), emulatedTxId, convertorExecutor); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/FlowsInTableService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/FlowsInTableService.java index 12641266b0..1bf30f6650 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/FlowsInTableService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/FlowsInTableService.java @@ -16,6 +16,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.impl.services.RequestInputUtils; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.AbstractCompatibleStatService; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.FlowStatisticsToNotificationTransformer; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchReactor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetFlowStatisticsFromFlowTableInput; @@ -32,8 +33,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 public final class FlowsInTableService extends AbstractCompatibleStatService { - public FlowsInTableService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, AtomicLong compatibilityXidSeed) { + private final ConvertorExecutor convertorExecutor; + + public FlowsInTableService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, AtomicLong compatibilityXidSeed, ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, compatibilityXidSeed); + this.convertorExecutor = convertorExecutor; } @Override @@ -73,7 +77,7 @@ public final class FlowsInTableService extends AbstractCompatibleStatService result, TransactionId emulatedTxId) { - return FlowStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), getOfVersion(), emulatedTxId); + return FlowStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), getOfVersion(), emulatedTxId, convertorExecutor); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/GroupDescriptionService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/GroupDescriptionService.java index f52eb469f3..1858309ae3 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/GroupDescriptionService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/GroupDescriptionService.java @@ -16,7 +16,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.impl.services.RequestInputUtils; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.AbstractCompatibleStatService; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupDescriptionInput; @@ -37,9 +37,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 final class GroupDescriptionService extends AbstractCompatibleStatService { private static final MultipartRequestGroupDescCase GROUP_DESC_CASE = new MultipartRequestGroupDescCaseBuilder().build(); + private final ConvertorExecutor convertorExecutor; - public GroupDescriptionService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed) { + public GroupDescriptionService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed, ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, compatibilityXidSeed); + this.convertorExecutor = convertorExecutor; } @Override @@ -68,7 +70,7 @@ final class GroupDescriptionService for (MultipartReply mpReply : result) { MultipartReplyGroupDescCase caseBody = (MultipartReplyGroupDescCase) mpReply.getMultipartReplyBody(); MultipartReplyGroupDesc replyBody = caseBody.getMultipartReplyGroupDesc(); - final Optional> groupDescStatsList = ConvertorManager.getInstance().convert( + final Optional> groupDescStatsList = convertorExecutor.convert( replyBody.getGroupDesc(), data); if (groupDescStatsList.isPresent()) { diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/GroupStatsService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/GroupStatsService.java index 77ec5014cc..edb78d16ce 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/GroupStatsService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/GroupStatsService.java @@ -15,6 +15,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.impl.services.RequestInputUtils; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.AbstractCompatibleStatService; import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.GroupStatisticsToNotificationTransformer; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupStatisticsOutput; @@ -31,8 +32,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 final class GroupStatsService extends AbstractCompatibleStatService { - public GroupStatsService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed) { + private final ConvertorExecutor convertorExecutor; + + public GroupStatsService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed, ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, compatibilityXidSeed); + this.convertorExecutor = convertorExecutor; } @Override @@ -56,6 +60,6 @@ final class GroupStatsService @Override public GroupStatisticsUpdated transformToNotification(List result, TransactionId emulatedTxId) { - return GroupStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), emulatedTxId); + return GroupStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), emulatedTxId, convertorExecutor); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/MatchingFlowsInTableService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/MatchingFlowsInTableService.java index f7050395c8..5e01317204 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/MatchingFlowsInTableService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/MatchingFlowsInTableService.java @@ -14,6 +14,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.impl.services.AbstractMultipartService; import org.opendaylight.openflowplugin.impl.services.RequestInputUtils; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchReactor; import org.opendaylight.openflowplugin.openflow.md.util.FlowCreatorUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput; @@ -25,8 +26,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 final class MatchingFlowsInTableService extends AbstractMultipartService { - public MatchingFlowsInTableService(final RequestContextStack requestContextStack, final DeviceContext deviceContext) { + private final ConvertorExecutor convertorExecutor; + + public MatchingFlowsInTableService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext); + this.convertorExecutor = convertorExecutor; } @Override @@ -60,7 +64,7 @@ final class MatchingFlowsInTableService extends AbstractMultipartService { - public MeterStatsService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed) { + private final ConvertorExecutor convertorExecutor; + + public MeterStatsService(RequestContextStack requestContextStack, DeviceContext deviceContext, AtomicLong compatibilityXidSeed, ConvertorExecutor convertorExecutor) { super(requestContextStack, deviceContext, compatibilityXidSeed); + this.convertorExecutor = convertorExecutor; } @Override @@ -57,6 +61,6 @@ final class MeterStatsService @Override public MeterStatisticsUpdated transformToNotification(List result, TransactionId emulatedTxId) { - return MeterStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), getOfVersion(), emulatedTxId); + return MeterStatisticsToNotificationTransformer.transformToNotification(result, getDeviceInfo(), getOfVersion(), emulatedTxId, convertorExecutor); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl.java index d028ad976c..3ab8c8b21a 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl.java @@ -19,6 +19,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.openflowplugin.api.openflow.device.TranslatorLibrary; import org.opendaylight.openflowplugin.api.openflow.md.core.TranslatorKey; import org.opendaylight.openflowplugin.api.openflow.statistics.compatibility.Delegator; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput; @@ -86,13 +87,13 @@ public class OpendaylightFlowStatisticsServiceImpl implements OpendaylightFlowSt private OpendaylightFlowStatisticsService delegate; public static OpendaylightFlowStatisticsServiceImpl createWithOook(final RequestContextStack requestContextStack, - final DeviceContext deviceContext) { - return new OpendaylightFlowStatisticsServiceImpl(requestContextStack, deviceContext, deviceContext.oook()); + final DeviceContext deviceContext, final ConvertorExecutor convertorExecutor) { + return new OpendaylightFlowStatisticsServiceImpl(requestContextStack, deviceContext, deviceContext.oook(), convertorExecutor); } public OpendaylightFlowStatisticsServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, - final TranslatorLibrary translatorLibrary) { - matchingFlowsInTable = new MatchingFlowsInTableService(requestContextStack, deviceContext); + final TranslatorLibrary translatorLibrary, final ConvertorExecutor convertorExecutor) { + matchingFlowsInTable = new MatchingFlowsInTableService(requestContextStack, deviceContext, convertorExecutor); this.translatorLibrary = translatorLibrary; } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightGroupStatisticsServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightGroupStatisticsServiceImpl.java index 28eaa8f023..b428aa7182 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightGroupStatisticsServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightGroupStatisticsServiceImpl.java @@ -12,6 +12,7 @@ import java.util.concurrent.atomic.AtomicLong; import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupDescriptionInput; @@ -35,12 +36,13 @@ public class OpendaylightGroupStatisticsServiceImpl implements OpendaylightGroup public OpendaylightGroupStatisticsServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final AtomicLong compatibilityXidSeed, - final NotificationPublishService notificationPublishService) { + final NotificationPublishService notificationPublishService, + final ConvertorExecutor convertorExecutor) { this.notificationPublishService = notificationPublishService; - allGroups = new AllGroupsStatsService(requestContextStack, deviceContext, compatibilityXidSeed); - groupDesc = new GroupDescriptionService(requestContextStack, deviceContext, compatibilityXidSeed); + allGroups = new AllGroupsStatsService(requestContextStack, deviceContext, compatibilityXidSeed, convertorExecutor); + groupDesc = new GroupDescriptionService(requestContextStack, deviceContext, compatibilityXidSeed, convertorExecutor); groupFeat = new GroupFeaturesService(requestContextStack, deviceContext, compatibilityXidSeed); - groupStats = new GroupStatsService(requestContextStack, deviceContext, compatibilityXidSeed); + groupStats = new GroupStatsService(requestContextStack, deviceContext, compatibilityXidSeed, convertorExecutor); } @Override diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImpl.java index 22f74d2767..4087e88282 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImpl.java @@ -12,6 +12,7 @@ import java.util.concurrent.atomic.AtomicLong; import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsInput; @@ -33,13 +34,14 @@ public class OpendaylightMeterStatisticsServiceImpl implements OpendaylightMeter public OpendaylightMeterStatisticsServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final AtomicLong compatibilityXidSeed, - final NotificationPublishService notificationPublishService) { + final NotificationPublishService notificationPublishService, + final ConvertorExecutor convertorExecutor) { this.notificationPublishService = notificationPublishService; - allMeterConfig = new AllMeterConfigStatsService(requestContextStack, deviceContext, compatibilityXidSeed); - allMeterStats = new AllMeterStatsService(requestContextStack, deviceContext, compatibilityXidSeed); + allMeterConfig = new AllMeterConfigStatsService(requestContextStack, deviceContext, compatibilityXidSeed, convertorExecutor); + allMeterStats = new AllMeterStatsService(requestContextStack, deviceContext, compatibilityXidSeed, convertorExecutor); meterFeatures = new MeterFeaturesService(requestContextStack, deviceContext, compatibilityXidSeed); - meterStats = new MeterStatsService(requestContextStack, deviceContext, compatibilityXidSeed); + meterStats = new MeterStatsService(requestContextStack, deviceContext, compatibilityXidSeed, convertorExecutor); } @Override diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/FlowStatisticsToNotificationTransformer.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/FlowStatisticsToNotificationTransformer.java index 27a7c6039c..3b4605959d 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/FlowStatisticsToNotificationTransformer.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/FlowStatisticsToNotificationTransformer.java @@ -14,7 +14,7 @@ import java.util.List; import java.util.Optional; import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdateBuilder; @@ -34,12 +34,14 @@ public class FlowStatisticsToNotificationTransformer { * @param deviceInfo device state * @param ofVersion device version * @param emulatedTxId + * @param convertorExecutor * @return notification containing flow stats */ public static FlowsStatisticsUpdate transformToNotification(final List mpResult, final DeviceInfo deviceInfo, final OpenflowVersion ofVersion, - final TransactionId emulatedTxId) { + final TransactionId emulatedTxId, + final ConvertorExecutor convertorExecutor) { final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(ofVersion.getVersion()); data.setDatapathId(deviceInfo.getDatapathId()); final FlowsStatisticsUpdateBuilder notification = new FlowsStatisticsUpdateBuilder(); @@ -55,7 +57,7 @@ public class FlowStatisticsToNotificationTransformer { MultipartReplyFlowCase caseBody = (MultipartReplyFlowCase) mpRawReply.getMultipartReplyBody(); MultipartReplyFlow replyBody = caseBody.getMultipartReplyFlow(); final Optional> outStatsItem = - ConvertorManager.getInstance().convert(replyBody.getFlowStats(), data); + convertorExecutor.convert(replyBody.getFlowStats(), data); if (outStatsItem.isPresent()) { diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/GroupStatisticsToNotificationTransformer.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/GroupStatisticsToNotificationTransformer.java index bf476ad659..39bbfeb6d4 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/GroupStatisticsToNotificationTransformer.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/GroupStatisticsToNotificationTransformer.java @@ -12,7 +12,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatisticsUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatisticsUpdatedBuilder; @@ -29,12 +30,15 @@ public class GroupStatisticsToNotificationTransformer { * @param mpReplyList raw multipart response from device * @param deviceInfo device state * @param emulatedTxId + * @param convertorExecutor * @return notification containing flow stats */ public static GroupStatisticsUpdated transformToNotification(final List mpReplyList, final DeviceInfo deviceInfo, - final TransactionId emulatedTxId) { + final TransactionId emulatedTxId, + final ConvertorExecutor convertorExecutor) { + VersionConvertorData data = new VersionConvertorData(deviceInfo.getVersion()); GroupStatisticsUpdatedBuilder notification = new GroupStatisticsUpdatedBuilder(); notification.setId(deviceInfo.getNodeId()); notification.setMoreReplies(Boolean.FALSE); @@ -45,8 +49,8 @@ public class GroupStatisticsToNotificationTransformer { for (MultipartReply mpReply : mpReplyList) { MultipartReplyGroupCase caseBody = (MultipartReplyGroupCase) mpReply.getMultipartReplyBody(); MultipartReplyGroup replyBody = caseBody.getMultipartReplyGroup(); - final Optional> groupStatsList = ConvertorManager.getInstance().convert( - replyBody.getGroupStats()); + final Optional> groupStatsList = convertorExecutor.convert( + replyBody.getGroupStats(), data); if (groupStatsList.isPresent()) { notification.getGroupStats().addAll(groupStatsList.get()); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/MeterStatisticsToNotificationTransformer.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/MeterStatisticsToNotificationTransformer.java index 8f15ba34cc..375fd66872 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/MeterStatisticsToNotificationTransformer.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/MeterStatisticsToNotificationTransformer.java @@ -13,7 +13,8 @@ import java.util.List; import java.util.Optional; import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterStatisticsUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterStatisticsUpdatedBuilder; @@ -32,13 +33,16 @@ public class MeterStatisticsToNotificationTransformer { * @param deviceInfo device state * @param ofVersion device version * @param emulatedTxId + * @param convertorExecutor * @return notification containing flow stats */ public static MeterStatisticsUpdated transformToNotification(final List mpReplyList, final DeviceInfo deviceInfo, final OpenflowVersion ofVersion, - final TransactionId emulatedTxId) { + final TransactionId emulatedTxId, + final ConvertorExecutor convertorExecutor) { + VersionConvertorData data = new VersionConvertorData(deviceInfo.getVersion()); MeterStatisticsUpdatedBuilder notification = new MeterStatisticsUpdatedBuilder(); notification.setId(deviceInfo.getNodeId()); notification.setMoreReplies(Boolean.FALSE); @@ -48,7 +52,7 @@ public class MeterStatisticsToNotificationTransformer { for (MultipartReply mpReply : mpReplyList) { MultipartReplyMeterCase caseBody = (MultipartReplyMeterCase) mpReply.getMultipartReplyBody(); MultipartReplyMeter replyBody = caseBody.getMultipartReplyMeter(); - final Optional> meterStatsList = ConvertorManager.getInstance().convert(replyBody.getMeterStats()); + final Optional> meterStatsList = convertorExecutor.convert(replyBody.getMeterStats(), data); if (meterStatsList.isPresent()) { notification.getMeterStats().addAll(meterStatsList.get()); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/OpendaylightFlowStatisticsServiceDelegateImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/OpendaylightFlowStatisticsServiceDelegateImpl.java index 199afcaccb..afd42d2e0f 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/OpendaylightFlowStatisticsServiceDelegateImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/OpendaylightFlowStatisticsServiceDelegateImpl.java @@ -16,6 +16,7 @@ import org.opendaylight.openflowplugin.impl.statistics.services.AggregateFlowsIn import org.opendaylight.openflowplugin.impl.statistics.services.AllFlowsInAllTablesService; import org.opendaylight.openflowplugin.impl.statistics.services.AllFlowsInTableService; import org.opendaylight.openflowplugin.impl.statistics.services.FlowsInTableService; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput; @@ -47,12 +48,13 @@ public class OpendaylightFlowStatisticsServiceDelegateImpl implements Opendaylig public OpendaylightFlowStatisticsServiceDelegateImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final NotificationPublishService notificationService, - final AtomicLong compatibilityXidSeed) { + final AtomicLong compatibilityXidSeed, + final ConvertorExecutor convertorExecutor) { this.notificationService = notificationService; aggregateFlowsInTable = AggregateFlowsInTableService.createWithOook(requestContextStack, deviceContext, compatibilityXidSeed); - allFlowsInAllTables = new AllFlowsInAllTablesService(requestContextStack, deviceContext, compatibilityXidSeed); - allFlowsInTable = new AllFlowsInTableService(requestContextStack, deviceContext, compatibilityXidSeed); - flowsInTable = new FlowsInTableService(requestContextStack, deviceContext, compatibilityXidSeed); + allFlowsInAllTables = new AllFlowsInAllTablesService(requestContextStack, deviceContext, compatibilityXidSeed, convertorExecutor); + allFlowsInTable = new AllFlowsInTableService(requestContextStack, deviceContext, compatibilityXidSeed, convertorExecutor); + flowsInTable = new FlowsInTableService(requestContextStack, deviceContext, compatibilityXidSeed, convertorExecutor); } /** diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/dedicated/StatisticsGatheringOnTheFlyService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/dedicated/StatisticsGatheringOnTheFlyService.java index 60f7b03f29..1ba77a309b 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/dedicated/StatisticsGatheringOnTheFlyService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/dedicated/StatisticsGatheringOnTheFlyService.java @@ -18,6 +18,7 @@ import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.Stati import org.opendaylight.openflowplugin.impl.common.MultipartRequestInputFactory; import org.opendaylight.openflowplugin.impl.services.AbstractMultipartOnTheFlyService; import org.opendaylight.openflowplugin.impl.statistics.ofpspecific.EventsTimeCounter; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; @@ -32,8 +33,8 @@ public class StatisticsGatheringOnTheFlyService extends AbstractMultipartOnTheFl private static final Logger LOG = LoggerFactory.getLogger(StatisticsGatheringOnTheFlyService.class); - public StatisticsGatheringOnTheFlyService(final RequestContextStack requestContextStack, final DeviceContext deviceContext) { - super(requestContextStack, deviceContext); + public StatisticsGatheringOnTheFlyService(final RequestContextStack requestContextStack, final DeviceContext deviceContext, final ConvertorExecutor convertorExecutor) { + super(requestContextStack, deviceContext, convertorExecutor); } @Override diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/AbstractDirectStatisticsService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/AbstractDirectStatisticsService.java index 9c200a990a..156c34a0cd 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/AbstractDirectStatisticsService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/AbstractDirectStatisticsService.java @@ -22,6 +22,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; import org.opendaylight.openflowplugin.impl.services.AbstractMultipartService; import org.opendaylight.openflowplugin.impl.services.RequestInputUtils; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.StoreStatsGrouping; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply; @@ -67,18 +68,25 @@ public abstract class AbstractDirectStatisticsService { + private final VersionDatapathIdConvertorData data; + /** * Instantiates a new Flow direct statistics service. - * - * @param requestContextStack the request context stack + * @param requestContextStack the request context stack * @param deviceContext the device context + * @param convertorExecutor */ - public FlowDirectStatisticsService(RequestContextStack requestContextStack, DeviceContext deviceContext) { - super(MultipartType.OFPMPFLOW, requestContextStack, deviceContext); + public FlowDirectStatisticsService(RequestContextStack requestContextStack, DeviceContext deviceContext, ConvertorExecutor convertorExecutor) { + super(MultipartType.OFPMPFLOW, requestContextStack, deviceContext, convertorExecutor); + data = new VersionDatapathIdConvertorData(getVersion()); + data.setDatapathId(getDatapathId()); } @Override @@ -93,7 +97,7 @@ public class FlowDirectStatisticsService extends AbstractDirectStatisticsService mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); } - MatchReactor.getInstance().convert(input.getMatch(), getVersion(), mprFlowRequestBuilder); + MatchReactor.getInstance().convert(input.getMatch(), getVersion(), mprFlowRequestBuilder, getConvertorExecutor()); return new MultipartRequestFlowCaseBuilder() .setMultipartRequestFlow(mprFlowRequestBuilder.build()) @@ -103,14 +107,12 @@ public class FlowDirectStatisticsService extends AbstractDirectStatisticsService @Override protected GetFlowStatisticsOutput buildReply(List input, boolean success) { final List statsList = new ArrayList<>(); - final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(getVersion()); - data.setDatapathId(getDatapathId()); if (success) { for (final MultipartReply mpReply : input) { final MultipartReplyFlowCase caseBody = (MultipartReplyFlowCase) mpReply.getMultipartReplyBody(); final MultipartReplyFlow replyBody = caseBody.getMultipartReplyFlow(); - final Optional> statsListPart = ConvertorManager.getInstance().convert( + final Optional> statsListPart = getConvertorExecutor().convert( replyBody.getFlowStats(), data); if (statsListPart.isPresent()) { diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/GroupDirectStatisticsService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/GroupDirectStatisticsService.java index 7037656e77..9a4925c8a9 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/GroupDirectStatisticsService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/GroupDirectStatisticsService.java @@ -15,7 +15,8 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetGroupStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetGroupStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetGroupStatisticsOutputBuilder; @@ -40,14 +41,17 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; * The Group direct statistics service. */ public class GroupDirectStatisticsService extends AbstractDirectStatisticsService { + private final VersionConvertorData data; + /** * Instantiates a new Group direct statistics service. - * - * @param requestContextStack the request context stack + * @param requestContextStack the request context stack * @param deviceContext the device context + * @param convertorExecutor */ - public GroupDirectStatisticsService(RequestContextStack requestContextStack, DeviceContext deviceContext) { - super(MultipartType.OFPMPGROUP, requestContextStack, deviceContext); + public GroupDirectStatisticsService(RequestContextStack requestContextStack, DeviceContext deviceContext, ConvertorExecutor convertorExecutor) { + super(MultipartType.OFPMPGROUP, requestContextStack, deviceContext, convertorExecutor); + data = new VersionConvertorData(getVersion()); } @Override @@ -73,8 +77,8 @@ public class GroupDirectStatisticsService extends AbstractDirectStatisticsServic for (final MultipartReply mpReply : input) { final MultipartReplyGroupCase caseBody = (MultipartReplyGroupCase) mpReply.getMultipartReplyBody(); final MultipartReplyGroup replyBody = caseBody.getMultipartReplyGroup(); - final Optional> groupStatsList = ConvertorManager.getInstance().convert( - replyBody.getGroupStats()); + final Optional> groupStatsList = getConvertorExecutor().convert( + replyBody.getGroupStats(), data); if (groupStatsList.isPresent()) { groupStats.addAll(groupStatsList.get()); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/MeterDirectStatisticsService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/MeterDirectStatisticsService.java index c67d126f45..1e1146d711 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/MeterDirectStatisticsService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/MeterDirectStatisticsService.java @@ -15,7 +15,8 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsOutputBuilder; @@ -40,14 +41,17 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; * The Meter direct statistics service. */ public class MeterDirectStatisticsService extends AbstractDirectStatisticsService { + private final VersionConvertorData data; + /** * Instantiates a new Meter direct statistics service. - * - * @param requestContextStack the request context stack + * @param requestContextStack the request context stack * @param deviceContext the device context + * @param convertorExecutor */ - public MeterDirectStatisticsService(RequestContextStack requestContextStack, DeviceContext deviceContext) { - super(MultipartType.OFPMPMETER, requestContextStack, deviceContext); + public MeterDirectStatisticsService(RequestContextStack requestContextStack, DeviceContext deviceContext, ConvertorExecutor convertorExecutor) { + super(MultipartType.OFPMPMETER, requestContextStack, deviceContext, convertorExecutor); + data = new VersionConvertorData(getVersion()); } @Override @@ -73,7 +77,7 @@ public class MeterDirectStatisticsService extends AbstractDirectStatisticsServic for (final MultipartReply mpReply : input) { final MultipartReplyMeterCase caseBody = (MultipartReplyMeterCase) mpReply.getMultipartReplyBody(); final MultipartReplyMeter replyBody = caseBody.getMultipartReplyMeter(); - final Optional> meterStatsList = ConvertorManager.getInstance().convert(replyBody.getMeterStats()); + final Optional> meterStatsList = getConvertorExecutor().convert(replyBody.getMeterStats(), data); if (meterStatsList.isPresent()) { meterStats.addAll(meterStatsList.get()); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/NodeConnectorDirectStatisticsService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/NodeConnectorDirectStatisticsService.java index 6f8017100a..2efa1cf349 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/NodeConnectorDirectStatisticsService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/NodeConnectorDirectStatisticsService.java @@ -14,6 +14,7 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetNodeConnectorStatisticsInput; @@ -48,12 +49,12 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class NodeConnectorDirectStatisticsService extends AbstractDirectStatisticsService { /** * Instantiates a new Node connector direct statistics service. - * - * @param requestContextStack the request context stack + * @param requestContextStack the request context stack * @param deviceContext the device context + * @param convertorExecutor */ - public NodeConnectorDirectStatisticsService(RequestContextStack requestContextStack, DeviceContext deviceContext) { - super(MultipartType.OFPMPPORTSTATS, requestContextStack, deviceContext); + public NodeConnectorDirectStatisticsService(RequestContextStack requestContextStack, DeviceContext deviceContext, ConvertorExecutor convertorExecutor) { + super(MultipartType.OFPMPPORTSTATS, requestContextStack, deviceContext, convertorExecutor); } @Override diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/QueueDirectStatisticsService.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/QueueDirectStatisticsService.java index dd0d136c65..9ebbece586 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/QueueDirectStatisticsService.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/QueueDirectStatisticsService.java @@ -14,6 +14,7 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64; @@ -51,12 +52,12 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class QueueDirectStatisticsService extends AbstractDirectStatisticsService { /** * Instantiates a new Queue direct statistics service. - * - * @param requestContextStack the request context stack + * @param requestContextStack the request context stack * @param deviceContext the device context + * @param convertorExecutor */ - public QueueDirectStatisticsService(RequestContextStack requestContextStack, DeviceContext deviceContext) { - super(MultipartType.OFPMPQUEUE, requestContextStack, deviceContext); + public QueueDirectStatisticsService(RequestContextStack requestContextStack, DeviceContext deviceContext, ConvertorExecutor convertorExecutor) { + super(MultipartType.OFPMPQUEUE, requestContextStack, deviceContext, convertorExecutor); } @Override diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedTranslator.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedTranslator.java index c72a6b79e2..eb9ff12296 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedTranslator.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedTranslator.java @@ -10,7 +10,7 @@ package org.opendaylight.openflowplugin.impl.translator; import java.util.Optional; import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; import org.opendaylight.openflowplugin.api.openflow.device.MessageTranslator; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.FlowRemovedBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie; @@ -22,6 +22,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 * translate {@link FlowRemoved} message to FlowRemoved notification (omit instructions) */ public class FlowRemovedTranslator implements MessageTranslator { + private final ConvertorExecutor convertorExecutor; + + public FlowRemovedTranslator(ConvertorExecutor convertorExecutor) { + this.convertorExecutor = convertorExecutor; + } + + protected ConvertorExecutor getConvertorExecutor() { + return convertorExecutor; + } @Override public org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.FlowRemoved translate(FlowRemoved input, DeviceInfo deviceInfo, Object connectionDistinguisher) { @@ -39,7 +48,7 @@ public class FlowRemovedTranslator implements MessageTranslator matchBuilderOptional = ConvertorManager.getInstance().convert( + final Optional matchBuilderOptional = getConvertorExecutor().convert( flowRemoved.getMatch(), datapathIdConvertorData); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedV10Translator.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedV10Translator.java index d4685e0738..997321dfac 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedV10Translator.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedV10Translator.java @@ -10,7 +10,7 @@ package org.opendaylight.openflowplugin.impl.translator; import java.util.Optional; import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemoved; @@ -20,12 +20,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 */ public class FlowRemovedV10Translator extends FlowRemovedTranslator { + public FlowRemovedV10Translator(ConvertorExecutor convertorExecutor) { + super(convertorExecutor); + } + @Override protected MatchBuilder translateMatch(FlowRemoved flowRemoved, DeviceInfo deviceInfo) { final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(deviceInfo.getVersion()); datapathIdConvertorData.setDatapathId(deviceInfo.getDatapathId()); - final Optional matchBuilderOptional = ConvertorManager.getInstance().convert( + final Optional matchBuilderOptional = getConvertorExecutor().convert( flowRemoved.getMatchV10(), datapathIdConvertorData); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/PacketReceivedTranslator.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/PacketReceivedTranslator.java index b7e1a8bed0..f37474da37 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/PacketReceivedTranslator.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/PacketReceivedTranslator.java @@ -18,7 +18,7 @@ import org.opendaylight.openflowplugin.extension.api.AugmentTuple; import org.opendaylight.openflowplugin.extension.api.path.MatchPath; import org.opendaylight.openflowplugin.impl.util.NodeConnectorRefToPortTranslator; import org.opendaylight.openflowplugin.openflow.md.core.extension.MatchExtensionHelper; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.PacketInUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie; @@ -33,6 +33,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Table * Created by tkubas on 4/1/15. */ public class PacketReceivedTranslator implements MessageTranslator { + private final ConvertorExecutor convertorExecutor; + + public PacketReceivedTranslator(ConvertorExecutor convertorExecutor) { + this.convertorExecutor = convertorExecutor; + } + @Override public PacketReceived translate(final PacketInMessage input, final DeviceInfo deviceInfo, final Object connectionDistinguisher) { @@ -73,11 +79,11 @@ public class PacketReceivedTranslator implements MessageTranslator matchOptional = ConvertorManager.getInstance().convert(input.getMatch(), datapathIdConvertorData); + final Optional matchOptional = convertorExecutor.convert(input.getMatch(), datapathIdConvertorData); final MatchBuilder matchBuilder = matchOptional.isPresent() ? new MatchBuilder(matchOptional.get().build()) : new MatchBuilder(); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/DeviceInitializationUtils.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/DeviceInitializationUtils.java index ec8930f473..ab7d8a6ce1 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/DeviceInitializationUtils.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/DeviceInitializationUtils.java @@ -39,6 +39,7 @@ import org.opendaylight.openflowplugin.impl.common.NodeStaticReplyTranslatorUtil import org.opendaylight.openflowplugin.impl.rpc.AbstractRequestContext; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector; @@ -93,9 +94,10 @@ public class DeviceInitializationUtils { * * @param deviceContext * @param switchFeaturesMandatory + * @param convertorExecutor * @return future - recommended to have blocking call for this future */ - public static ListenableFuture initializeNodeInformation(final DeviceContext deviceContext, final boolean switchFeaturesMandatory) { + public static ListenableFuture initializeNodeInformation(final DeviceContext deviceContext, final boolean switchFeaturesMandatory, final ConvertorExecutor convertorExecutor) { Preconditions.checkArgument(deviceContext != null); final DeviceState deviceState = Preconditions.checkNotNull(deviceContext.getDeviceState()); final DeviceInfo deviceInfo = deviceContext.getDeviceInfo(); @@ -144,7 +146,7 @@ public class DeviceInitializationUtils { final Capabilities capabilities = connectionContext.getFeatures().getCapabilities(); LOG.debug("Setting capabilities for device {}", deviceInfo.getNodeId()); DeviceStateUtil.setDeviceStateBasedOnV13Capabilities(deviceState, capabilities); - deviceFeaturesFuture = createDeviceFeaturesForOF13(deviceContext, deviceState, switchFeaturesMandatory); + deviceFeaturesFuture = createDeviceFeaturesForOF13(deviceContext, switchFeaturesMandatory, convertorExecutor); } else { deviceFeaturesFuture = Futures.immediateFailedFuture(new ConnectionException("Unsupported version " + version)); @@ -192,7 +194,7 @@ public class DeviceInitializationUtils { } private static ListenableFuture>>> createDeviceFeaturesForOF13( - final DeviceContext deviceContext, final DeviceState deviceState, final boolean switchFeaturesMandatory) { + final DeviceContext deviceContext, final boolean switchFeaturesMandatory, final ConvertorExecutor convertorExecutor) { final ListenableFuture>> replyDesc = getNodeStaticInfo(MultipartType.OFPMPDESC, deviceContext, deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), deviceContext.getDeviceInfo().getVersion()); @@ -205,32 +207,32 @@ public class DeviceInitializationUtils { final RpcResult> rpcResult) throws Exception { translateAndWriteReply(MultipartType.OFPMPDESC, deviceContext, - deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), rpcResult.getResult()); + deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), rpcResult.getResult(), convertorExecutor); final ListenableFuture>> replyMeterFeature = getNodeStaticInfo( MultipartType.OFPMPMETERFEATURES, deviceContext, deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), deviceContext.getDeviceInfo().getVersion()); createSuccessProcessingCallback(MultipartType.OFPMPMETERFEATURES, deviceContext, - deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), replyMeterFeature); + deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), replyMeterFeature, convertorExecutor); final ListenableFuture>> replyGroupFeatures = getNodeStaticInfo( MultipartType.OFPMPGROUPFEATURES, deviceContext, deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), deviceContext.getDeviceInfo().getVersion()); createSuccessProcessingCallback(MultipartType.OFPMPGROUPFEATURES, deviceContext, - deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), replyGroupFeatures); + deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), replyGroupFeatures, convertorExecutor); final ListenableFuture>> replyTableFeatures = getNodeStaticInfo( MultipartType.OFPMPTABLEFEATURES, deviceContext, deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), deviceContext.getDeviceInfo().getVersion()); createSuccessProcessingCallback(MultipartType.OFPMPTABLEFEATURES, deviceContext, - deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), replyTableFeatures); + deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), replyTableFeatures, convertorExecutor); final ListenableFuture>> replyPortDescription = getNodeStaticInfo( MultipartType.OFPMPPORTDESC, deviceContext, deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), deviceContext.getDeviceInfo().getVersion()); createSuccessProcessingCallback(MultipartType.OFPMPPORTDESC, deviceContext, - deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), replyPortDescription); + deviceContext.getDeviceInfo().getNodeInstanceIdentifier(), replyPortDescription, convertorExecutor); if (switchFeaturesMandatory) { return Futures.allAsList(Arrays.asList(replyMeterFeature, replyGroupFeatures, replyTableFeatures, replyPortDescription)); @@ -244,7 +246,8 @@ public class DeviceInitializationUtils { } static void translateAndWriteReply(final MultipartType type, final DeviceContext dContext, - final InstanceIdentifier nodeII, final Collection result) { + final InstanceIdentifier nodeII, final Collection result, + final ConvertorExecutor convertorExecutor) { try { for (final MultipartReply reply : result) { final MultipartReplyBody body = reply.getMultipartReplyBody(); @@ -263,7 +266,7 @@ public class DeviceInitializationUtils { final MultipartReplyTableFeatures tableFeaturesMP = ((MultipartReplyTableFeaturesCase) body) .getMultipartReplyTableFeatures(); final List tableFeatures = NodeStaticReplyTranslatorUtil - .nodeTableFeatureTranslator(tableFeaturesMP); + .nodeTableFeatureTranslator(tableFeaturesMP, dContext.getDeviceInfo().getVersion(), convertorExecutor); for (final TableFeatures tableFeature : tableFeatures) { final Short tableId = tableFeature.getTableId(); final KeyedInstanceIdentifier tableFeaturesII = @@ -394,14 +397,15 @@ public class DeviceInitializationUtils { static void createSuccessProcessingCallback(final MultipartType type, final DeviceContext deviceContext, final InstanceIdentifier nodeII, - final ListenableFuture>> requestContextFuture) { + final ListenableFuture>> requestContextFuture, + final ConvertorExecutor convertorExecutor) { Futures.addCallback(requestContextFuture, new FutureCallback>>() { @Override public void onSuccess(final RpcResult> rpcResult) { final List result = rpcResult.getResult(); if (result != null) { LOG.info("Static node {} info: {} collected", deviceContext.getDeviceInfo().getNodeId(), type); - translateAndWriteReply(type, deviceContext, nodeII, result); + translateAndWriteReply(type, deviceContext, nodeII, result, convertorExecutor); } else { final Iterator rpcErrorIterator = rpcResult.getErrors().iterator(); while (rpcErrorIterator.hasNext()) { diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtils.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtils.java index 71d1ddd5e7..25860087b9 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtils.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtils.java @@ -8,7 +8,6 @@ package org.opendaylight.openflowplugin.impl.util; import com.google.common.base.Preconditions; -import com.google.common.base.Verify; import com.google.common.reflect.TypeToken; import java.util.concurrent.atomic.AtomicLong; import javax.annotation.CheckForNull; @@ -45,6 +44,7 @@ import org.opendaylight.openflowplugin.impl.statistics.services.direct.NodeConne import org.opendaylight.openflowplugin.impl.statistics.services.direct.OpendaylightDirectStatisticsServiceImpl; import org.opendaylight.openflowplugin.impl.statistics.services.direct.OpendaylightDirectStatisticsServiceProvider; import org.opendaylight.openflowplugin.impl.statistics.services.direct.QueueDirectStatisticsService; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.OpendaylightDirectStatisticsService; import org.opendaylight.yang.gen.v1.urn.opendaylight.echo.service.rev150305.SalEchoService; import org.opendaylight.yang.gen.v1.urn.opendaylight.experimenter.message.service.rev151020.SalExperimenterMessageService; @@ -80,21 +80,22 @@ public class MdSalRegistrationUtils { /** * Method registers all OF services for role {@link OfpRole#BECOMEMASTER} - * - * @param rpcContext - registration processing is implemented in {@link RpcContext} - * @param deviceContext - every service needs {@link DeviceContext} as input parameter + * @param rpcContext - registration processing is implemented in {@link org.opendaylight.openflowplugin.api.openflow.rpc.RpcContext} + * @param deviceContext - every service needs {@link org.opendaylight.openflowplugin.api.openflow.device.DeviceContext} as input parameter + * @param convertorExecutor */ public static void registerServices(@CheckForNull final RpcContext rpcContext, @CheckForNull final DeviceContext deviceContext, - final ExtensionConverterProvider extensionConverterProvider) { + final ExtensionConverterProvider extensionConverterProvider, + final ConvertorExecutor convertorExecutor) { Preconditions.checkArgument(rpcContext != null); Preconditions.checkArgument(deviceContext != null); // create service instances - final SalFlowServiceImpl salFlowService = new SalFlowServiceImpl(rpcContext, deviceContext); + final SalFlowServiceImpl salFlowService = new SalFlowServiceImpl(rpcContext, deviceContext, convertorExecutor); final FlowCapableTransactionServiceImpl flowCapableTransactionService = new FlowCapableTransactionServiceImpl(rpcContext, deviceContext); - final SalGroupServiceImpl salGroupService = new SalGroupServiceImpl(rpcContext, deviceContext); - final SalMeterServiceImpl salMeterService = new SalMeterServiceImpl(rpcContext, deviceContext); + final SalGroupServiceImpl salGroupService = new SalGroupServiceImpl(rpcContext, deviceContext, convertorExecutor); + final SalMeterServiceImpl salMeterService = new SalMeterServiceImpl(rpcContext, deviceContext, convertorExecutor); // register routed service instances rpcContext.registerRpcServiceImplementation(SalEchoService.class, new SalEchoServiceImpl(rpcContext, deviceContext)); @@ -103,19 +104,19 @@ public class MdSalRegistrationUtils { rpcContext.registerRpcServiceImplementation(FlowCapableTransactionService.class, flowCapableTransactionService); rpcContext.registerRpcServiceImplementation(SalMeterService.class, salMeterService); rpcContext.registerRpcServiceImplementation(SalGroupService.class, salGroupService); - rpcContext.registerRpcServiceImplementation(SalTableService.class, new SalTableServiceImpl(rpcContext, deviceContext, deviceContext.getPrimaryConnectionContext().getNodeId())); - rpcContext.registerRpcServiceImplementation(SalPortService.class, new SalPortServiceImpl(rpcContext, deviceContext)); - rpcContext.registerRpcServiceImplementation(PacketProcessingService.class, new PacketProcessingServiceImpl(rpcContext, deviceContext)); + rpcContext.registerRpcServiceImplementation(SalTableService.class, new SalTableServiceImpl(rpcContext, deviceContext, convertorExecutor)); + rpcContext.registerRpcServiceImplementation(SalPortService.class, new SalPortServiceImpl(rpcContext, deviceContext, convertorExecutor)); + rpcContext.registerRpcServiceImplementation(PacketProcessingService.class, new PacketProcessingServiceImpl(rpcContext, deviceContext, convertorExecutor)); rpcContext.registerRpcServiceImplementation(NodeConfigService.class, new NodeConfigServiceImpl(rpcContext, deviceContext)); - rpcContext.registerRpcServiceImplementation(OpendaylightFlowStatisticsService.class, OpendaylightFlowStatisticsServiceImpl.createWithOook(rpcContext, deviceContext)); + rpcContext.registerRpcServiceImplementation(OpendaylightFlowStatisticsService.class, OpendaylightFlowStatisticsServiceImpl.createWithOook(rpcContext, deviceContext, convertorExecutor)); // Direct statistics gathering final OpendaylightDirectStatisticsServiceProvider statisticsProvider = new OpendaylightDirectStatisticsServiceProvider(); - statisticsProvider.register(FlowDirectStatisticsService.class, new FlowDirectStatisticsService(rpcContext, deviceContext)); - statisticsProvider.register(GroupDirectStatisticsService.class, new GroupDirectStatisticsService(rpcContext, deviceContext)); - statisticsProvider.register(MeterDirectStatisticsService.class, new MeterDirectStatisticsService(rpcContext, deviceContext)); - statisticsProvider.register(NodeConnectorDirectStatisticsService.class, new NodeConnectorDirectStatisticsService(rpcContext, deviceContext)); - statisticsProvider.register(QueueDirectStatisticsService.class, new QueueDirectStatisticsService(rpcContext, deviceContext)); + statisticsProvider.register(FlowDirectStatisticsService.class, new FlowDirectStatisticsService(rpcContext, deviceContext, convertorExecutor)); + statisticsProvider.register(GroupDirectStatisticsService.class, new GroupDirectStatisticsService(rpcContext, deviceContext, convertorExecutor)); + statisticsProvider.register(MeterDirectStatisticsService.class, new MeterDirectStatisticsService(rpcContext, deviceContext, convertorExecutor)); + statisticsProvider.register(NodeConnectorDirectStatisticsService.class, new NodeConnectorDirectStatisticsService(rpcContext, deviceContext, convertorExecutor)); + statisticsProvider.register(QueueDirectStatisticsService.class, new QueueDirectStatisticsService(rpcContext, deviceContext, convertorExecutor)); rpcContext.registerRpcServiceImplementation(OpendaylightDirectStatisticsService.class, new OpendaylightDirectStatisticsServiceImpl(statisticsProvider)); final SalFlatBatchServiceImpl salFlatBatchService = new SalFlatBatchServiceImpl( @@ -158,13 +159,14 @@ public class MdSalRegistrationUtils { /** * Support deprecated statistic related services for backward compatibility. The only exception from deprecation is * the aggregated flow statistic with match criteria input. - * - * @param rpcContext + * @param rpcContext * @param deviceContext * @param notificationPublishService + * @param convertorExecutor */ public static void registerStatCompatibilityServices(final RpcContext rpcContext, final DeviceContext deviceContext, - final NotificationPublishService notificationPublishService) { + final NotificationPublishService notificationPublishService, + final ConvertorExecutor convertorExecutor) { AtomicLong compatibilityXidSeed = new AtomicLong(); // pickup low statistics service @@ -173,16 +175,16 @@ public class MdSalRegistrationUtils { Preconditions.checkArgument(COMPOSITE_SERVICE_TYPE_TOKEN.isAssignableFrom(flowStatisticsService.getClass())); // attach delegate to flow statistics service (to cover all but aggregated stats with match filter input) final OpendaylightFlowStatisticsServiceDelegateImpl flowStatisticsDelegate = - new OpendaylightFlowStatisticsServiceDelegateImpl(rpcContext, deviceContext, notificationPublishService, new AtomicLong()); + new OpendaylightFlowStatisticsServiceDelegateImpl(rpcContext, deviceContext, notificationPublishService, new AtomicLong(), convertorExecutor); ((Delegator) flowStatisticsService).setDelegate(flowStatisticsDelegate); // register all statistics (deprecated) services rpcContext.registerRpcServiceImplementation(OpendaylightFlowTableStatisticsService.class, new OpendaylightFlowTableStatisticsServiceImpl(rpcContext, deviceContext, compatibilityXidSeed, notificationPublishService)); rpcContext.registerRpcServiceImplementation(OpendaylightGroupStatisticsService.class, - new OpendaylightGroupStatisticsServiceImpl(rpcContext, deviceContext, compatibilityXidSeed, notificationPublishService)); + new OpendaylightGroupStatisticsServiceImpl(rpcContext, deviceContext, compatibilityXidSeed, notificationPublishService, convertorExecutor)); rpcContext.registerRpcServiceImplementation(OpendaylightMeterStatisticsService.class, - new OpendaylightMeterStatisticsServiceImpl(rpcContext, deviceContext, compatibilityXidSeed, notificationPublishService)); + new OpendaylightMeterStatisticsServiceImpl(rpcContext, deviceContext, compatibilityXidSeed, notificationPublishService, convertorExecutor)); rpcContext.registerRpcServiceImplementation(OpendaylightQueueStatisticsService.class, new OpendaylightQueueStatisticsServiceImpl(rpcContext, deviceContext, compatibilityXidSeed, notificationPublishService)); rpcContext.registerRpcServiceImplementation(OpendaylightPortStatisticsService.class, diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/TranslatorLibraryUtil.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/TranslatorLibraryUtil.java index dd02168d26..8ec2c59c90 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/TranslatorLibraryUtil.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/TranslatorLibraryUtil.java @@ -18,6 +18,7 @@ import org.opendaylight.openflowplugin.impl.translator.PacketReceivedTranslator; import org.opendaylight.openflowplugin.impl.translator.PortUpdateTranslator; import org.opendaylight.openflowplugin.impl.translator.TranslatorKeyFactory; import org.opendaylight.openflowplugin.impl.translator.TranslatorLibraryBuilder; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemoved; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketIn; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping; @@ -35,23 +36,20 @@ public final class TranslatorLibraryUtil { private static final TranslatorKeyFactory of13TranslatorKeyFactory = new TranslatorKeyFactory(OFConstants.OFP_VERSION_1_3); private static final TranslatorKeyFactory of10TranslatorKeyFactory = new TranslatorKeyFactory(OFConstants.OFP_VERSION_1_0); - private static final TranslatorLibrary basicTranslatorLibrary; - static { - basicTranslatorLibrary = new TranslatorLibraryBuilder(). - addTranslator(of13TranslatorKeyFactory.createTranslatorKey(PacketIn.class), new PacketReceivedTranslator()). + public static void injectBasicTranslatorLibrary(final TranslatorLibrarian librarian, final ConvertorExecutor convertorExecutor) { + final TranslatorLibrary basicTranslatorLibrary = new TranslatorLibraryBuilder(). + addTranslator(of13TranslatorKeyFactory.createTranslatorKey(PacketIn.class), new PacketReceivedTranslator(convertorExecutor)). addTranslator(of13TranslatorKeyFactory.createTranslatorKey(PortGrouping.class), new PortUpdateTranslator()). addTranslator(of13TranslatorKeyFactory.createTranslatorKey(MultipartReplyAggregateCase.class), new AggregatedFlowStatisticsTranslator()). - addTranslator(of13TranslatorKeyFactory.createTranslatorKey(FlowRemoved.class), new FlowRemovedTranslator()). - addTranslator(of10TranslatorKeyFactory.createTranslatorKey(PacketIn.class), new PacketReceivedTranslator()). + addTranslator(of13TranslatorKeyFactory.createTranslatorKey(FlowRemoved.class), new FlowRemovedTranslator(convertorExecutor)). + addTranslator(of10TranslatorKeyFactory.createTranslatorKey(PacketIn.class), new PacketReceivedTranslator(convertorExecutor)). addTranslator(of10TranslatorKeyFactory.createTranslatorKey(PortGrouping.class), new PortUpdateTranslator()). addTranslator(of10TranslatorKeyFactory.createTranslatorKey(MultipartReplyAggregateCase.class), new AggregatedFlowStatisticsTranslator()). - addTranslator(of10TranslatorKeyFactory.createTranslatorKey(FlowRemoved.class), new FlowRemovedV10Translator()). + addTranslator(of10TranslatorKeyFactory.createTranslatorKey(FlowRemoved.class), new FlowRemovedV10Translator(convertorExecutor)). build(); - } - public static void setBasicTranslatorLibrary(final TranslatorLibrarian librarian) { librarian.setTranslatorLibrary(basicTranslatorLibrary); } } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/LifecycleConductorImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/LifecycleConductorImplTest.java index c1ba409b27..99a1cf4ce5 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/LifecycleConductorImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/LifecycleConductorImplTest.java @@ -38,6 +38,8 @@ import org.opendaylight.openflowplugin.api.openflow.rpc.RpcManager; import org.opendaylight.openflowplugin.api.openflow.statistics.StatisticsManager; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageIntelligenceAgency; import org.opendaylight.openflowplugin.impl.registry.flow.DeviceFlowRegistryImpl; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; @@ -92,8 +94,9 @@ public class LifecycleConductorImplTest { @Before public void setUp() { nodeInstanceIdentifier = InstanceIdentifier.create(Nodes.class).child(Node.class, new NodeKey(nodeId)); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); - lifecycleConductor = new LifecycleConductorImpl(messageIntelligenceAgency); + lifecycleConductor = new LifecycleConductorImpl(messageIntelligenceAgency, convertorManager); lifecycleConductor.setSafelyManager(deviceManager); lifecycleConductor.setSafelyManager(statisticsManager); lifecycleConductor.setSafelyManager(rpcManager); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImplTest.java index 06faed2cb7..5294656ae9 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImplTest.java @@ -57,6 +57,8 @@ import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceTermin import org.opendaylight.openflowplugin.api.openflow.lifecycle.LifecycleConductor; import org.opendaylight.openflowplugin.api.openflow.md.core.TranslatorKey; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageIntelligenceAgency; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Capabilities; @@ -148,8 +150,9 @@ public class DeviceManagerImplTest { when(mockedWriteTransaction.submit()).thenReturn(mockedFuture); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); final DeviceManagerImpl deviceManager = new DeviceManagerImpl(mockedDataBroker, - TEST_VALUE_GLOBAL_NOTIFICATION_QUOTA, false, barrierIntervalNanos, barrierCountLimit, lifecycleConductor, true); + TEST_VALUE_GLOBAL_NOTIFICATION_QUOTA, false, barrierIntervalNanos, barrierCountLimit, lifecycleConductor, true, convertorManager); deviceManager.setDeviceInitializationPhaseHandler(deviceInitPhaseHandler); deviceManager.setDeviceTerminationPhaseHandler(deviceTerminationPhaseHandler); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/MultipartRequestOnTheFlyCallbackTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/MultipartRequestOnTheFlyCallbackTest.java index c86bc598f9..a085ce1e4c 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/MultipartRequestOnTheFlyCallbackTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/MultipartRequestOnTheFlyCallbackTest.java @@ -44,6 +44,8 @@ import org.opendaylight.openflowplugin.api.openflow.registry.flow.FlowRegistryKe import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.EventIdentifier; import org.opendaylight.openflowplugin.impl.rpc.AbstractRequestContext; import org.opendaylight.openflowplugin.impl.statistics.ofpspecific.MessageIntelligenceAgencyImpl; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table; @@ -128,6 +130,7 @@ public class MultipartRequestOnTheFlyCallbackTest { when(mockedDeviceState.deviceSynchronized()).thenReturn(true); when(mockedDeviceInfo.getNodeId()).thenReturn(mockedNodeId); when(mockedDeviceInfo.getDatapathId()).thenReturn(BigInteger.TEN); + when(mockedDeviceInfo.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3); when(mockedDeviceContext.getDeviceState()).thenReturn(mockedDeviceState); when(mockedDeviceContext.getDeviceInfo()).thenReturn(mockedDeviceInfo); @@ -148,9 +151,11 @@ public class MultipartRequestOnTheFlyCallbackTest { //NOOP } }; + + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); multipartRequestOnTheFlyCallback = new MultipartRequestOnTheFlyCallback(dummyRequestContext, String.class, mockedDeviceContext.getMessageSpy(),dummyEventIdentifier, mockedDeviceInfo, - mockedDeviceContext.getDeviceFlowRegistry(), mockedDeviceContext); + mockedDeviceContext.getDeviceFlowRegistry(), mockedDeviceContext, convertorManager); } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/PacketProcessingServiceImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/PacketProcessingServiceImplTest.java index 7647e5c336..8438f00966 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/PacketProcessingServiceImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/PacketProcessingServiceImplTest.java @@ -15,6 +15,8 @@ import static org.mockito.Mockito.verify; import org.junit.Test; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.device.Xid; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; @@ -45,7 +47,8 @@ public class PacketProcessingServiceImplTest extends ServiceMocking { @Override protected void setup() { - packetProcessingService = new PacketProcessingServiceImpl(mockedRequestContextStack, mockedDeviceContext); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + packetProcessingService = new PacketProcessingServiceImpl(mockedRequestContextStack, mockedDeviceContext, convertorManager); pathToNodeconnector = KeyedInstanceIdentifier.create(Nodes.class) .child(Node.class, new NodeKey(new NodeId("ofp-ut:123"))) .child(NodeConnector.class, new NodeConnectorKey(new NodeConnectorId("ofp-ut:123:1"))); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalFlowServiceImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalFlowServiceImplTest.java index 070cf5e32b..89cbef6d7e 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalFlowServiceImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalFlowServiceImplTest.java @@ -38,6 +38,8 @@ import org.opendaylight.openflowplugin.api.openflow.registry.flow.FlowDescriptor import org.opendaylight.openflowplugin.api.openflow.registry.flow.FlowRegistryKey; import org.opendaylight.openflowplugin.api.openflow.rpc.listener.ItemLifecycleListener; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table; @@ -139,7 +141,8 @@ public class SalFlowServiceImplTest extends TestCase { when(mockedDeviceContext.getDeviceState()).thenReturn(mockedDeviceState); when(mockedDeviceContext.getDeviceInfo()).thenReturn(mockedDeviceInfo); - salFlowService = new SalFlowServiceImpl(mockedRequestContextStack, mockedDeviceContext); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + salFlowService = new SalFlowServiceImpl(mockedRequestContextStack, mockedDeviceContext, convertorManager); } @Test diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalGroupServiceImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalGroupServiceImplTest.java index fa0d1aae8f..f0814d8962 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalGroupServiceImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalGroupServiceImplTest.java @@ -17,6 +17,8 @@ import org.mockito.Matchers; import org.mockito.Mock; import org.opendaylight.openflowplugin.api.openflow.registry.group.DeviceGroupRegistry; import org.opendaylight.openflowplugin.api.openflow.rpc.listener.ItemLifecycleListener; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupOutput; @@ -48,7 +50,8 @@ public class SalGroupServiceImplTest extends ServiceMocking { public void initialization() { super.initialization(); when(mockedDeviceContext.getDeviceGroupRegistry()).thenReturn(mockedDeviceGroupRegistry); - salGroupService = new SalGroupServiceImpl(mockedRequestContextStack, mockedDeviceContext); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + salGroupService = new SalGroupServiceImpl(mockedRequestContextStack, mockedDeviceContext, convertorManager); } @Test diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImplTest.java index 0a04fd52bb..ea20a88647 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImplTest.java @@ -17,6 +17,8 @@ import org.mockito.Matchers; import org.mockito.Mock; import org.opendaylight.openflowplugin.api.openflow.registry.meter.DeviceMeterRegistry; import org.opendaylight.openflowplugin.api.openflow.rpc.listener.ItemLifecycleListener; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput; @@ -48,7 +50,8 @@ public class SalMeterServiceImplTest extends ServiceMocking { public void initialization() { super.initialization(); when(mockedDeviceContext.getDeviceMeterRegistry()).thenReturn(mockedDeviceMeterRegistry); - salMeterService = new SalMeterServiceImpl(mockedRequestContextStack, mockedDeviceContext); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + salMeterService = new SalMeterServiceImpl(mockedRequestContextStack, mockedDeviceContext, convertorManager); } @Test diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImplTest.java index 04bd3e227b..a8940cb58f 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImplTest.java @@ -15,6 +15,8 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.openflowplugin.api.openflow.device.Xid; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures; @@ -38,7 +40,8 @@ public class SalPortServiceImplTest extends ServiceMocking { @Override public void initialization() { super.initialization(); - salPortService = new SalPortServiceImpl(mockedRequestContextStack, mockedDeviceContext); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + salPortService = new SalPortServiceImpl(mockedRequestContextStack, mockedDeviceContext, convertorManager); } @Test diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalTableServiceImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalTableServiceImplTest.java index 442e051779..3bf020e83e 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalTableServiceImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/SalTableServiceImplTest.java @@ -27,6 +27,8 @@ import org.mockito.stubbing.Answer; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.EventIdentifier; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessageBuilder; @@ -70,8 +72,9 @@ public class SalTableServiceImplTest extends ServiceMocking { .when(mockedOutboundQueue).commitEntry( Matchers.anyLong(), Matchers.any(), Matchers.>any()); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); salTableService = new SalTableServiceImpl(mockedRequestContextStack, mockedDeviceContext, - mockedDeviceContext.getPrimaryConnectionContext().getNodeId()); + convertorManager); } @Test diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/SinglePurposeMultipartReplyTranslatorTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/SinglePurposeMultipartReplyTranslatorTest.java index ccca8d077c..3c1cabd897 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/SinglePurposeMultipartReplyTranslatorTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/SinglePurposeMultipartReplyTranslatorTest.java @@ -16,10 +16,13 @@ import com.google.common.collect.Lists; import java.math.BigInteger; import java.util.Collections; import java.util.List; +import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.AggregateFlowStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdate; @@ -61,7 +64,7 @@ public class SinglePurposeMultipartReplyTranslatorTest { private static final BigInteger DUMMY_DATAPATH_ID = new BigInteger("21"); private static final Long DUMMY_XID = 1L; - private static final SinglePurposeMultipartReplyTranslator singlePurposeMultipartReplyTranslator = new SinglePurposeMultipartReplyTranslator(); + private SinglePurposeMultipartReplyTranslator singlePurposeMultipartReplyTranslator; private static final BigInteger DUMMY_BYTE_COUNT = new BigInteger("31"); private static final BigInteger DUMMY_PACKET_COUNT = new BigInteger("41"); private static final Long DUMMY_FLOW_COUNT = 51L; @@ -86,6 +89,12 @@ public class SinglePurposeMultipartReplyTranslatorTest { private static final GroupType DUMMY_GROUP_TYPE = GroupType.OFPGTALL; private static final Long GROUP_ACTION_BITMAP = 0b00000000000000000000000000000000000001111111111111001100000000001L; + @Before + public void setUp() { + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + singlePurposeMultipartReplyTranslator = new SinglePurposeMultipartReplyTranslator(convertorManager); + } + @Test public void testTranslateFlow() { DeviceContext mockedDeviceContext = mock(DeviceContext.class); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImpMockInitiation.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImpMockInitiation.java index 9f0121779f..f89cade140 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImpMockInitiation.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImpMockInitiation.java @@ -96,6 +96,5 @@ class StatisticsContextImpMockInitiation { mockConductor.setSafelyManager(mockedDeviceManager); when(mockConductor.getDeviceContext(mockedDeviceInfo)).thenReturn(mockedDeviceContext); - } } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImplParamTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImplParamTest.java index 5eeb696049..445265bb95 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImplParamTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImplParamTest.java @@ -23,6 +23,8 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.EventIdentifier; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -61,8 +63,8 @@ public class StatisticsContextImplParamTest extends StatisticsContextImpMockInit @Test public void gatherDynamicDataTest() { - - final StatisticsContextImpl statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, false, mockConductor); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + final StatisticsContextImpl statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, false, mockConductor, convertorManager); final ListenableFuture>> rpcResult = immediateFuture(RpcResultBuilder.success(Collections.emptyList()).build()); when(mockedStatisticsGatheringService.getStatisticsOfType(any(EventIdentifier.class), any(MultipartType diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImplTest.java index 30e51bcccf..6c7ef1a700 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImplTest.java @@ -28,6 +28,8 @@ import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContext; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.EventIdentifier; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -42,16 +44,18 @@ public class StatisticsContextImplTest extends StatisticsContextImpMockInitiatio private static final Long TEST_XID = 55L; private StatisticsContextImpl statisticsContext; + private ConvertorManager convertorManager; @Before public void setUp() throws Exception { + convertorManager = ConvertorManagerFactory.createDefaultManager(); when(mockedDeviceContext.reserveXidForDeviceMessage()).thenReturn(TEST_XID); when(mockConductor.getDeviceContext(mockedDeviceInfo)).thenReturn(mockedDeviceContext); initStatisticsContext(); } private void initStatisticsContext() { - statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, false, mockConductor); + statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, false, mockConductor, convertorManager); statisticsContext.setStatisticsGatheringService(mockedStatisticsGatheringService); statisticsContext.setStatisticsGatheringOnTheFlyService(mockedStatisticsOnFlyGatheringService); } @@ -69,7 +73,7 @@ public class StatisticsContextImplTest extends StatisticsContextImpMockInitiatio */ @Test public void testClose() throws Exception { - final StatisticsContextImpl statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, false, mockConductor); + final StatisticsContextImpl statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, false, mockConductor, convertorManager); final RequestContext requestContext = statisticsContext.createRequestContext(); statisticsContext.close(); try { diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtilsTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtilsTest.java index 3e3085d254..57a890ed4c 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtilsTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtilsTest.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -48,6 +47,8 @@ import org.opendaylight.openflowplugin.api.openflow.registry.meter.DeviceMeterRe import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.EventIdentifier; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.StatisticsGatherer; import org.opendaylight.openflowplugin.impl.registry.flow.FlowRegistryKeyFactory; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeBuilder; @@ -164,12 +165,16 @@ public class StatisticsGatheringUtilsTest { @Mock private TxFacade txFacade; + private SinglePurposeMultipartReplyTranslator singlePurposeMultipartReplyTranslator; + public StatisticsGatheringUtilsTest() { OpenflowPortsUtil.init(); } @Before public void setUp() throws Exception { + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + singlePurposeMultipartReplyTranslator = new SinglePurposeMultipartReplyTranslator(convertorManager); when(deviceContext.getDeviceState()).thenReturn(deviceState); when(deviceContext.getDeviceInfo()).thenReturn(deviceInfo); when(deviceContext.getDeviceFlowRegistry()).thenReturn(deviceFlowRegistry); @@ -189,11 +194,6 @@ public class StatisticsGatheringUtilsTest { when(deviceInfo.getNodeId()).thenReturn(DUMMY_NODE_ID); } - @After - public void tearDown() throws Exception { - - } - @Test public void testWriteFlowStatistics() throws Exception { final ArgumentCaptor dataStoreType = ArgumentCaptor.forClass(LogicalDatastoreType.class); @@ -496,7 +496,8 @@ public class StatisticsGatheringUtilsTest { type, txFacade, deviceContext, - false); + false, + singlePurposeMultipartReplyTranslator); Assert.assertTrue(gatherStatisticsResult.get(1, TimeUnit.SECONDS).booleanValue()); verify(txFacade).submitTransaction(); } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImplTest.java index c36821897d..6c4229e10f 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImplTest.java @@ -58,6 +58,8 @@ import org.opendaylight.openflowplugin.api.openflow.rpc.listener.ItemLifecycleLi import org.opendaylight.openflowplugin.api.openflow.statistics.StatisticsContext; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy; import org.opendaylight.openflowplugin.impl.registry.flow.DeviceFlowRegistryImpl; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; @@ -182,7 +184,8 @@ public class StatisticsManagerImplTest { Matchers.eq(StatisticsManagerControlService.class), Matchers.any())).thenReturn(serviceControlRegistration); - statisticsManager = new StatisticsManagerImpl(rpcProviderRegistry, false, conductor); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + statisticsManager = new StatisticsManagerImpl(rpcProviderRegistry, false, conductor, convertorManager); statisticsManager.setDeviceInitializationPhaseHandler(deviceInitializationPhaseHandler); when(conductor.getDeviceContext(deviceInfo)).thenReturn(mockedDeviceContext); } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/AbstractStatsServiceTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/AbstractStatsServiceTest.java index bd25110f4a..3a8f42c4f9 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/AbstractStatsServiceTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/AbstractStatsServiceTest.java @@ -104,7 +104,6 @@ public abstract class AbstractStatsServiceTest { Mockito.when(getFeaturesOutput.getDatapathId()).thenReturn(BigInteger.valueOf(123L)); Mockito.when(getFeaturesOutput.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3); - setUp(); } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl1Test.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl1Test.java index 49a16e38c0..009ff0de2f 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl1Test.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl1Test.java @@ -14,6 +14,8 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mockito; import org.opendaylight.openflowplugin.impl.rpc.AbstractRequestContext; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAllFlowStatisticsFromFlowTableInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAllFlowsStatisticsFromAllFlowTablesInputBuilder; @@ -36,7 +38,8 @@ public class OpendaylightFlowStatisticsServiceImpl1Test extends AbstractStatsSer private OpendaylightFlowStatisticsServiceImpl flowStatisticsService; public void setUp() { - flowStatisticsService = OpendaylightFlowStatisticsServiceImpl.createWithOook(rqContextStack, deviceContext); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + flowStatisticsService = OpendaylightFlowStatisticsServiceImpl.createWithOook(rqContextStack, deviceContext, convertorManager); rqContext = new AbstractRequestContext(42L) { @Override diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl2Test.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl2Test.java index 8c3d71dbb6..3f093b0387 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl2Test.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl2Test.java @@ -26,6 +26,8 @@ import org.opendaylight.openflowplugin.api.openflow.device.MessageTranslator; import org.opendaylight.openflowplugin.api.openflow.md.core.TranslatorKey; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.EventIdentifier; import org.opendaylight.openflowplugin.impl.rpc.AbstractRequestContext; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForGivenMatchInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.get.aggregate.flow.statistics.from.flow.table._for.given.match.output.AggregatedFlowStatistics; @@ -53,7 +55,8 @@ public class OpendaylightFlowStatisticsServiceImpl2Test extends AbstractStatsSer public void setUp() { - flowStatisticsService = OpendaylightFlowStatisticsServiceImpl.createWithOook(rqContextStack, deviceContext); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + flowStatisticsService = OpendaylightFlowStatisticsServiceImpl.createWithOook(rqContextStack, deviceContext, convertorManager); rqContextMp = new AbstractRequestContext>(42L) { @Override diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl3Test.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl3Test.java index 329c670886..b565c379a6 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl3Test.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightFlowStatisticsServiceImpl3Test.java @@ -11,6 +11,8 @@ package org.opendaylight.openflowplugin.impl.statistics.services; import org.junit.Test; import org.mockito.Mock; import org.mockito.Mockito; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAllFlowStatisticsFromFlowTableInput; @@ -33,7 +35,8 @@ public class OpendaylightFlowStatisticsServiceImpl3Test extends AbstractStatsSer private OpendaylightFlowStatisticsServiceImpl flowStatisticsService; public void setUp() { - flowStatisticsService = OpendaylightFlowStatisticsServiceImpl.createWithOook(rqContextStack, deviceContext); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + flowStatisticsService = OpendaylightFlowStatisticsServiceImpl.createWithOook(rqContextStack, deviceContext, convertorManager); flowStatisticsService.setDelegate(flowStatisticsDelegate); } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightGroupStatisticsServiceImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightGroupStatisticsServiceImplTest.java index 84e5b4e2d3..9357d2cd78 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightGroupStatisticsServiceImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightGroupStatisticsServiceImplTest.java @@ -21,6 +21,8 @@ import org.mockito.Captor; import org.mockito.Matchers; import org.mockito.Mockito; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupDescriptionInputBuilder; @@ -65,8 +67,9 @@ public class OpendaylightGroupStatisticsServiceImplTest extends AbstractSingleSt private OpendaylightGroupStatisticsServiceImpl groupStatisticsService; public void setUp() { + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); groupStatisticsService = new OpendaylightGroupStatisticsServiceImpl(rqContextStack, deviceContext, - new AtomicLong(), notificationPublishService); + new AtomicLong(), notificationPublishService, convertorManager); Mockito.doAnswer(answerVoidToCallback).when(outboundQueueProvider) .commitEntry(Matchers.eq(42L), requestInput.capture(), Matchers.any(FutureCallback.class)); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImplTest.java index 0952a01dc9..04e5c85a91 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImplTest.java @@ -21,6 +21,8 @@ import org.mockito.Captor; import org.mockito.Matchers; import org.mockito.Mockito; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsInputBuilder; @@ -64,8 +66,9 @@ public class OpendaylightMeterStatisticsServiceImplTest extends AbstractSingleSt private OpendaylightMeterStatisticsServiceImpl meterStatisticsService; public void setUp() { + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); meterStatisticsService = new OpendaylightMeterStatisticsServiceImpl(rqContextStack, deviceContext, - new AtomicLong(), notificationPublishService); + new AtomicLong(), notificationPublishService, convertorManager); Mockito.doAnswer(answerVoidToCallback).when(outboundQueueProvider) .commitEntry(Matchers.eq(42L), requestInput.capture(), Matchers.any(FutureCallback.class)); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/OpendaylightFlowStatisticsServiceDelegateImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/OpendaylightFlowStatisticsServiceDelegateImplTest.java index 251eb10fb1..86fcdaa9a1 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/OpendaylightFlowStatisticsServiceDelegateImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/compatibility/OpendaylightFlowStatisticsServiceDelegateImplTest.java @@ -24,6 +24,8 @@ import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.device.MessageTranslator; import org.opendaylight.openflowplugin.api.openflow.md.core.TranslatorKey; import org.opendaylight.openflowplugin.impl.statistics.services.AbstractSingleStatsServiceTest; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsInputBuilder; @@ -76,8 +78,9 @@ public class OpendaylightFlowStatisticsServiceDelegateImplTest extends AbstractS @Override public void setUp() { + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); flowStatisticsServiceDelegate = new OpendaylightFlowStatisticsServiceDelegateImpl( - rqContextStack, deviceContext, notificationPublishService, new AtomicLong(21)); + rqContextStack, deviceContext, notificationPublishService, new AtomicLong(21), convertorManager); Mockito.doAnswer(answerVoidToCallback).when(outboundQueueProvider) .commitEntry(Matchers.eq(42L), requestInput.capture(), Matchers.any(FutureCallback.class)); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/dedicated/StatisticsGatheringOnTheFlyServiceTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/dedicated/StatisticsGatheringOnTheFlyServiceTest.java index eb17d48ae7..dd292d112d 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/dedicated/StatisticsGatheringOnTheFlyServiceTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/dedicated/StatisticsGatheringOnTheFlyServiceTest.java @@ -14,6 +14,8 @@ import org.mockito.Mockito; import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.EventIdentifier; import org.opendaylight.openflowplugin.impl.services.ServiceMocking; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput; @@ -29,7 +31,8 @@ public class StatisticsGatheringOnTheFlyServiceTest extends ServiceMocking { @Override protected void setup() { - statisticsGatheringService = new StatisticsGatheringOnTheFlyService(mockedRequestContextStack, mockedDeviceContext); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + statisticsGatheringService = new StatisticsGatheringOnTheFlyService(mockedRequestContextStack, mockedDeviceContext, convertorManager); Mockito.doReturn(NODE_ID).when(mockedPrimConnectionContext).getNodeId(); Mockito.when(mockedDeviceInfo.getNodeId()).thenReturn(NODE_ID); Mockito.when(mockedDeviceContext.getDeviceInfo().getNodeId()).thenReturn(NODE_ID); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/AbstractDirectStatisticsServiceTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/AbstractDirectStatisticsServiceTest.java index 024d08762f..bedc24e4be 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/AbstractDirectStatisticsServiceTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/AbstractDirectStatisticsServiceTest.java @@ -28,6 +28,8 @@ import org.opendaylight.openflowplugin.api.openflow.device.TranslatorLibrary; import org.opendaylight.openflowplugin.api.openflow.device.handlers.MultiMsgCollector; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; @@ -73,6 +75,7 @@ public abstract class AbstractDirectStatisticsServiceTest { protected NodeConnectorId nodeConnectorId; protected KeyedInstanceIdentifier nodeInstanceIdentifier; + protected ConvertorManager convertorManager; protected static NodeRef createNodeRef(String nodeIdValue) { InstanceIdentifier nodePath = InstanceIdentifier.create(Nodes.class) @@ -92,6 +95,8 @@ public abstract class AbstractDirectStatisticsServiceTest { .create(Nodes.class) .child(Node.class, new NodeKey(new NodeId(NODE_ID))); + convertorManager = ConvertorManagerFactory.createDefaultManager(); + when(deviceContext.getPrimaryConnectionContext()).thenReturn(connectionContext); when(deviceContext.getMessageSpy()).thenReturn(messageSpy); when(deviceContext.getMultiMsgCollector(any())).thenReturn(multiMsgCollector); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/FlowDirectStatisticsServiceTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/FlowDirectStatisticsServiceTest.java index 0d234bb31e..9dd7d6aaf9 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/FlowDirectStatisticsServiceTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/FlowDirectStatisticsServiceTest.java @@ -43,7 +43,7 @@ public class FlowDirectStatisticsServiceTest extends AbstractDirectStatisticsSer @Override public void setUp() throws Exception { - service = new FlowDirectStatisticsService(requestContextStack, deviceContext); + service = new FlowDirectStatisticsService(requestContextStack, deviceContext, convertorManager); final DeviceFlowRegistry registry = mock(DeviceFlowRegistry.class); when(registry.storeIfNecessary(any())).thenReturn(new FlowId("1")); when(deviceContext.getDeviceFlowRegistry()).thenReturn(registry); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/GroupDirectStatisticsServiceTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/GroupDirectStatisticsServiceTest.java index 6b8af6873b..ab8cd6072b 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/GroupDirectStatisticsServiceTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/GroupDirectStatisticsServiceTest.java @@ -38,7 +38,7 @@ public class GroupDirectStatisticsServiceTest extends AbstractDirectStatisticsSe @Override public void setUp() throws Exception { - service = new GroupDirectStatisticsService(requestContextStack, deviceContext); + service = new GroupDirectStatisticsService(requestContextStack, deviceContext, convertorManager); } @Override diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/MeterDirectStatisticsServiceTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/MeterDirectStatisticsServiceTest.java index c3da98efdc..ed96db005f 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/MeterDirectStatisticsServiceTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/MeterDirectStatisticsServiceTest.java @@ -38,7 +38,7 @@ public class MeterDirectStatisticsServiceTest extends AbstractDirectStatisticsSe @Override public void setUp() throws Exception { - service = new MeterDirectStatisticsService(requestContextStack, deviceContext); + service = new MeterDirectStatisticsService(requestContextStack, deviceContext, convertorManager); } @Override diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/NodeConnectorDirectStatisticsServiceTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/NodeConnectorDirectStatisticsServiceTest.java index d95595e082..aaaeb7548d 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/NodeConnectorDirectStatisticsServiceTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/NodeConnectorDirectStatisticsServiceTest.java @@ -35,7 +35,7 @@ public class NodeConnectorDirectStatisticsServiceTest extends AbstractDirectStat @Override public void setUp() throws Exception { - service = new NodeConnectorDirectStatisticsService(requestContextStack, deviceContext); + service = new NodeConnectorDirectStatisticsService(requestContextStack, deviceContext, convertorManager); } @Override diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/QueueDirectStatisticsServiceTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/QueueDirectStatisticsServiceTest.java index c8ae34a06b..388f736303 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/QueueDirectStatisticsServiceTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/QueueDirectStatisticsServiceTest.java @@ -38,7 +38,7 @@ public class QueueDirectStatisticsServiceTest extends AbstractDirectStatisticsSe @Override public void setUp() throws Exception { - service = new QueueDirectStatisticsService(requestContextStack, deviceContext); + service = new QueueDirectStatisticsService(requestContextStack, deviceContext, convertorManager); } @Override diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedTranslatorTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedTranslatorTest.java index d3e9598219..b12cdb23ca 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedTranslatorTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/translator/FlowRemovedTranslatorTest.java @@ -21,6 +21,8 @@ import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; import org.opendaylight.openflowplugin.api.openflow.device.DeviceState; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.FlowRemoved; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; @@ -68,8 +70,9 @@ public class FlowRemovedTranslatorTest { nodeId = InstanceIdentifier.create(Nodes.class) .child(Node.class, new NodeKey(new NodeId("dummyNodeId"))); - translator = new FlowRemovedTranslator(); - translatorV10 = new FlowRemovedV10Translator(); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + translator = new FlowRemovedTranslator(convertorManager); + translatorV10 = new FlowRemovedV10Translator(convertorManager); when(deviceContext.getDeviceState()).thenReturn(deviceState); when(deviceInfo.getNodeInstanceIdentifier()).thenReturn(nodeId); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/translator/PacketReceivedTranslatorTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/translator/PacketReceivedTranslatorTest.java index 632309ea7c..6a4ef2ebc2 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/translator/PacketReceivedTranslatorTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/translator/PacketReceivedTranslatorTest.java @@ -24,6 +24,8 @@ import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; import org.opendaylight.openflowplugin.api.openflow.device.DeviceState; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; @@ -76,6 +78,8 @@ public class PacketReceivedTranslatorTest { @Mock PhyPort phyPort; + ConvertorManager convertorManager; + static final Long PORT_NO = 5l; static final Long PORT_NO_DS = 6l; static final String DATA = "Test_Data"; @@ -88,6 +92,7 @@ public class PacketReceivedTranslatorTest { @Before public void setUp() throws Exception { final List phyPorts = Arrays.asList(phyPort); + convertorManager = ConvertorManagerFactory.createDefaultManager(); Mockito.when(deviceContext.getPrimaryConnectionContext()).thenReturn(connectionContext); Mockito.when(connectionContext.getFeatures()).thenReturn(featuresReply); @@ -105,7 +110,7 @@ public class PacketReceivedTranslatorTest { final KeyedInstanceIdentifier nodePath = KeyedInstanceIdentifier .create(Nodes.class) .child(Node.class, new NodeKey(new NodeId("openflow:10"))); - final PacketReceivedTranslator packetReceivedTranslator = new PacketReceivedTranslator(); + final PacketReceivedTranslator packetReceivedTranslator = new PacketReceivedTranslator(convertorManager); final PacketInMessage packetInMessage = createPacketInMessage(DATA.getBytes(), PORT_NO); Mockito.when(deviceInfo.getNodeInstanceIdentifier()).thenReturn(nodePath); @@ -150,7 +155,8 @@ public class PacketReceivedTranslatorTest { .setVersion(OFConstants.OFP_VERSION_1_3); BigInteger dpid = BigInteger.TEN; - final Match packetInMatch = PacketReceivedTranslator.getPacketInMatch(inputBld.build(), dpid); + final PacketReceivedTranslator packetReceivedTranslator = new PacketReceivedTranslator(convertorManager); + final Match packetInMatch = packetReceivedTranslator.getPacketInMatch(inputBld.build(), dpid); Assert.assertNotNull(packetInMatch.getInPort()); Assert.assertEquals("openflow:10:" + PORT_NUM_VALUE, packetInMatch.getInPort().getValue()); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/DeviceInitializationUtilsTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/DeviceInitializationUtilsTest.java index 71da6bd8c1..08476e5deb 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/DeviceInitializationUtilsTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/DeviceInitializationUtilsTest.java @@ -54,6 +54,8 @@ import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceInitia import org.opendaylight.openflowplugin.api.openflow.device.handlers.MultiMsgCollector; import org.opendaylight.openflowplugin.api.openflow.md.core.TranslatorKey; import org.opendaylight.openflowplugin.impl.device.DeviceContextImpl; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table; @@ -136,9 +138,12 @@ public class DeviceInitializationUtilsTest { @Mock private DeviceInfo deviceInfo; + private ConvertorManager convertorManager; + @Before public void setUp() throws Exception { OpenflowPortsUtil.init(); + convertorManager = ConvertorManagerFactory.createDefaultManager(); when(mockConnectionContext.getNodeId()).thenReturn(new NodeId(DUMMY_NODE_ID)); when(mockConnectionContext.getFeatures()).thenReturn(mockFeatures); @@ -171,7 +176,7 @@ public class DeviceInitializationUtilsTest { final ConnectionContext connectionContext = buildMockConnectionContext(OFConstants.OFP_VERSION_1_0); when(mockedDeviceContext.getPrimaryConnectionContext()).thenReturn(connectionContext); - DeviceInitializationUtils.initializeNodeInformation(mockedDeviceContext, true); + DeviceInitializationUtils.initializeNodeInformation(mockedDeviceContext, true, convertorManager); verify(mockFeatures, atLeastOnce()).getPhyPort(); verify(tLibrary, atLeastOnce()).lookupTranslator(any(TranslatorKey.class)); @@ -208,13 +213,14 @@ public class DeviceInitializationUtilsTest { final Collection multipartReplyMessages = prepareDataforTypeDesc(mockedDeviceContext); - DeviceInitializationUtils.translateAndWriteReply(MultipartType.OFPMPDESC, mockedDeviceContext, DUMMY_NODE_II, multipartReplyMessages); + DeviceInitializationUtils.translateAndWriteReply(MultipartType.OFPMPDESC, mockedDeviceContext, DUMMY_NODE_II, multipartReplyMessages, convertorManager); verify(mockedDeviceContext) .writeToTransaction(eq(LogicalDatastoreType.OPERATIONAL), eq(DUMMY_NODE_II.augmentation(FlowCapableNode.class)), any(FlowCapableNode.class)); } @Test public void translateAndWriteReplyTypeTableFeatures() throws Exception { + when(mockedDeviceInfo.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3); TableFeaturesBuilder tableFeature = new TableFeaturesBuilder(); tableFeature.setTableId(DUMMY_TABLE_ID); final List tableFeatures = new ArrayList<>(); @@ -226,7 +232,7 @@ public class DeviceInitializationUtilsTest { final MultipartReplyMessage multipartReplyMessage = new MultipartReplyMessageBuilder().setMultipartReplyBody(multipartReplyTableFeaturesCaseBuilder.build()).build(); final Set multipartReplyMessages = Collections.singleton(multipartReplyMessage); - DeviceInitializationUtils.translateAndWriteReply(MultipartType.OFPMPTABLEFEATURES, mockedDeviceContext, DUMMY_NODE_II, multipartReplyMessages); + DeviceInitializationUtils.translateAndWriteReply(MultipartType.OFPMPTABLEFEATURES, mockedDeviceContext, DUMMY_NODE_II, multipartReplyMessages, convertorManager); verify(mockedDeviceContext) .writeToTransaction(eq(LogicalDatastoreType.OPERATIONAL), eq(DUMMY_NODE_II.augmentation(FlowCapableNode.class).child(Table.class, new TableKey(DUMMY_TABLE_ID))), any(Table.class)); @@ -248,7 +254,7 @@ public class DeviceInitializationUtilsTest { final MultipartReplyMessage multipartReplyMessage = new MultipartReplyMessageBuilder().setMultipartReplyBody(multipartReplyMeterFeaturesCaseBuilder.build()).build(); final Set multipartReplyMessages = Collections.singleton(multipartReplyMessage); - DeviceInitializationUtils.translateAndWriteReply(MultipartType.OFPMPMETERFEATURES, mockedDeviceContext, DUMMY_NODE_II, multipartReplyMessages); + DeviceInitializationUtils.translateAndWriteReply(MultipartType.OFPMPMETERFEATURES, mockedDeviceContext, DUMMY_NODE_II, multipartReplyMessages, convertorManager); verify(mockedDeviceContext) .writeToTransaction(eq(LogicalDatastoreType.OPERATIONAL), eq(DUMMY_NODE_II.augmentation(NodeMeterFeatures.class)), any(NodeMeterFeatures.class)); verify(mockedDeviceState).setMeterAvailable(eq(true)); @@ -270,7 +276,7 @@ public class DeviceInitializationUtilsTest { final MultipartReplyMessage multipartReplyMessage = new MultipartReplyMessageBuilder().setMultipartReplyBody(multipartReplyGroupFeaturesCaseBuilder.build()).build(); final Set multipartReplyMessages = Collections.singleton(multipartReplyMessage); - DeviceInitializationUtils.translateAndWriteReply(MultipartType.OFPMPGROUPFEATURES, mockedDeviceContext, DUMMY_NODE_II, multipartReplyMessages); + DeviceInitializationUtils.translateAndWriteReply(MultipartType.OFPMPGROUPFEATURES, mockedDeviceContext, DUMMY_NODE_II, multipartReplyMessages, convertorManager); verify(mockedDeviceContext) .writeToTransaction(eq(LogicalDatastoreType.OPERATIONAL), eq(DUMMY_NODE_II.augmentation(NodeGroupFeatures.class)), any(NodeGroupFeatures.class)); } @@ -304,7 +310,7 @@ public class DeviceInitializationUtilsTest { final Set multipartReplyMessages = Collections.singleton(multipartReplyMessage); OpenflowPortsUtil.init(); - DeviceInitializationUtils.translateAndWriteReply(MultipartType.OFPMPPORTDESC, mockedDeviceContext, DUMMY_NODE_II, multipartReplyMessages); + DeviceInitializationUtils.translateAndWriteReply(MultipartType.OFPMPPORTDESC, mockedDeviceContext, DUMMY_NODE_II, multipartReplyMessages, convertorManager); verify(mockedDeviceContext).writeToTransaction(eq(LogicalDatastoreType.OPERATIONAL), Matchers.> any(), any(NodeConnector.class)); } @@ -320,12 +326,12 @@ public class DeviceInitializationUtilsTest { final RpcResult> result = RpcResultBuilder.>success(multipartReplies).build(); ListenableFuture>> mockedRequestContextFuture = Futures.immediateFuture(result); - DeviceInitializationUtils.createSuccessProcessingCallback(MultipartType.OFPMPDESC, mockedDeviceContext, DUMMY_NODE_II, mockedRequestContextFuture); + DeviceInitializationUtils.createSuccessProcessingCallback(MultipartType.OFPMPDESC, mockedDeviceContext, DUMMY_NODE_II, mockedRequestContextFuture, convertorManager); verify(mockedDeviceContext).writeToTransaction(eq(LogicalDatastoreType.OPERATIONAL), eq(DUMMY_NODE_II.augmentation(FlowCapableNode.class)), any(FlowCapableNode.class)); final RpcResult> rpcResult = RpcResultBuilder.>failed().withError(RpcError.ErrorType.PROTOCOL, "dummy error").build(); mockedRequestContextFuture = Futures.immediateFuture(rpcResult); - DeviceInitializationUtils.createSuccessProcessingCallback(MultipartType.OFPMPDESC, mockedDeviceContext, DUMMY_NODE_II, mockedRequestContextFuture); + DeviceInitializationUtils.createSuccessProcessingCallback(MultipartType.OFPMPDESC, mockedDeviceContext, DUMMY_NODE_II, mockedRequestContextFuture, convertorManager); verify(mockedDeviceContext).writeToTransaction(eq(LogicalDatastoreType.OPERATIONAL), eq(DUMMY_NODE_II.augmentation(FlowCapableNode.class)), any(FlowCapableNode.class)); } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtilsTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtilsTest.java index 4a5d940227..33f544b022 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtilsTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtilsTest.java @@ -24,8 +24,9 @@ import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; import org.opendaylight.openflowplugin.api.openflow.device.DeviceState; import org.opendaylight.openflowplugin.api.openflow.rpc.RpcContext; import org.opendaylight.openflowplugin.extension.api.core.extension.ExtensionConverterProvider; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FeaturesReply; -import org.opendaylight.yang.gen.v1.urn.opendaylight.role.service.rev150727.OfpRole; import org.opendaylight.yangtools.yang.binding.RpcService; public class MdSalRegistrationUtilsTest { @@ -58,7 +59,8 @@ public class MdSalRegistrationUtilsTest { when(mockedDeviceContext.getPrimaryConnectionContext()).thenReturn(mockedConnectionContext); final ExtensionConverterProvider extensionConverterProvider = mock(ExtensionConverterProvider.class); - MdSalRegistrationUtils.registerServices(mockedRpcContext, mockedDeviceContext, extensionConverterProvider); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + MdSalRegistrationUtils.registerServices(mockedRpcContext, mockedDeviceContext, extensionConverterProvider, convertorManager); verify(mockedRpcContext, times(NUMBER_OF_RPC_SERVICE_REGISTRATION)).registerRpcServiceImplementation( Matchers.> any(), any(RpcService.class)); } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/TranslatorLibratyUtilTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/TranslatorLibratyUtilTest.java index 2a4520782b..862f01a9a4 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/TranslatorLibratyUtilTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/TranslatorLibratyUtilTest.java @@ -18,6 +18,8 @@ import org.opendaylight.openflowplugin.api.openflow.device.MessageTranslator; import org.opendaylight.openflowplugin.api.openflow.device.TranslatorLibrary; import org.opendaylight.openflowplugin.api.openflow.translator.TranslatorLibrarian; import org.opendaylight.openflowplugin.impl.translator.TranslatorKeyFactory; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketIn; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyAggregateCase; @@ -48,7 +50,8 @@ public class TranslatorLibratyUtilTest { @Test public void setBasicTranslatorLibraryTest() { - TranslatorLibraryUtil.setBasicTranslatorLibrary(translatorLibrarian); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + TranslatorLibraryUtil.injectBasicTranslatorLibrary(translatorLibrarian, convertorManager); TranslatorLibrary translatorLibrary = translatorLibrarian.oook(); TranslatorKeyFactory of13TranslatorKeyFactory = new TranslatorKeyFactory(OFP_VERSION_1_3); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/MDController.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/MDController.java index da6901c395..d13362ec9b 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/MDController.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/MDController.java @@ -37,6 +37,7 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.TranslatorKey; import org.opendaylight.openflowplugin.api.openflow.md.queue.PopListener; import org.opendaylight.openflowplugin.api.openflow.statistics.MessageSpy; import org.opendaylight.openflowplugin.extension.api.core.extension.ExtensionConverterProvider; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; import org.opendaylight.openflowplugin.openflow.md.core.translator.ErrorTranslator; import org.opendaylight.openflowplugin.openflow.md.core.translator.ErrorV10Translator; @@ -106,6 +107,7 @@ import org.slf4j.LoggerFactory; public class MDController implements IMDController, AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(MDController.class); + private final ConvertorExecutor convertorExecutor; private Collection switchConnectionProviders; @@ -120,6 +122,10 @@ public class MDController implements IMDController, AutoCloseable { private ExtensionConverterProvider extensionConverterProvider; + public MDController(ConvertorExecutor convertorExecutor) { + this.convertorExecutor = convertorExecutor; + } + /** * @return translator mapping */ @@ -140,19 +146,19 @@ public class MDController implements IMDController, AutoCloseable { //TODO: move registration to factory addMessageTranslator(ErrorMessage.class, OF10, new ErrorV10Translator()); addMessageTranslator(ErrorMessage.class, OF13, new ErrorTranslator()); - addMessageTranslator(FlowRemovedMessage.class, OF10, new FlowRemovedTranslator()); - addMessageTranslator(FlowRemovedMessage.class, OF13, new FlowRemovedTranslator()); + addMessageTranslator(FlowRemovedMessage.class, OF10, new FlowRemovedTranslator(convertorExecutor)); + addMessageTranslator(FlowRemovedMessage.class, OF13, new FlowRemovedTranslator(convertorExecutor)); addMessageTranslator(PacketInMessage.class,OF10, new PacketInV10Translator()); - addMessageTranslator(PacketInMessage.class,OF13, new PacketInTranslator()); + addMessageTranslator(PacketInMessage.class,OF13, new PacketInTranslator(convertorExecutor)); addMessageTranslator(PortStatusMessage.class,OF10, new PortStatusMessageToNodeConnectorUpdatedTranslator()); addMessageTranslator(PortStatusMessage.class,OF13, new PortStatusMessageToNodeConnectorUpdatedTranslator()); addMessageTranslator(MultipartReplyMessage.class,OF13,new MultiPartReplyPortToNodeConnectorUpdatedTranslator()); addMessageTranslator(MultipartReplyMessage.class,OF10, new MultiPartMessageDescToNodeUpdatedTranslator()); addMessageTranslator(MultipartReplyMessage.class,OF13, new MultiPartMessageDescToNodeUpdatedTranslator()); addMessageTranslator(ExperimenterMessage.class, OF10, new ExperimenterTranslator()); - addMessageTranslator(MultipartReplyMessage.class,OF10, new MultipartReplyTranslator()); - addMessageTranslator(MultipartReplyMessage.class,OF13, new MultipartReplyTranslator()); - addMessageTranslator(MultipartReplyMessage.class,OF13,new MultipartReplyTableFeaturesToTableUpdatedTranslator()); + addMessageTranslator(MultipartReplyMessage.class,OF10, new MultipartReplyTranslator(convertorExecutor)); + addMessageTranslator(MultipartReplyMessage.class,OF13, new MultipartReplyTranslator(convertorExecutor)); + addMessageTranslator(MultipartReplyMessage.class,OF13,new MultipartReplyTableFeaturesToTableUpdatedTranslator(convertorExecutor)); addMessageTranslator(GetFeaturesOutput.class,OF10, new FeaturesV10ToNodeConnectorUpdatedTranslator()); addMessageTranslator(NotificationQueueWrapper.class, OF10, new NotificationPlainTranslator()); addMessageTranslator(NotificationQueueWrapper.class, OF13, new NotificationPlainTranslator()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImpl.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImpl.java index 40c845c7e0..74f503cb62 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImpl.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImpl.java @@ -19,7 +19,7 @@ import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.session.IMessageDispatchService; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.PacketOutConvertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.PacketOutConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; @@ -111,6 +111,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { private final NodeId nodeId; private final IMessageDispatchService messageService; private short version = 0; + private final ConvertorExecutor convertorExecutor; private OFRpcTaskContext rpcTaskContext; // TODO:read timeout from configSubsystem @@ -118,11 +119,12 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { protected TimeUnit maxTimeoutUnit = TimeUnit.MILLISECONDS; protected ModelDrivenSwitchImpl(final NodeId nodeId, final InstanceIdentifier identifier, - final SessionContext sessionContext) { + final SessionContext sessionContext, final ConvertorExecutor convertorExecutor) { super(identifier, sessionContext); this.nodeId = nodeId; messageService = sessionContext.getMessageDispatchService(); version = sessionContext.getPrimaryConductor().getVersion(); + this.convertorExecutor = convertorExecutor; final NotificationProviderService rpcNotificationProviderService = OFSessionUtil.getSessionManager().getNotificationProviderService(); rpcTaskContext = new OFRpcTaskContext(); @@ -143,7 +145,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { SwitchConnectionDistinguisher cookie = null; OFRpcTask> task = - OFRpcTaskFactory.createAddFlowTask(rpcTaskContext, input, cookie); + OFRpcTaskFactory.createAddFlowTask(rpcTaskContext, input, cookie, convertorExecutor); ListenableFuture> result = task.submit(); return Futures.transform(result, OFRpcFutureResultTransformFactory.createForAddFlowOutput()); @@ -158,7 +160,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { SwitchConnectionDistinguisher cookie = null; OFRpcTask> task = - OFRpcTaskFactory.createAddGroupTask(rpcTaskContext, input, cookie); + OFRpcTaskFactory.createAddGroupTask(rpcTaskContext, input, cookie, convertorExecutor); ListenableFuture> result = task.submit(); return Futures.transform(result, OFRpcFutureResultTransformFactory.createForAddGroupOutput()); @@ -172,7 +174,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { SwitchConnectionDistinguisher cookie = null; OFRpcTask> task = - OFRpcTaskFactory.createAddMeterTask(rpcTaskContext, input, cookie); + OFRpcTaskFactory.createAddMeterTask(rpcTaskContext, input, cookie, convertorExecutor); ListenableFuture> result = task.submit(); return Futures.transform(result, OFRpcFutureResultTransformFactory.createForAddMeterOutput()); @@ -185,7 +187,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { // use primary connection SwitchConnectionDistinguisher cookie = null; OFRpcTask> task = - OFRpcTaskFactory.createRemoveFlowTask(rpcTaskContext, input, cookie); + OFRpcTaskFactory.createRemoveFlowTask(rpcTaskContext, input, cookie, convertorExecutor); ListenableFuture> result = task.submit(); return Futures.transform(result, OFRpcFutureResultTransformFactory.createForRemoveFlowOutput()); @@ -197,7 +199,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { SwitchConnectionDistinguisher cookie = null; OFRpcTask> task = - OFRpcTaskFactory.createRemoveGroupTask(rpcTaskContext, input, cookie); + OFRpcTaskFactory.createRemoveGroupTask(rpcTaskContext, input, cookie, convertorExecutor); ListenableFuture> result = task.submit(); return Futures.transform(result, OFRpcFutureResultTransformFactory.createForRemoveGroupOutput()); @@ -209,7 +211,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { SwitchConnectionDistinguisher cookie = null; OFRpcTask> task = - OFRpcTaskFactory.createRemoveMeterTask(rpcTaskContext, input, cookie); + OFRpcTaskFactory.createRemoveMeterTask(rpcTaskContext, input, cookie, convertorExecutor); ListenableFuture> result = task.submit(); return Futures.transform(result, OFRpcFutureResultTransformFactory.createForRemoveMeterOutput()); @@ -223,7 +225,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { data.setDatapathId(sessionContext.getFeatures().getDatapathId()); data.setXid(sessionContext.getNextXid()); - final java.util.Optional message = ConvertorManager.getInstance().convert(input, data); + final java.util.Optional message = convertorExecutor.convert(input, data); SwitchConnectionDistinguisher cookie = null; ConnectionCookie connectionCookie = input.getConnectionCookie(); @@ -244,7 +246,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { SwitchConnectionDistinguisher cookie = null; final ReadWriteTransaction rwTx = OFSessionUtil.getSessionManager().getDataBroker().newReadWriteTransaction(); OFRpcTask> task = - OFRpcTaskFactory.createUpdateFlowTask(rpcTaskContext, input, cookie, rwTx); + OFRpcTaskFactory.createUpdateFlowTask(rpcTaskContext, input, cookie, rwTx, convertorExecutor); ListenableFuture> result = task.submit(); return result; @@ -258,7 +260,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { SwitchConnectionDistinguisher cookie = null; OFRpcTask> task = - OFRpcTaskFactory.createUpdateGroupTask(rpcTaskContext, input, cookie); + OFRpcTaskFactory.createUpdateGroupTask(rpcTaskContext, input, cookie, convertorExecutor); ListenableFuture> result = task.submit(); return result; @@ -272,7 +274,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { SwitchConnectionDistinguisher cookie = null; OFRpcTask> task = - OFRpcTaskFactory.createUpdateMeterTask(rpcTaskContext, input, cookie); + OFRpcTaskFactory.createUpdateMeterTask(rpcTaskContext, input, cookie, convertorExecutor); ListenableFuture> result = task.submit(); return result; @@ -390,7 +392,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { LOG.debug("Calling the updatePort RPC method on MessageDispatchService"); OFRpcTask> task = - OFRpcTaskFactory.createUpdatePortTask(rpcTaskContext, input, null); + OFRpcTaskFactory.createUpdatePortTask(rpcTaskContext, input, null, convertorExecutor); return task.submit(); } @@ -399,7 +401,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { LOG.debug("Calling the updateTable RPC method on MessageDispatchService"); OFRpcTask> task = - OFRpcTaskFactory.createUpdateTableTask(rpcTaskContext, input, null); + OFRpcTaskFactory.createUpdateTableTask(rpcTaskContext, input, null, convertorExecutor); return task.submit(); } @@ -429,7 +431,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { LOG.debug("Calling the getFlowStatisticsFromFlowTable RPC method on MessageDispatchService"); OFRpcTask> task = - OFRpcTaskFactory.createGetFlowStatisticsFromFlowTableTask(rpcTaskContext, input, null); + OFRpcTaskFactory.createGetFlowStatisticsFromFlowTableTask(rpcTaskContext, input, null, convertorExecutor); return task.submit(); } @@ -449,7 +451,7 @@ public class ModelDrivenSwitchImpl extends AbstractModelDrivenSwitch { LOG.debug("Calling the getAggregateFlowStatisticsFromFlowTableForGivenMatch RPC method on MessageDispatchService"); OFRpcTask> task = - OFRpcTaskFactory.createGetAggregateFlowStatisticsFromFlowTableForGivenMatchTask(rpcTaskContext, input, null); + OFRpcTaskFactory.createGetAggregateFlowStatisticsFromFlowTableForGivenMatchTask(rpcTaskContext, input, null, convertorExecutor); return task.submit(); } 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 b2f69d32fe..3bc86226cd 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 @@ -28,7 +28,7 @@ import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.sal.NotificationComposer; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.GroupConvertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterConvertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.PortConvertor; @@ -203,27 +203,32 @@ public abstract class OFRpcTaskFactory { * @param taskContext task context * @param input flow object input * @param cookie switch connection distinguisher cookie value + * @param convertorExecutor * @return UpdateFlow task */ public static OFRpcTask> createAddFlowTask( OFRpcTaskContext taskContext, AddFlowInput input, - SwitchConnectionDistinguisher cookie) { + SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { - public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, AddFlowInput input) { + private final ConvertorExecutor convertorExecutor; + private final VersionDatapathIdConvertorData data; + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, AddFlowInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; + data = new VersionDatapathIdConvertorData(getVersion()); + data.setDatapathId(getSession().getFeatures().getDatapathId()); } @Override public ListenableFuture> call() { ListenableFuture> result = SettableFuture.create(); - final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(getVersion()); - data.setDatapathId(getSession().getFeatures().getDatapathId()); // Convert the AddFlowInput to FlowModInput final java.util.Optional> ofFlowModInputs = - ConvertorManager.getInstance().convert(getInput(), data); + convertorExecutor.convert(getInput(), data); final List flowModInputs = ofFlowModInputs.orElse(Collections.emptyList()); LOG.debug("Number of flows to push to switch: {}", flowModInputs.size()); @@ -241,12 +246,12 @@ public abstract class OFRpcTaskFactory { } } - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } /** - * Recursive helper method for {@link OFRpcTaskFactory#createAddFlowTask(OFRpcTaskContext, AddFlowInput, SwitchConnectionDistinguisher)} - * and {@link OFRpcTaskFactory#createUpdateFlowTask(OFRpcTaskContext, UpdateFlowInput, SwitchConnectionDistinguisher, ReadWriteTransaction)} to chain results + * Recursive helper method for {@link OFRpcTaskFactory#createAddFlowTask(OFRpcTaskContext, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInput, org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor)} + * and {@link OFRpcTaskFactory#createUpdateFlowTask(OFRpcTaskContext, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowInput, org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher, org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor)} to chain results * of multiple flowmods. * The next flowmod gets executed if the earlier one is successful. * All the flowmods should have the same xid, in-order to cross-reference @@ -318,19 +323,23 @@ public abstract class OFRpcTaskFactory { * @param input update flow input * @param cookie switch connection distinguisher cookie value * @param rwTx read write transaction + * @param convertorExecutor * @return UpdateFlow task */ public static OFRpcTask> createUpdateFlowTask( final OFRpcTaskContext taskContext, UpdateFlowInput input, - SwitchConnectionDistinguisher cookie, final ReadWriteTransaction rwTx) { + SwitchConnectionDistinguisher cookie, final ReadWriteTransaction rwTx, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { final ReadWriteTransaction rwTx; + private final ConvertorExecutor convertorExecutor; + private final VersionDatapathIdConvertorData data; InstanceIdentifier iiToTable = null; String flowId = null; public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, - final UpdateFlowInput in, final ReadWriteTransaction rwTx) { + final UpdateFlowInput in, final ReadWriteTransaction rwTx, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, in); + this.convertorExecutor = convertorExecutor; final FlowRef flowRef = in.getFlowRef(); if (flowRef != null) { InstanceIdentifier iiToFlow = (InstanceIdentifier)(flowRef.getValue()); @@ -342,6 +351,8 @@ public abstract class OFRpcTaskFactory { } } this.rwTx = rwTx; + data = new VersionDatapathIdConvertorData(getVersion()); + data.setDatapathId(getSession().getFeatures().getDatapathId()); } @Override @@ -351,20 +362,17 @@ public abstract class OFRpcTaskFactory { UpdateFlowInput in = getInput(); UpdatedFlow updated = in.getUpdatedFlow(); OriginalFlow original = in.getOriginalFlow(); - Short version = getVersion(); List allFlowMods = new ArrayList<>(); java.util.Optional> ofFlowModInputs; - final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(version); - data.setDatapathId(getSession().getFeatures().getDatapathId()); - if (!FlowCreatorUtil.canModifyFlow(original, updated, version)) { + if (!FlowCreatorUtil.canModifyFlow(original, updated, getVersion())) { // We would need to remove original and add updated. //remove flow RemoveFlowInputBuilder removeflow = new RemoveFlowInputBuilder(original); java.util.Optional> ofFlowRemoveInput = - ConvertorManager.getInstance().convert(removeflow.build(), data); + convertorExecutor.convert(removeflow.build(), data); if (ofFlowRemoveInput.isPresent()) { // remove flow should be the first @@ -372,9 +380,9 @@ public abstract class OFRpcTaskFactory { } AddFlowInputBuilder addFlowInputBuilder = new AddFlowInputBuilder(updated); - ofFlowModInputs = ConvertorManager.getInstance().convert(addFlowInputBuilder.build(), data); + ofFlowModInputs = convertorExecutor.convert(addFlowInputBuilder.build(), data); } else { - ofFlowModInputs = ConvertorManager.getInstance().convert(updated, data); + ofFlowModInputs = convertorExecutor.convert(updated, data); } //deleting flow hash value from operational DS @@ -437,7 +445,7 @@ public abstract class OFRpcTaskFactory { return getInput().getUpdatedFlow().isBarrier(); } } - return new OFRpcTaskImpl(taskContext, cookie, input, rwTx); + return new OFRpcTaskImpl(taskContext, cookie, input, rwTx, convertorExecutor); } @@ -461,25 +469,30 @@ public abstract class OFRpcTaskFactory { * @param taskContext taks context * @param input group update input * @param cookie switch connection distinguisher cookie value + * @param convertorExecutor * @return update group task */ public static OFRpcTask> createAddGroupTask( final OFRpcTaskContext taskContext, AddGroupInput input, - final SwitchConnectionDistinguisher cookie) { + final SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { - public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, AddGroupInput input) { + private final ConvertorExecutor convertorExecutor; + private final VersionDatapathIdConvertorData data; + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, AddGroupInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; + data = new VersionDatapathIdConvertorData(getVersion()); + data.setDatapathId(getSession().getFeatures().getDatapathId()); } @Override public ListenableFuture> call() { ListenableFuture> result = SettableFuture.create(); - final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(getVersion()); - data.setDatapathId(getSession().getFeatures().getDatapathId()); // Convert the AddGroupInput to GroupModInput - final java.util.Optional ofGroupModInput = ConvertorManager.getInstance().convert(getInput(), data); + final java.util.Optional ofGroupModInput = convertorExecutor.convert(getInput(), data); final GroupModInputBuilder groupModInputBuilder = ofGroupModInput .orElse(GroupConvertor.defaultResult(getVersion())) .setXid(getSession().getNextXid()); @@ -500,7 +513,7 @@ public abstract class OFRpcTaskFactory { } }; - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } @@ -525,15 +538,21 @@ public abstract class OFRpcTaskFactory { * @param taskContext task context * @param input meter add input * @param cookie switch connection distinguisher + * @param convertorExecutor * @return update meter task */ public static OFRpcTask> createAddMeterTask( OFRpcTaskContext taskContext, AddMeterInput input, - SwitchConnectionDistinguisher cookie) { + SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { - public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, AddMeterInput input) { + private final ConvertorExecutor convertorExecutor; + private final VersionConvertorData data; + + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, AddMeterInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; + data = new VersionConvertorData(getVersion()); } @Override @@ -541,9 +560,7 @@ public abstract class OFRpcTaskFactory { ListenableFuture> result = SettableFuture.create(); // Convert the AddMeterInput to UpdateMeterOutput - final java.util.Optional ofMeterModInput = ConvertorManager - .getInstance() - .convert(getInput(), new VersionConvertorData(getVersion())); + final java.util.Optional ofMeterModInput = convertorExecutor.convert(getInput(), data); final MeterModInputBuilder meterModInputBuilder = ofMeterModInput .orElse(MeterConvertor.defaultResult(getVersion())) @@ -565,7 +582,7 @@ public abstract class OFRpcTaskFactory { } }; - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } /** @@ -589,27 +606,32 @@ public abstract class OFRpcTaskFactory { * @param taskContext task context * @param input update group output * @param cookie switch connection distinguisher cookie value + * @param convertorExecutor * @return UpdateFlow task */ public static OFRpcTask> createUpdateGroupTask( OFRpcTaskContext taskContext, UpdateGroupInput input, - SwitchConnectionDistinguisher cookie) { + SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { + private final ConvertorExecutor convertorExecutor; + private final VersionDatapathIdConvertorData data; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, - UpdateGroupInput input) { + UpdateGroupInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; + data = new VersionDatapathIdConvertorData(getVersion()); + data.setDatapathId(getSession().getFeatures().getDatapathId()); } @Override public ListenableFuture> call() { ListenableFuture> result = null; - final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(getVersion()); - data.setDatapathId(getSession().getFeatures().getDatapathId()); // Convert the UpdateGroupInput to GroupModInput final java.util.Optional ofGroupModInput = - ConvertorManager.getInstance().convert(getInput().getUpdatedGroup(), data); + convertorExecutor.convert(getInput().getUpdatedGroup(), data); final GroupModInputBuilder groupModInputBuilder = ofGroupModInput .orElse(GroupConvertor.defaultResult(getVersion())) @@ -632,7 +654,7 @@ public abstract class OFRpcTaskFactory { } } - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } /** @@ -656,16 +678,22 @@ public abstract class OFRpcTaskFactory { * @param taskContext task context * @param input update meter input * @param cookie switch connection distinguisher cookie value + * @param convertorExecutor * @return update meter task */ public static OFRpcTask> createUpdateMeterTask( OFRpcTaskContext taskContext, UpdateMeterInput input, - SwitchConnectionDistinguisher cookie) { + SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { + private final ConvertorExecutor convertorExecutor; + private final VersionConvertorData data; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, - UpdateMeterInput input) { + UpdateMeterInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; + data = new VersionConvertorData(getVersion()); } @Override @@ -673,9 +701,7 @@ public abstract class OFRpcTaskFactory { ListenableFuture> result = null; // Convert the UpdateMeterInput to MeterModInput - final java.util.Optional ofMeterModInput = ConvertorManager - .getInstance() - .convert(getInput().getUpdatedMeter(), new VersionConvertorData(getVersion())); + final java.util.Optional ofMeterModInput = convertorExecutor.convert(getInput().getUpdatedMeter(), data); final MeterModInputBuilder meterModInputBuilder = ofMeterModInput .orElse(MeterConvertor.defaultResult(getVersion())) @@ -696,7 +722,7 @@ public abstract class OFRpcTaskFactory { } } - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } /** @@ -721,27 +747,31 @@ public abstract class OFRpcTaskFactory { * @param taskContext task context * @param input update flow input * @param cookie switch connection distinguisher cookie value + * @param convertorExecutor * @return task remove flow task */ public static OFRpcTask> createRemoveFlowTask( OFRpcTaskContext taskContext, RemoveFlowInput input, - SwitchConnectionDistinguisher cookie) { + SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { + private final VersionDatapathIdConvertorData data; + private final ConvertorExecutor convertorExecutor; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, - RemoveFlowInput input) { + RemoveFlowInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; + data = new VersionDatapathIdConvertorData(getVersion()); + data.setDatapathId(getSession().getFeatures().getDatapathId()); } @Override public ListenableFuture> call() { ListenableFuture> result = SettableFuture.create(); - final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(getVersion()); - data.setDatapathId(getSession().getFeatures().getDatapathId()); // Convert the AddFlowInput to FlowModInput - final java.util.Optional> ofFlowModInputs = - ConvertorManager.getInstance().convert(getInput(), data); + final java.util.Optional> ofFlowModInputs = convertorExecutor.convert(getInput(), data); result = chainFlowMods(ofFlowModInputs.orElse(Collections.emptyList()), 0, getTaskContext(), getCookie()); result = OFRpcTaskUtil.chainFutureBarrier(this, result); @@ -758,7 +788,7 @@ public abstract class OFRpcTaskFactory { } } - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } /** @@ -783,27 +813,31 @@ public abstract class OFRpcTaskFactory { * @param taskContext task context * @param input remove group input * @param cookie switch connection distinguisher cookie value + * @param convertorExecutor * @return task remove group task */ public static OFRpcTask> createRemoveGroupTask( final OFRpcTaskContext taskContext, RemoveGroupInput input, - final SwitchConnectionDistinguisher cookie) { + final SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { + private final ConvertorExecutor convertorExecutor; + private final VersionDatapathIdConvertorData data; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, - RemoveGroupInput input) { + RemoveGroupInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; + data = new VersionDatapathIdConvertorData(getVersion()); + data.setDatapathId(getSession().getFeatures().getDatapathId()); } @Override public ListenableFuture> call() { ListenableFuture> result = SettableFuture.create(); - final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(getVersion()); - data.setDatapathId(getSession().getFeatures().getDatapathId()); // Convert the AddGroupInput to GroupModInput - final java.util.Optional ofGroupModInput = - ConvertorManager.getInstance().convert(getInput(), data); + final java.util.Optional ofGroupModInput = convertorExecutor.convert(getInput(), data); final GroupModInputBuilder groupModInputBuilder = ofGroupModInput .orElse(GroupConvertor.defaultResult(getVersion())) @@ -825,7 +859,7 @@ public abstract class OFRpcTaskFactory { } } - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } /** @@ -849,17 +883,23 @@ public abstract class OFRpcTaskFactory { * @param taskContext task context * @param input meter removed input * @param cookie switch connection distinguisher cookie value + * @param convertorExecutor * @return task meter remove task */ public static OFRpcTask> createRemoveMeterTask( OFRpcTaskContext taskContext, RemoveMeterInput input, - SwitchConnectionDistinguisher cookie) { + SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { + private final ConvertorExecutor convertorExecutor; + private final VersionConvertorData data; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, - RemoveMeterInput input) { + RemoveMeterInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; + data = new VersionConvertorData(getVersion()); } @Override @@ -867,9 +907,7 @@ public abstract class OFRpcTaskFactory { ListenableFuture> result = SettableFuture.create(); // Convert the RemoveMeterInput to UpdateMeterOutput - final java.util.Optional ofMeterModInput = ConvertorManager - .getInstance() - .convert(getInput(), new VersionConvertorData(getVersion())); + final java.util.Optional ofMeterModInput = convertorExecutor.convert(getInput(), data); final MeterModInputBuilder meterModInputBuilder = ofMeterModInput .orElse(MeterConvertor.defaultResult(getVersion())) @@ -891,7 +929,7 @@ public abstract class OFRpcTaskFactory { } } - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } @@ -1623,18 +1661,22 @@ public abstract class OFRpcTaskFactory { * @param taskContext task context * @param input get flow statistics from flow table * @param cookie switch connection distinguisher cookie value + * @param convertorExecutor * @return task get flow statistics from flow table task */ public static OFRpcTask> createGetFlowStatisticsFromFlowTableTask( final OFRpcTaskContext taskContext, - final GetFlowStatisticsFromFlowTableInput input, SwitchConnectionDistinguisher cookie) { + final GetFlowStatisticsFromFlowTableInput input, SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { + private final ConvertorExecutor convertorExecutor; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, - GetFlowStatisticsFromFlowTableInput input) { + GetFlowStatisticsFromFlowTableInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; } @Override @@ -1674,7 +1716,7 @@ public abstract class OFRpcTaskFactory { // convert and inject match MatchReactor.getInstance().convert(input.getMatch(), taskContext.getSession() - .getPrimaryConductor().getVersion(), mprFlowRequestBuilder); + .getPrimaryConductor().getVersion(), mprFlowRequestBuilder, convertorExecutor); // Set request body to main multipart request multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build()); @@ -1698,7 +1740,7 @@ public abstract class OFRpcTaskFactory { } } - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } /** @@ -1765,17 +1807,21 @@ public abstract class OFRpcTaskFactory { * @param taskContext task context * @param input aggregate flow statistics input * @param cookie switch connection distinguisher cookie value + * @param convertorExecutor * @return task task to fetch the statistics */ public static OFRpcTask> createGetAggregateFlowStatisticsFromFlowTableForGivenMatchTask( final OFRpcTaskContext taskContext, - final GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput input, SwitchConnectionDistinguisher cookie) { + final GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput input, SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { + private final ConvertorExecutor convertorExecutor; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, - GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput input) { + GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; } @Override @@ -1801,7 +1847,7 @@ public abstract class OFRpcTaskFactory { } MatchReactor.getInstance().convert(input.getMatch(), taskContext.getSession() - .getPrimaryConductor().getVersion(), mprAggregateRequestBuilder); + .getPrimaryConductor().getVersion(), mprAggregateRequestBuilder, convertorExecutor); FlowCreatorUtil.setWildcardedFlowMatch(taskContext.getSession() .getPrimaryConductor().getVersion(), mprAggregateRequestBuilder); @@ -1828,7 +1874,7 @@ public abstract class OFRpcTaskFactory { } } - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } /** @@ -2092,31 +2138,34 @@ public abstract class OFRpcTaskFactory { * @param taskContext task context * @param input update port input * @param cookie switch connection distinguisher cookie value + * @param convertorExecutor * @return task task to update port */ public static OFRpcTask> createUpdatePortTask( final OFRpcTaskContext taskContext, final UpdatePortInput input, - final SwitchConnectionDistinguisher cookie) { + final SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { + private final ConvertorExecutor convertorExecutor; + private final VersionConvertorData data; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, - UpdatePortInput input) { + UpdatePortInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; + data = new VersionConvertorData(getVersion()); } @Override public ListenableFuture> call() { ListenableFuture> result = SettableFuture.create(); - final short version = taskContext.getSession().getPrimaryConductor().getVersion(); final Port inputPort = input.getUpdatedPort().getPort().getPort().get(0); - final java.util.Optional ofPortModInput = ConvertorManager - .getInstance() - .convert(inputPort, new VersionConvertorData(version)); + final java.util.Optional ofPortModInput = convertorExecutor.convert(inputPort, data); PortModInputBuilder mdInput = new PortModInputBuilder(ofPortModInput - .orElse(PortConvertor.defaultResult(version))) + .orElse(PortConvertor.defaultResult(getVersion()))) .setXid(taskContext.getSession().getNextXid()); Future> resultFromOFLib = getMessageService() @@ -2127,24 +2176,30 @@ public abstract class OFRpcTaskFactory { } } - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } /** * @param taskContext task context * @param input update table input * @param cookie switch connection distinguisher cookie value + * @param convertorExecutor * @return task task to udpate table input */ public static OFRpcTask> createUpdateTableTask( final OFRpcTaskContext taskContext, final UpdateTableInput input, - final SwitchConnectionDistinguisher cookie) { + final SwitchConnectionDistinguisher cookie, ConvertorExecutor convertorExecutor) { class OFRpcTaskImpl extends OFRpcTask> { + private final ConvertorExecutor convertorExecutor; + private final VersionConvertorData data; + public OFRpcTaskImpl(OFRpcTaskContext taskContext, SwitchConnectionDistinguisher cookie, - UpdateTableInput input) { + UpdateTableInput input, ConvertorExecutor convertorExecutor) { super(taskContext, cookie, input); + this.convertorExecutor = convertorExecutor; + data = new VersionConvertorData(getVersion()); } @Override @@ -2156,7 +2211,7 @@ public abstract class OFRpcTaskFactory { MultipartRequestTableFeaturesCaseBuilder caseBuilder = new MultipartRequestTableFeaturesCaseBuilder(); MultipartRequestTableFeaturesBuilder requestBuilder = new MultipartRequestTableFeaturesBuilder(); - final java.util.Optional> ofTableFeatureList = ConvertorManager.getInstance().convert(input.getUpdatedTable()); + final java.util.Optional> ofTableFeatureList = convertorExecutor.convert(input.getUpdatedTable(), data); requestBuilder.setTableFeatures(ofTableFeatureList.orElse(Collections.emptyList())); caseBuilder.setMultipartRequestTableFeatures(requestBuilder.build()); @@ -2182,7 +2237,7 @@ public abstract class OFRpcTaskFactory { } } - return new OFRpcTaskImpl(taskContext, cookie, input); + return new OFRpcTaskImpl(taskContext, cookie, input, convertorExecutor); } public static OFRpcTask> createSetNodeConfigTask(final OFRpcTaskContext taskContext, diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OpenflowPluginProvider.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OpenflowPluginProvider.java index 58754980b0..dd88be1c5e 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OpenflowPluginProvider.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OpenflowPluginProvider.java @@ -22,6 +22,8 @@ import org.opendaylight.openflowplugin.extension.api.core.extension.ExtensionCon import org.opendaylight.openflowplugin.openflow.md.core.MDController; import org.opendaylight.openflowplugin.openflow.md.core.extension.ExtensionConverterManagerImpl; import org.opendaylight.openflowplugin.openflow.md.core.role.OfEntityManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.session.OFRoleManager; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; import org.opendaylight.openflowplugin.statistics.MessageSpyCounterImpl; @@ -67,6 +69,8 @@ public class OpenflowPluginProvider implements AutoCloseable, OpenFlowPluginExte * Initialization of services and msgSpy counter */ public void initialization() { + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + messageCountProvider = new MessageSpyCounterImpl(); extensionConverterManager = new ExtensionConverterManagerImpl(); roleManager = new OFRoleManager(OFSessionUtil.getSessionManager()); @@ -76,14 +80,14 @@ public class OpenflowPluginProvider implements AutoCloseable, OpenFlowPluginExte entManager.init(); LOG.debug("dependencies gathered.."); - registrationManager = new SalRegistrationManager(); + registrationManager = new SalRegistrationManager(convertorManager); registrationManager.setDataService(dataBroker); registrationManager.setPublishService(notificationService); registrationManager.setRpcProviderRegistry(rpcRegistry); registrationManager.setOfEntityManager(entManager); registrationManager.init(); - mdController = new MDController(); + mdController = new MDController(convertorManager); mdController.setSwitchConnectionProviders(switchConnectionProviders); mdController.setMessageSpyCounter(messageCountProvider); mdController.setExtensionConverterProvider(extensionConverterManager); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManager.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManager.java index ec72db0329..7f3ce58b63 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManager.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManager.java @@ -24,6 +24,7 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionListe import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionManager; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SwitchSessionKeyOF; import org.opendaylight.openflowplugin.openflow.md.core.role.OfEntityManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; @@ -53,6 +54,7 @@ import org.slf4j.LoggerFactory; public class SalRegistrationManager implements SessionListener, AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(SalRegistrationManager.class); + private final ConvertorExecutor convertorExecutor; private NotificationProviderService publishService; @@ -66,7 +68,8 @@ public class SalRegistrationManager implements SessionListener, AutoCloseable { private OfEntityManager entManager; - public SalRegistrationManager() { + public SalRegistrationManager(ConvertorExecutor convertorExecutor) { + this.convertorExecutor = convertorExecutor; swFeaturesUtil = SwitchFeaturesUtil.getInstance(); } @@ -105,7 +108,7 @@ public class SalRegistrationManager implements SessionListener, AutoCloseable { InstanceIdentifier identifier = identifierFromDatapathId(datapathId); NodeRef nodeRef = new NodeRef(identifier); NodeId nodeId = nodeIdFromDatapathId(datapathId); - ModelDrivenSwitch ofSwitch = new ModelDrivenSwitchImpl(nodeId, identifier,context); + ModelDrivenSwitch ofSwitch = new ModelDrivenSwitchImpl(nodeId, identifier, context, convertorExecutor); NotificationQueueWrapper wrappedNotification = new NotificationQueueWrapper( nodeAdded(ofSwitch, features, nodeRef), diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManager.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManager.java index cc30512e32..191b21d241 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManager.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManager.java @@ -8,23 +8,17 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor; -import java.util.ArrayList; +import com.google.common.annotations.VisibleForTesting; +import java.util.Arrays; import java.util.Collection; -import java.util.List; +import java.util.Collections; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import javax.annotation.Nullable; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionConvertor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionResponseConvertor; +import java.util.stream.Stream; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorData; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.FlowConvertor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.FlowInstructionResponseConvertor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.FlowStatsResponseConvertor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchV10ResponseConvertor; import org.opendaylight.yangtools.yang.binding.DataContainer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,75 +28,54 @@ import org.slf4j.LoggerFactory; */ public class ConvertorManager implements ConvertorExecutor, ConvertorRegistrator { private static final Logger LOG = LoggerFactory.getLogger(ConvertorManager.class); - private static ConvertorManager INSTANCE; - - static { - INSTANCE = new ConvertorManager(); - // All convertors are registered here - INSTANCE.registerConvertor(new TableFeaturesConvertor()); - INSTANCE.registerConvertor(new TableFeaturesResponseConvertor()); - INSTANCE.registerConvertor(new MeterConvertor()); - INSTANCE.registerConvertor(new MeterStatsResponseConvertor()); - INSTANCE.registerConvertor(new MeterConfigStatsResponseConvertor()); - INSTANCE.registerConvertor(new PortConvertor()); - // TODO: Add MatchConvertor - INSTANCE.registerConvertor(new MatchResponseConvertor()); - INSTANCE.registerConvertor(new MatchV10ResponseConvertor()); - INSTANCE.registerConvertor(new ActionConvertor()); - INSTANCE.registerConvertor(new ActionResponseConvertor()); - INSTANCE.registerConvertor(new GroupConvertor()); - INSTANCE.registerConvertor(new GroupDescStatsResponseConvertor()); - INSTANCE.registerConvertor(new GroupStatsResponseConvertor()); - INSTANCE.registerConvertor(new PacketOutConvertor()); - INSTANCE.registerConvertor(new FlowConvertor()); - INSTANCE.registerConvertor(new FlowInstructionResponseConvertor()); - INSTANCE.registerConvertor(new FlowStatsResponseConvertor()); - } - - // Actual convertor keys - private List> convertorKeys = new ArrayList<>(); // Cache, that holds all registered convertors, but they can have multiple keys, // based on instanceof checks in the convert method - private Map, Convertor> convertors = new ConcurrentHashMap<>(); - - private ConvertorManager() { - // Hiding implicit constructor - } + private Map, Convertor>> convertors; /** - * Gets instance of Convertor Manager. - * - * @return the instance + * Create new instance of Convertor Manager + * @param supportedVersions supported versions */ - public static ConvertorManager getInstance() { - return INSTANCE; + public ConvertorManager(final Short... supportedVersions) { + final Stream stream = Arrays.stream(supportedVersions); + + if (supportedVersions.length == 1) { + final Optional versionOptional = stream.findFirst(); + versionOptional.ifPresent(version -> convertors = Collections.singletonMap(version, new ConcurrentHashMap<>())); + } else { + convertors = new ConcurrentHashMap<>(); + stream.forEach(version -> convertors.putIfAbsent(version, new ConcurrentHashMap<>())); + } } @Override - @SuppressWarnings("unchecked") - public void registerConvertor(final Convertor convertor) { - for (final Object typeRaw : convertor.getTypes()) { - final Class type = (Class)typeRaw; - final Convertor result = convertors.get(type); - - if (Objects.isNull(result)) { - convertorKeys.add(type); - convertors.put(type, convertor); - LOG.debug("{} is now converted by {}", type, convertor); - } else { - LOG.warn("Convertor for type {} is already registered", type); + public ConvertorManager registerConvertor(final short version, final Convertor convertor) { + final Map, Convertor> convertorsForVersion = + convertors.get(version); + + if (Objects.nonNull(convertorsForVersion)) { + for (final Class type : convertor.getTypes()) { + final Convertor result = convertorsForVersion.get(type); + + if (Objects.isNull(result)) { + convertor.setConvertorExecutor(this); + convertorsForVersion.put(type, convertor); + LOG.debug("{} for version {} is now converted by {}", type, version, convertor); + } else { + LOG.warn("{} for version {} have already registered convertor", type, version); + } } + } else { + LOG.warn("{} do not supports version {}", this, version); } - } - public Optional convert(final FROM source) { - return convert(source, null); + return this; } @Override @SuppressWarnings("unchecked") - public Optional convert(final FROM source, @Nullable final DATA data) { + public Optional convert(final FROM source, final DATA data) { Optional result = Optional.empty(); if (Objects.isNull(source)) { @@ -113,26 +86,17 @@ public class ConvertorManager implements ConvertorExecutor, ConvertorRegistrator final Class type = source.getImplementedInterface(); if (Objects.isNull(type)) { - LOG.warn("Cannot extract type from source, because getImplementedInterface() returns null"); + LOG.warn("Cannot extract type from {}, because getImplementedInterface() returns null", source); return result; } - final Optional convertor = findConvertor(type); - - if (convertor.isPresent()) { - result = Optional.of((TO) convertor.get().convert(source, data)); - } - - return result; - } - - public Optional convert(final Collection source) { - return convert(source, null); + return findConvertor(data.getVersion(), type) + .map(convertor -> (TO)convertor.convert(source, data)); } @Override @SuppressWarnings("unchecked") - public Optional convert(final Collection source, @Nullable final DATA data) { + public Optional convert(final Collection source, final DATA data) { Optional result = Optional.empty(); if (Objects.isNull(source)) { @@ -150,17 +114,12 @@ public class ConvertorManager implements ConvertorExecutor, ConvertorRegistrator final Class type = first.get().getImplementedInterface(); if (Objects.isNull(type)) { - LOG.warn("Cannot extract type from source, because getImplementedInterface() returns null"); + LOG.warn("Cannot extract type from {}, because getImplementedInterface() returns null", source); return result; } - final Optional convertor = findConvertor(type); - - if (convertor.isPresent()) { - result = Optional.of((TO) convertor.get().convert(source, data)); - } - - return result; + return findConvertor(data.getVersion(), type) + .map(convertor -> (TO)convertor.convert(source, data)); } /** @@ -170,23 +129,36 @@ public class ConvertorManager implements ConvertorExecutor, ConvertorRegistrator * @param type input type * @return found convertor */ - private Optional findConvertor(final Class type) { - Optional convertor = Optional.ofNullable(convertors.get(type)); - - if (!convertor.isPresent()) { - for (final Class key : convertorKeys) { - if (key.isAssignableFrom(type)) { - final Convertor foundConvertor = convertors.get(key); - convertor = Optional.ofNullable(foundConvertor); - convertors.put(type, foundConvertor); - LOG.warn("{} is now converted by {} using last resort method", type, foundConvertor); - break; - } - } + @VisibleForTesting + Optional findConvertor(final short version, final Class type) { + final Map, Convertor> convertorsForVersion = + convertors.get(version); + + Optional convertor = Optional.empty(); + + if (Objects.nonNull(convertorsForVersion)) { + convertor = Optional.ofNullable(convertorsForVersion.get(type)); if (!convertor.isPresent()) { - LOG.warn("Convertor for {} not found", type); + for (final Class convertorType : convertorsForVersion.keySet()) { + if (type.isAssignableFrom(convertorType)) { + final Convertor foundConvertor = convertorsForVersion.get(convertorType); + convertor = Optional.ofNullable(foundConvertor); + + if (convertor.isPresent()) { + convertorsForVersion.put(type, foundConvertor); + LOG.warn("{} for version {} is now converted by {} using last resort method", type, version, foundConvertor); + break; + } + } + } + + if (!convertor.isPresent()) { + LOG.warn("Convertor for {} for version {} not found", type, version); + } } + } else { + LOG.warn("{} do not supports version {}", this, version); } return convertor; diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManagerFactory.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManagerFactory.java new file mode 100644 index 0000000000..5111912c62 --- /dev/null +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManagerFactory.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor; + +import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionConvertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionResponseConvertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.FlowConvertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.FlowInstructionResponseConvertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.FlowStatsResponseConvertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchV10ResponseConvertor; + +/** + * Convertor manager factory. + */ +public class ConvertorManagerFactory { + /** + * Create default convertor manager. + * + * @return the convertor manager + */ + public static ConvertorManager createDefaultManager() { + final TableFeaturesConvertor tableFeaturesConvertor = new TableFeaturesConvertor(); + final TableFeaturesResponseConvertor tableFeaturesResponseConvertor = new TableFeaturesResponseConvertor(); + final MeterConvertor meterConvertor = new MeterConvertor(); + final MeterStatsResponseConvertor meterStatsResponseConvertor = new MeterStatsResponseConvertor(); + final MeterConfigStatsResponseConvertor meterConfigStatsResponseConvertor = new MeterConfigStatsResponseConvertor(); + final PortConvertor portConvertor = new PortConvertor(); + final MatchResponseConvertor matchResponseConvertor = new MatchResponseConvertor(); + final MatchV10ResponseConvertor matchV10ResponseConvertor = new MatchV10ResponseConvertor(); + final ActionConvertor actionConvertor = new ActionConvertor(); + final ActionResponseConvertor actionResponseConvertor = new ActionResponseConvertor(); + final GroupConvertor groupConvertor = new GroupConvertor(); + final GroupDescStatsResponseConvertor groupDescStatsResponseConvertor = new GroupDescStatsResponseConvertor(); + final GroupStatsResponseConvertor groupStatsResponseConvertor = new GroupStatsResponseConvertor(); + final PacketOutConvertor packetOutConvertor = new PacketOutConvertor(); + final FlowConvertor flowConvertor = new FlowConvertor(); + final FlowInstructionResponseConvertor flowInstructionResponseConvertor = new FlowInstructionResponseConvertor(); + final FlowStatsResponseConvertor flowStatsResponseConvertor = new FlowStatsResponseConvertor(); + + return new ConvertorManager(OFConstants.OFP_VERSION_1_0, OFConstants.OFP_VERSION_1_3) + .registerConvertor(OFConstants.OFP_VERSION_1_0, tableFeaturesConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, tableFeaturesConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, tableFeaturesResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, tableFeaturesResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, meterConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, meterConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, meterStatsResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, meterStatsResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, meterConfigStatsResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, meterConfigStatsResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, portConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, portConvertor) + // TODO: Add MatchConvertorImpl and MatchConvertorV10Impl + .registerConvertor(OFConstants.OFP_VERSION_1_3, matchResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, matchV10ResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, actionConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, actionConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, actionResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, actionResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, groupConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, groupConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, groupDescStatsResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, groupDescStatsResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, groupStatsResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, groupStatsResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, packetOutConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, packetOutConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, flowConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, flowConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, flowInstructionResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, flowInstructionResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_0, flowStatsResponseConvertor) + .registerConvertor(OFConstants.OFP_VERSION_1_3, flowStatsResponseConvertor); + } +} diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorRegistrator.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorRegistrator.java index 8bc40cdb56..f5dbc59135 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorRegistrator.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorRegistrator.java @@ -9,6 +9,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorData; public interface ConvertorRegistrator { /** @@ -16,5 +17,5 @@ public interface ConvertorRegistrator { * * @param convertor the convertor */ - void registerConvertor(final Convertor convertor); + ConvertorManager registerConvertor(final short version, final Convertor convertor); } \ No newline at end of file diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertor.java index 1d8e648842..527da0910d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertor.java @@ -48,13 +48,12 @@ import org.slf4j.LoggerFactory; * {@code * VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(version); * data.setDatapathId(datapathId); - * Optional ofGroup = ConvertorManager.getInstance().convert(salGroup, data); + * Optional ofGroup = convertorManager.convert(salGroup, data); * } * */ -public class GroupConvertor implements Convertor { +public class GroupConvertor extends Convertor { private static final List> TYPES = Arrays.asList(Group.class, AddGroupInput.class, RemoveGroupInput.class, UpdatedGroup.class); - /** * Create default empty group mod input builder * Use this method, if result from convertor is empty. @@ -78,7 +77,7 @@ public class GroupConvertor implements Convertor salToOFBucketList(Buckets buckets, short version, int groupType, BigInteger datapathid) { + private List salToOFBucketList(Buckets buckets, short version, int groupType, BigInteger datapathid) { final List bucketLists = new ArrayList<>(); final ActionConvertorData data = new ActionConvertorData(version); data.setDatapathId(datapathid); @@ -91,7 +90,7 @@ public class GroupConvertor implements Convertor> bucketActionList = ConvertorManager.getInstance().convert( + Optional> bucketActionList = getConvertorExecutor().convert( groupBucket.getAction(), data); bucketBuilder.setAction(bucketActionList.orElse(Collections.emptyList())); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupDescStatsResponseConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupDescStatsResponseConvertor.java index ffb0450e4b..6b58fa33fe 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupDescStatsResponseConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupDescStatsResponseConvertor.java @@ -41,11 +41,11 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; *
  * {@code
  * VersionConvertorData data = new VersionConvertorData(version);
- * Optional> salGroupStats = ConvertorManager.getInstance().convert(ofGroupStats, data);
+ * Optional> salGroupStats = convertorManager.convert(ofGroupStats, data);
  * }
  * 
*/ -public class GroupDescStatsResponseConvertor implements Convertor, List, VersionConvertorData> { +public class GroupDescStatsResponseConvertor extends Convertor, List, VersionConvertorData> { private static final Set> TYPES = Collections.singleton(GroupDesc.class); @@ -61,7 +61,7 @@ public class GroupDescStatsResponseConvertor implements Convertor> convertedSalActions = - ConvertorManager.getInstance().convert( + getConvertorExecutor().convert( bucketDetails.getAction(), data); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertor.java index 861770a08e..aea519d4d9 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertor.java @@ -37,11 +37,12 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; * Example usage: *
  * {@code
- * Optional> salGroupStats = ConvertorManager.getInstance().convert(ofGroupStats);
+ * VersionConvertorData data = new VersionConvertorData(version);
+ * Optional> salGroupStats = convertorManager.convert(ofGroupStats, data);
  * }
  * 
*/ -public class GroupStatsResponseConvertor implements Convertor< +public class GroupStatsResponseConvertor extends Convertor< List, List, VersionConvertorData> { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConfigStatsResponseConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConfigStatsResponseConvertor.java index 6a46bdeb84..218c5457a7 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConfigStatsResponseConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConfigStatsResponseConvertor.java @@ -46,12 +46,12 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; * Example usage: *
  * {@code
- * Optional> salMeterConfigStats = ConvertorManager.getInstance().convert(
- *  ofMeterConfigStats);
+ * VersionConvertorData data = new VersionConvertorData(version);
+ * Optional> salMeterConfigStats = convertorManager.convert(ofMeterConfigStats, data);
  * }
  * 
*/ -public class MeterConfigStatsResponseConvertor implements Convertor, List, VersionConvertorData> { +public class MeterConfigStatsResponseConvertor extends Convertor, List, VersionConvertorData> { private static final Set> TYPES = Collections.singleton(MeterConfig.class); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertor.java index 50e376a710..8a7dc42745 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertor.java @@ -51,11 +51,11 @@ import org.slf4j.LoggerFactory; *
  * {@code
  * VersionConvertorData data = new VersionConvertorData(version);
- * Optional ofMeter = ConvertorManager.getInstance().convert(salMeter, data);
+ * Optional ofMeter = convertorManager.convert(salMeter, data);
  * }
  * 
*/ -public class MeterConvertor implements Convertor { +public class MeterConvertor extends Convertor { private static final Logger LOG = LoggerFactory.getLogger(MeterConvertor.class); private static final List> TYPES = Arrays.asList(Meter.class, AddMeterInput.class, RemoveMeterInput.class, UpdatedMeter.class); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterStatsResponseConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterStatsResponseConvertor.java index 270c20b788..654e8cde97 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterStatsResponseConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterStatsResponseConvertor.java @@ -36,12 +36,12 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; * Example usage: *
  * {@code
- * Optional> salMeterStats = ConvertorManager.getInstance().convert(
- *  ofMeterStats);
+ * VersionConvertorData data = new VersionConvertorData(version);
+ * Optional> salMeterStats = convertorManager.convert(ofMeterStats, data);
  * }
  * 
*/ -public class MeterStatsResponseConvertor implements Convertor< +public class MeterStatsResponseConvertor extends Convertor< List, List, diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PacketOutConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PacketOutConvertor.java index 7f8a2dc79b..bc320215b8 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PacketOutConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PacketOutConvertor.java @@ -47,11 +47,11 @@ import org.slf4j.LoggerFactory; * PacketOutConvertorData data = new PacketOutConvertorData(version); * data.setDatapathId(datapathId); * data.setXid(xid); - * Optional ofPacketInput = ConvertorManager.getInstance().convert(salPacket, data); + * Optional ofPacketInput = convertorManager.convert(salPacket, data); * } * */ -public class PacketOutConvertor implements Convertor { +public class PacketOutConvertor extends Convertor { private static final Logger LOG = LoggerFactory.getLogger(PacketOutConvertor.class); private static final Set> TYPES = Collections.singleton(TransmitPacketInput.class); @@ -127,7 +127,7 @@ public class PacketOutConvertor implements Convertor> convertedActions = ConvertorManager.getInstance().convert( + final Optional> convertedActions = getConvertorExecutor().convert( inputActions, actionConvertorData); actions = convertedActions.orElse(Collections.emptyList()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertor.java index 2671a8cff3..bd27e21264 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertor.java @@ -37,11 +37,11 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; *
  * {@code
  * VersionConvertorData data = new VersionConvertorData(version);
- * Optional ofPort = ConvertorManager.getInstance().convert(salPort, data);
+ * Optional ofPort = convertorManager.convert(salPort, data);
  * }
  * 
*/ -public class PortConvertor implements Convertor { +public class PortConvertor extends Convertor { private static final Set> TYPES = Collections.singleton(Port.class); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertor.java index 1ab65e6693..38b1935b32 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertor.java @@ -158,11 +158,12 @@ import org.slf4j.LoggerFactory; * Example usage: *
  * {@code
- * Optional> ofFeatures = ConvertorManager.getInstance().convert(salTableFeatures);
+ * VersionConvertorData data = new VersionConvertorData(version);
+ * Optional> ofFeatures = convertorManager..convert(salTableFeatures, data);
  * }
  * 
*/ -public class TableFeaturesConvertor implements Convertor< +public class TableFeaturesConvertor extends Convertor< org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableFeatures, List, VersionConvertorData> { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesResponseConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesResponseConvertor.java index bfc45f5440..04c7e72ef5 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesResponseConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesResponseConvertor.java @@ -175,11 +175,12 @@ import org.slf4j.LoggerFactory; * Example usage: *
  * {@code
- * Optional> salFeatures = ConvertorManager.getInstance().convert(ofTableFeatures);
+ * VersionConvertorData data = new VersionConvertorData(version);
+ * Optional> salFeatures = convertorManager.convert(ofTableFeatures, data);
  * }
  * 
*/ -public class TableFeaturesResponseConvertor implements Convertor, VersionConvertorData> { +public class TableFeaturesResponseConvertor extends Convertor, VersionConvertorData> { private static final Logger LOG = LoggerFactory.getLogger(TableFeaturesResponseConvertor.class); private static final Map TABLE_FEATURE_PROPERTY_TYPE_TO_ACTION; private static final Map, org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action> OF_TO_SAL_ACTION; diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertor.java index 4c808af23d..55582b5ab5 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertor.java @@ -70,11 +70,11 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; * ActionConvertorData data = new ActionConvertorData(version); * data.setDatapathId(datapathId); * data.setIpProtocol(ipProtocol); - * Optional> ofActions = ConvertorManager.getInstance().convert(salActions, data); + * Optional> ofActions = convertorManager.convert(salActions, data); * } * */ -public final class ActionConvertor implements Convertor< +public final class ActionConvertor extends Convertor< List, List, ActionConvertorData> { @@ -143,7 +143,7 @@ public final class ActionConvertor implements Convertor< // Iterate over SAL actions, run them through tokenizer and then add them to list of converted actions if (source != null) { for (final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action action : source) { - final Optional convertedAction = PROCESSOR.process(action.getAction(), data); + final Optional convertedAction = PROCESSOR.process(action.getAction(), data, getConvertorExecutor()); if (convertedAction.isPresent()) { result.add(convertedAction.get()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionResponseConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionResponseConvertor.java index 1a69ab61da..c689b0c8a5 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionResponseConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionResponseConvertor.java @@ -49,11 +49,11 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; * {@code * ActionResponseConvertorData data = new ActionResponseConvertorData(version); * data.setActionPath(actionPath); - * Optional> salActions = ConvertorManager.getInstance().convert(ofActions, data); + * Optional> salActions = convertorManager.convert(ofActions, data); * } * */ -public final class ActionResponseConvertor implements Convertor< +public final class ActionResponseConvertor extends Convertor< List, List, ActionResponseConvertorData> { @@ -96,7 +96,7 @@ public final class ActionResponseConvertor implements Convertor< // Iterate over Openflow actions, run them through tokenizer and then add them to list of converted actions if (source != null) { for (final Action action : source) { - final Optional convertedAction = PROCESSOR.process(action.getActionChoice(), data); + final Optional convertedAction = PROCESSOR.process(action.getActionChoice(), data, getConvertorExecutor()); if (convertedAction.isPresent()) { result.add(convertedAction.get()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalCopyTtlInCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalCopyTtlInCase.java index 9838ffc734..28e95b9310 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalCopyTtlInCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalCopyTtlInCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -24,7 +25,7 @@ public class OfToSalCopyTtlInCase extends ConvertorCase process(@Nonnull final CopyTtlInCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final CopyTtlInCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { CopyTtlInBuilder copyTtlInaction = new CopyTtlInBuilder(); return Optional.of(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtlInaction.build()).build()); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalCopyTtlOutCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalCopyTtlOutCase.java index 369c325e3c..53a7511232 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalCopyTtlOutCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalCopyTtlOutCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -24,7 +25,7 @@ public class OfToSalCopyTtlOutCase extends ConvertorCase process(@Nonnull final CopyTtlOutCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final CopyTtlOutCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { CopyTtlOutBuilder copyTtlOutaction = new CopyTtlOutBuilder(); return Optional.of(new CopyTtlOutCaseBuilder().setCopyTtlOut(copyTtlOutaction.build()).build()); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalDecMplsTtlCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalDecMplsTtlCase.java index 11eca3074d..f3ff8f3ee5 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalDecMplsTtlCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalDecMplsTtlCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -24,7 +25,7 @@ public class OfToSalDecMplsTtlCase extends ConvertorCase process(@Nonnull final DecMplsTtlCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final DecMplsTtlCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { DecMplsTtlBuilder decMplsTtl = new DecMplsTtlBuilder(); return Optional.of(new DecMplsTtlCaseBuilder().setDecMplsTtl(decMplsTtl.build()).build()); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalDecNwTtlCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalDecNwTtlCase.java index 4305aacba1..7a74be0602 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalDecNwTtlCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalDecNwTtlCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -24,7 +25,7 @@ public class OfToSalDecNwTtlCase extends ConvertorCase process(@Nonnull final DecNwTtlCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final DecNwTtlCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { DecNwTtlBuilder decNwTtl = new DecNwTtlBuilder(); return Optional.of(new DecNwTtlCaseBuilder().setDecNwTtl(decNwTtl.build()).build()); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalGroupCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalGroupCase.java index c51cff0cb9..ae5067ef49 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalGroupCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalGroupCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -25,7 +26,7 @@ public class OfToSalGroupCase extends ConvertorCase process(@Nonnull final GroupCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final GroupCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { GroupAction groupActionFromOF = source.getGroupAction(); GroupActionBuilder groupAction = new GroupActionBuilder(); groupAction.setGroupId(groupActionFromOF.getGroupId()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalOutputActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalOutputActionCase.java index 1b831ed407..f24ff5fb01 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalOutputActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalOutputActionCase.java @@ -12,6 +12,7 @@ import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; @@ -33,7 +34,7 @@ public class OfToSalOutputActionCase extends ConvertorCase process(@Nonnull final OutputActionCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final OutputActionCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { final OpenflowVersion ofVersion = OpenflowVersion.get(data.getVersion()); OutputActionBuilder outputAction = new OutputActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopMplsCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopMplsCase.java index 519d06be0c..613dcc7897 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopMplsCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopMplsCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -25,7 +26,7 @@ public class OfToSalPopMplsCase extends ConvertorCase process(@Nonnull final PopMplsCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final PopMplsCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { PopMplsAction popMplsActionFromOF = source.getPopMplsAction(); PopMplsActionBuilder popMplsAction = new PopMplsActionBuilder(); popMplsAction.setEthernetType(popMplsActionFromOF.getEthertype().getValue()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopPbbCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopPbbCase.java index debc22116f..0867b7724d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopPbbCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopPbbCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -24,7 +25,7 @@ public class OfToSalPopPbbCase extends ConvertorCase process(@Nonnull final PopPbbCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final PopPbbCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { PopPbbActionBuilder popPbb = new PopPbbActionBuilder(); return Optional.of(new PopPbbActionCaseBuilder().setPopPbbAction(popPbb.build()).build()); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopVlanCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopVlanCase.java index b450bfba32..b7b5f64d48 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopVlanCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPopVlanCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -24,7 +25,7 @@ public class OfToSalPopVlanCase extends ConvertorCase process(@Nonnull final PopVlanCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final PopVlanCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { PopVlanActionBuilder popVlan = new PopVlanActionBuilder(); return Optional.of(new PopVlanActionCaseBuilder().setPopVlanAction(popVlan.build()).build()); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushMplsCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushMplsCase.java index 4f9c7db1cd..37217fba3c 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushMplsCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushMplsCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -25,7 +26,7 @@ public class OfToSalPushMplsCase extends ConvertorCase process(@Nonnull final PushMplsCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final PushMplsCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { PushMplsAction pushMplsActionFromOF = source.getPushMplsAction(); PushMplsActionBuilder pushMplsAction = new PushMplsActionBuilder(); pushMplsAction.setEthernetType(pushMplsActionFromOF.getEthertype().getValue()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushPbbCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushPbbCase.java index f2cd9b987d..2b09fdb6fe 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushPbbCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushPbbCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -25,7 +26,7 @@ public class OfToSalPushPbbCase extends ConvertorCase process(@Nonnull final PushPbbCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final PushPbbCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { PushPbbAction pushPbbActionFromOf = source.getPushPbbAction(); PushPbbActionBuilder pushPbbAction = new PushPbbActionBuilder(); pushPbbAction.setEthernetType(pushPbbActionFromOf.getEthertype().getValue()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushVlanCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushVlanCase.java index 61c8deb7f8..c4864e184c 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushVlanCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalPushVlanCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -25,7 +26,7 @@ public class OfToSalPushVlanCase extends ConvertorCase process(@Nonnull final PushVlanCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final PushVlanCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { PushVlanAction pushVlanActionFromOF = source.getPushVlanAction(); PushVlanActionBuilder pushVlanAction = new PushVlanActionBuilder(); pushVlanAction.setEthernetType(pushVlanActionFromOF.getEthertype().getValue()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetFieldCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetFieldCase.java index 3b97a5ca5a..3672d3f030 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetFieldCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetFieldCase.java @@ -11,7 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; @@ -28,11 +28,11 @@ public class OfToSalSetFieldCase extends ConvertorCase process(@Nonnull final SetFieldCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final SetFieldCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(data.getVersion()); final SetFieldAction setFieldAction = source.getSetFieldAction(); final SetFieldBuilder setField = new SetFieldBuilder(); - final Optional matchOptional = ConvertorManager.getInstance().convert(setFieldAction, datapathIdConvertorData); + final Optional matchOptional = convertorExecutor.convert(setFieldAction, datapathIdConvertorData); setField.fieldsFrom(matchOptional.orElse(new MatchBuilder()).build()); return Optional.of(new SetFieldCaseBuilder().setSetField(setField.build()).build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetMplsTtlCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetMplsTtlCase.java index 8dfc94d437..ac79d81706 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetMplsTtlCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetMplsTtlCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -25,7 +26,7 @@ public class OfToSalSetMplsTtlCase extends ConvertorCase process(@Nonnull final SetMplsTtlCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final SetMplsTtlCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { SetMplsTtlAction setMplsTtlActionFromOF = source.getSetMplsTtlAction(); SetMplsTtlActionBuilder mplsTtlAction = new SetMplsTtlActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetNwDstCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetNwDstCase.java index b87f578dbc..2f7d1710ba 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetNwDstCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetNwDstCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -24,7 +25,7 @@ public class OfToSalSetNwDstCase extends ConvertorCase process(@Nonnull final SetNwDstCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final SetNwDstCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { SetNwDstActionBuilder setNwDstActionBuilder = new SetNwDstActionBuilder(); return Optional.of(new SetNwDstActionCaseBuilder().setSetNwDstAction(setNwDstActionBuilder.build()).build()); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetNwTtlCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetNwTtlCase.java index 5e207453d3..07cb4b962c 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetNwTtlCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetNwTtlCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -25,7 +26,7 @@ public class OfToSalSetNwTtlCase extends ConvertorCase process(@Nonnull final SetNwTtlCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final SetNwTtlCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { SetNwTtlAction setNwTtlActionFromOf = source.getSetNwTtlAction(); SetNwTtlActionBuilder setNwTtl = new SetNwTtlActionBuilder(); setNwTtl.setNwTtl(setNwTtlActionFromOf.getNwTtl()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetQueueCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetQueueCase.java index bdaf478447..49c9a3e664 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetQueueCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalSetQueueCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -25,7 +26,7 @@ public class OfToSalSetQueueCase extends ConvertorCase process(@Nonnull final SetQueueCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final SetQueueCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { SetQueueAction queueActionFromOF = source.getSetQueueAction(); SetQueueActionBuilder setQueueAction = new SetQueueActionBuilder(); setQueueAction.setQueueId(queueActionFromOF.getQueueId()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalStripVlanCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalStripVlanCase.java index bcc0e7c725..c000a98053 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalStripVlanCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/OfToSalStripVlanCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; @@ -24,7 +25,7 @@ public class OfToSalStripVlanCase extends ConvertorCase process(@Nonnull final StripVlanCase source, final ActionResponseConvertorData data) { + public Optional process(@Nonnull final StripVlanCase source, final ActionResponseConvertorData data, ConvertorExecutor convertorExecutor) { PopVlanActionBuilder popVlan = new PopVlanActionBuilder(); return Optional.of(new PopVlanActionCaseBuilder().setPopVlanAction(popVlan.build()).build()); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfCopyTtlInCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfCopyTtlInCase.java index 12d5359f91..6b51ad7837 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfCopyTtlInCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfCopyTtlInCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCase; @@ -25,7 +26,7 @@ public class SalToOfCopyTtlInCase extends ConvertorCase process(@Nonnull final CopyTtlInCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final CopyTtlInCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { return Optional.of(new ActionBuilder() .setActionChoice(new CopyTtlInCaseBuilder().build()) .build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfCopyTtlOutCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfCopyTtlOutCase.java index cb5b41cfd1..76b393738d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfCopyTtlOutCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfCopyTtlOutCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCase; @@ -25,7 +26,7 @@ public class SalToOfCopyTtlOutCase extends ConvertorCase process(@Nonnull final CopyTtlOutCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final CopyTtlOutCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { return Optional.of(new ActionBuilder() .setActionChoice(new CopyTtlOutCaseBuilder().build()) .build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDecMplsTtlCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDecMplsTtlCase.java index a5bd2d0531..8b48009aee 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDecMplsTtlCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDecMplsTtlCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCase; @@ -25,7 +26,7 @@ public class SalToOfDecMplsTtlCase extends ConvertorCase process(@Nonnull final DecMplsTtlCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final DecMplsTtlCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { return Optional.of(new ActionBuilder() .setActionChoice(new DecMplsTtlCaseBuilder().build()) .build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDecNwTtlCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDecNwTtlCase.java index 4c8790d30a..5b2e722c46 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDecNwTtlCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDecNwTtlCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCase; @@ -25,7 +26,7 @@ public class SalToOfDecNwTtlCase extends ConvertorCase process(@Nonnull final DecNwTtlCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final DecNwTtlCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { return Optional.of(new ActionBuilder() .setActionChoice(new DecNwTtlCaseBuilder().build()) .build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDropActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDropActionCase.java index a7787c9a3c..104ea4e471 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDropActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfDropActionCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DropActionCase; @@ -23,7 +24,7 @@ public class SalToOfDropActionCase extends ConvertorCase process(@Nonnull final DropActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final DropActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { return Optional.empty(); } } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfGeneralExtensionGroupingCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfGeneralExtensionGroupingCase.java index 04ae198cb5..a364434534 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfGeneralExtensionGroupingCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfGeneralExtensionGroupingCase.java @@ -13,6 +13,7 @@ import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.extension.api.ConverterExtensionKey; import org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; @@ -32,7 +33,7 @@ public class SalToOfGeneralExtensionGroupingCase extends ConvertorCase process(@Nonnull final GeneralExtensionGrouping source, final ActionConvertorData data) { + public Optional process(@Nonnull final GeneralExtensionGrouping source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { final short version = data.getVersion(); /** * TODO: EXTENSION PROPOSAL (action, MD-SAL to OFJava) diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfGroupActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfGroupActionCase.java index cf2a483dbb..6aed0ccf59 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfGroupActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfGroupActionCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCase; @@ -27,7 +28,7 @@ public class SalToOfGroupActionCase extends ConvertorCase process(@Nonnull final GroupActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final GroupActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { GroupAction groupAction = source.getGroupAction(); GroupActionBuilder groupActionBuilder = new GroupActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfOutputActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfOutputActionCase.java index 644a228bcf..469e82209e 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfOutputActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfOutputActionCase.java @@ -12,6 +12,7 @@ import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil; @@ -35,7 +36,7 @@ public class SalToOfOutputActionCase extends ConvertorCase process(@Nonnull final OutputActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final OutputActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { final OutputAction outputAction = source.getOutputAction(); final OutputActionBuilder outputBuilder = new OutputActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopMplsActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopMplsActionCase.java index 82ba5baf93..9c11a412ea 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopMplsActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopMplsActionCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCase; @@ -27,7 +28,7 @@ public class SalToOfPopMplsActionCase extends ConvertorCase process(@Nonnull final PopMplsActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final PopMplsActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { PopMplsCaseBuilder popMplsCaseBuilder = new PopMplsCaseBuilder(); PopMplsActionBuilder popMplsBuilder = new PopMplsActionBuilder(); popMplsBuilder.setEthertype(new EtherType(new EtherType(source.getPopMplsAction().getEthernetType()))); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopPbbActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopPbbActionCase.java index 8b6a523fe3..8c3fc74989 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopPbbActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopPbbActionCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCase; @@ -25,7 +26,7 @@ public class SalToOfPopPbbActionCase extends ConvertorCase process(@Nonnull final PopPbbActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final PopPbbActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { return Optional.of(new ActionBuilder() .setActionChoice(new PopPbbCaseBuilder().build()) .build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopVlanActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopVlanActionCase.java index 2025a99493..ba6c4ba24c 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopVlanActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopVlanActionCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCase; @@ -25,7 +26,7 @@ public class SalToOfPopVlanActionCase extends ConvertorCase process(@Nonnull final PopVlanActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final PopVlanActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { return Optional.of(new ActionBuilder() .setActionChoice(new PopVlanCaseBuilder().build()) .build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopVlanActionV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopVlanActionV10Case.java index 6319d5ae98..6b0fe7a240 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopVlanActionV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPopVlanActionV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCase; @@ -25,7 +26,7 @@ public class SalToOfPopVlanActionV10Case extends ConvertorCase process(@Nonnull final PopVlanActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final PopVlanActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { return Optional.of(new ActionBuilder() .setActionChoice(new StripVlanCaseBuilder().build()) .build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushMplsActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushMplsActionCase.java index c6e2a52951..d336ed0f6e 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushMplsActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushMplsActionCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCase; @@ -27,7 +28,7 @@ public class SalToOfPushMplsActionCase extends ConvertorCase process(@Nonnull final PushMplsActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final PushMplsActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { PushMplsCaseBuilder pushMplsCaseBuilder = new PushMplsCaseBuilder(); PushMplsActionBuilder pushMplsBuilder = new PushMplsActionBuilder(); pushMplsBuilder.setEthertype(new EtherType(source.getPushMplsAction().getEthernetType())); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushPbbActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushPbbActionCase.java index b9886c5a30..a9044da966 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushPbbActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushPbbActionCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCase; @@ -27,7 +28,7 @@ public class SalToOfPushPbbActionCase extends ConvertorCase process(@Nonnull final PushPbbActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final PushPbbActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { PushPbbCaseBuilder pushPbbCaseBuilder = new PushPbbCaseBuilder(); PushPbbActionBuilder pushPbbBuilder = new PushPbbActionBuilder(); pushPbbBuilder.setEthertype(new EtherType(source.getPushPbbAction().getEthernetType())); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushVlanActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushVlanActionCase.java index a40e94d436..c56416589b 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushVlanActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfPushVlanActionCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCase; @@ -28,7 +29,7 @@ public class SalToOfPushVlanActionCase extends ConvertorCase process(@Nonnull final PushVlanActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final PushVlanActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { PushVlanAction pushVlanAction = source.getPushVlanAction(); PushVlanCaseBuilder pushVlanCaseBuilder = new PushVlanCaseBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlDstActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlDstActionCase.java index 36ddbf0389..ada4508dbe 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlDstActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlDstActionCase.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCase; @@ -35,7 +36,7 @@ public class SalToOfSetDlDstActionCase extends ConvertorCase process(@Nonnull final SetDlDstActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetDlDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetDlDstAction setdldstaction = source.getSetDlDstAction(); SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder(); SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlDstActionV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlDstActionV10Case.java index 4b75af9722..31e70c66b4 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlDstActionV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlDstActionV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCase; @@ -27,7 +28,7 @@ public class SalToOfSetDlDstActionV10Case extends ConvertorCase process(@Nonnull final SetDlDstActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetDlDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetDlDstAction setdldstaction = source.getSetDlDstAction(); SetDlDstCaseBuilder setDlDstCaseBuilder = new SetDlDstCaseBuilder(); SetDlDstActionBuilder setDlDstActionBuilder = new SetDlDstActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlSrcActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlSrcActionCase.java index 527e0893b2..736c4b03a5 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlSrcActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlSrcActionCase.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCase; @@ -35,7 +36,7 @@ public class SalToOfSetDlSrcActionCase extends ConvertorCase process(@Nonnull final SetDlSrcActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetDlSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetDlSrcAction setdlsrcaction = source.getSetDlSrcAction(); SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder(); SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlSrcActionV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlSrcActionV10Case.java index b18b42bbfe..f6da183b18 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlSrcActionV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetDlSrcActionV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCase; @@ -27,7 +28,7 @@ public class SalToOfSetDlSrcActionV10Case extends ConvertorCase process(@Nonnull final SetDlSrcActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetDlSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetDlSrcAction setdlsrcaction = source.getSetDlSrcAction(); SetDlSrcCaseBuilder setDlSrcCaseBuilder = new SetDlSrcCaseBuilder(); SetDlSrcActionBuilder setDlSrcActionBuilder = new SetDlSrcActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetFieldCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetFieldCase.java index 858d45895e..a54ecc23be 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetFieldCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetFieldCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchReactor; @@ -27,11 +28,11 @@ public class SalToOfSetFieldCase extends ConvertorCase process(@Nonnull final SetFieldCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetFieldCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { final short version = data.getVersion(); final SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder(); - MatchReactor.getInstance().convert(source.getSetField(), version, setFieldBuilder); + MatchReactor.getInstance().convert(source.getSetField(), version, setFieldBuilder, convertorExecutor); return Optional.of(new ActionBuilder() .setActionChoice(new SetFieldCaseBuilder() diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetFieldV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetFieldV10Case.java index 510405830c..863e30193d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetFieldV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetFieldV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCase; @@ -26,7 +27,7 @@ public class SalToOfSetFieldV10Case extends ConvertorCase process(@Nonnull final SetFieldCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetFieldCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetVlanVidCaseBuilder setVlanVidCaseBuilder = new SetVlanVidCaseBuilder(); if (source.getSetField().getVlanMatch() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetMplsTtlActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetMplsTtlActionCase.java index 516388924e..957bf38459 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetMplsTtlActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetMplsTtlActionCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCase; @@ -26,7 +27,7 @@ public class SalToOfSetMplsTtlActionCase extends ConvertorCase process(@Nonnull final SetMplsTtlActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetMplsTtlActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetMplsTtlActionBuilder setMplsTtlBuilder = new SetMplsTtlActionBuilder() .setMplsTtl(source.getSetMplsTtlAction().getMplsTtl()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwDstActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwDstActionCase.java index 2dcba51103..d9d58185fc 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwDstActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwDstActionCase.java @@ -14,6 +14,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; @@ -46,7 +47,7 @@ public class SalToOfSetNwDstActionCase extends ConvertorCase process(@Nonnull final SetNwDstActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetNwDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { final ActionBuilder builder = new ActionBuilder(); final Address address = source.getSetNwDstAction().getAddress(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwDstActionV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwDstActionV10Case.java index a33f8b6f8b..d55fd78a2d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwDstActionV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwDstActionV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; @@ -29,7 +30,7 @@ public class SalToOfSetNwDstActionV10Case extends ConvertorCase process(@Nonnull final SetNwDstActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetNwDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { final ActionBuilder builder = new ActionBuilder(); final Address address = source.getSetNwDstAction().getAddress(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwSrcActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwSrcActionCase.java index d326e592b5..2fb9f94923 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwSrcActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwSrcActionCase.java @@ -14,6 +14,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; @@ -46,7 +47,7 @@ public class SalToOfSetNwSrcActionCase extends ConvertorCase process(@Nonnull final SetNwSrcActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetNwSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { final ActionBuilder builder = new ActionBuilder(); final Address address = source.getSetNwSrcAction().getAddress(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwSrcActionV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwSrcActionV10Case.java index a4523dfad4..006a5cd01d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwSrcActionV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwSrcActionV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; @@ -29,7 +30,7 @@ public class SalToOfSetNwSrcActionV10Case extends ConvertorCase process(@Nonnull final SetNwSrcActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetNwSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { final ActionBuilder builder = new ActionBuilder(); final Address address = source.getSetNwSrcAction().getAddress(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTosActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTosActionCase.java index 02f2e0a33b..3ffdd00838 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTosActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTosActionCase.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchConvertorUtil; @@ -33,7 +34,7 @@ public class SalToOfSetNwTosActionCase extends ConvertorCase process(@Nonnull final SetNwTosActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetNwTosActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetNwTosAction setnwtosaction = source.getSetNwTosAction(); SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder(); SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTosActionV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTosActionV10Case.java index 21b7a3e9a8..80e67fcd4e 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTosActionV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTosActionV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTosActionCase; @@ -27,7 +28,7 @@ public class SalToOfSetNwTosActionV10Case extends ConvertorCase process(@Nonnull final SetNwTosActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetNwTosActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetNwTosAction setnwtosaction = source.getSetNwTosAction(); SetNwTosActionBuilder setNwTosActionBuilder = new SetNwTosActionBuilder(); SetNwTosCaseBuilder setNwTosCaseBuilder = new SetNwTosCaseBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTtlActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTtlActionCase.java index 3a51f5e367..1d5d5610a1 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTtlActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetNwTtlActionCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCase; @@ -26,7 +27,7 @@ public class SalToOfSetNwTtlActionCase extends ConvertorCase process(@Nonnull final SetNwTtlActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetNwTtlActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetNwTtlCaseBuilder nwTtlCaseBuilder = new SetNwTtlCaseBuilder(); SetNwTtlActionBuilder nwTtlBuilder = new SetNwTtlActionBuilder(); nwTtlBuilder.setNwTtl(source.getSetNwTtlAction().getNwTtl()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetQueueActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetQueueActionCase.java index a9db724f91..b433bc8441 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetQueueActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetQueueActionCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCase; @@ -27,7 +28,7 @@ public class SalToOfSetQueueActionCase extends ConvertorCase process(@Nonnull final SetQueueActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetQueueActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetQueueAction setQueueAction = source.getSetQueueAction(); SetQueueCaseBuilder setQueueCaseBuilder = new SetQueueCaseBuilder(); SetQueueActionBuilder setQueueBuilder = new SetQueueActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpDstActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpDstActionCase.java index 1995ebe75c..81027bfb20 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpDstActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpDstActionCase.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IPProtocols; @@ -49,7 +50,7 @@ public class SalToOfSetTpDstActionCase extends ConvertorCase process(@Nonnull final SetTpDstActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetTpDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { IPProtocols protocol = null; if (data.getIpProtocol() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpDstActionV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpDstActionV10Case.java index e762a0433c..d870f1ea1b 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpDstActionV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpDstActionV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpDstActionCase; @@ -28,7 +29,7 @@ public class SalToOfSetTpDstActionV10Case extends ConvertorCase process(@Nonnull final SetTpDstActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetTpDstActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetTpDstAction settpdstaction = source.getSetTpDstAction(); SetTpDstCaseBuilder setTpDstCaseBuilder = new SetTpDstCaseBuilder(); SetTpDstActionBuilder setTpDstActionBuilder = new SetTpDstActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpSrcActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpSrcActionCase.java index 641df7d3db..3844dd0cf0 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpSrcActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpSrcActionCase.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IPProtocols; @@ -49,7 +50,7 @@ public class SalToOfSetTpSrcActionCase extends ConvertorCase process(@Nonnull final SetTpSrcActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetTpSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { IPProtocols protocol = null; if (data.getIpProtocol() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpSrcActionV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpSrcActionV10Case.java index 2b455c8449..c60cfccc37 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpSrcActionV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetTpSrcActionV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpSrcActionCase; @@ -32,7 +33,7 @@ public class SalToOfSetTpSrcActionV10Case extends ConvertorCase process(@Nonnull final SetTpSrcActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetTpSrcActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetTpSrcAction settpsrcaction = source.getSetTpSrcAction(); SetTpSrcCaseBuilder setTpSrcCaseBuilder = new SetTpSrcCaseBuilder(); SetTpSrcActionBuilder setTpSrcActionBuilder = new SetTpSrcActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanIdActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanIdActionCase.java index 3722293f56..9bd386ca89 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanIdActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanIdActionCase.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCase; @@ -35,7 +36,7 @@ public class SalToOfSetVlanIdActionCase extends ConvertorCase process(@Nonnull final SetVlanIdActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetVlanIdActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetVlanIdAction setvlanidaction = source.getSetVlanIdAction(); SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder(); SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanIdActionV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanIdActionV10Case.java index 0f2543b4af..2ace31627e 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanIdActionV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanIdActionV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCase; @@ -27,7 +28,7 @@ public class SalToOfSetVlanIdActionV10Case extends ConvertorCase process(@Nonnull final SetVlanIdActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetVlanIdActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetVlanIdAction setvlanidaction = source.getSetVlanIdAction(); SetVlanVidActionBuilder vlanidActionBuilder = new SetVlanVidActionBuilder(); SetVlanVidCaseBuilder setVlanVidCaseBuilder = new SetVlanVidCaseBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanPcpActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanPcpActionCase.java index 798f6ebbc7..7ef7221f80 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanPcpActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanPcpActionCase.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchConvertorUtil; @@ -31,7 +32,7 @@ public class SalToOfSetVlanPcpActionCase extends ConvertorCase process(@Nonnull final SetVlanPcpActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetVlanPcpActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetVlanPcpAction setvlanpcpaction = source.getSetVlanPcpAction(); SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder(); SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanPcpActionV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanPcpActionV10Case.java index 6c2babb89d..f6f436cb88 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanPcpActionV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfSetVlanPcpActionV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanPcpActionCase; @@ -27,7 +28,7 @@ public class SalToOfSetVlanPcpActionV10Case extends ConvertorCase process(@Nonnull final SetVlanPcpActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final SetVlanPcpActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetVlanPcpAction setvlanpcpaction = source.getSetVlanPcpAction(); SetVlanPcpActionBuilder setVlanPcpActionBuilder = new SetVlanPcpActionBuilder(); SetVlanPcpCaseBuilder setVlanPcpCaseBuilder = new SetVlanPcpCaseBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfStripVlanActionCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfStripVlanActionCase.java index 30ccb2e35c..8b595adc5b 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfStripVlanActionCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfStripVlanActionCase.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.StripVlanActionCase; @@ -34,7 +35,7 @@ public class SalToOfStripVlanActionCase extends ConvertorCase process(@Nonnull final StripVlanActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final StripVlanActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder(); SetFieldActionBuilder setFieldBuilder = new SetFieldActionBuilder(); List entries = new ArrayList<>(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfStripVlanActionV10Case.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfStripVlanActionV10Case.java index 026efbfe68..aff535a02e 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfStripVlanActionV10Case.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfStripVlanActionV10Case.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ca import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.StripVlanActionCase; @@ -25,7 +26,7 @@ public class SalToOfStripVlanActionV10Case extends ConvertorCase process(@Nonnull final StripVlanActionCase source, final ActionConvertorData data) { + public Optional process(@Nonnull final StripVlanActionCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { return Optional.of(new ActionBuilder() .setActionChoice(new StripVlanCaseBuilder().build()) .build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfVendorCodecCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfVendorCodecCase.java index 81d68e3ceb..25e450e992 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfVendorCodecCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/cases/SalToOfVendorCodecCase.java @@ -14,6 +14,7 @@ import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.extension.api.ConvertorActionToOFJava; import org.opendaylight.openflowplugin.extension.api.TypeVersionKey; import org.opendaylight.openflowplugin.extension.api.core.extension.ExtensionConverterProvider; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; @@ -31,7 +32,7 @@ public class SalToOfVendorCodecCase extends ConvertorCase process(@Nonnull final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action source, final ActionConvertorData data) { + public Optional process(@Nonnull final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { final short version = data.getVersion(); final TypeVersionKey key = new TypeVersionKey<>( diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertReactor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertReactor.java index 0ff50e7c24..ede61108a3 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertReactor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertReactor.java @@ -11,18 +11,19 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common; import com.google.common.collect.ImmutableMap; import java.util.HashMap; import java.util.Map; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; /** * @param source type for conversion * */ public abstract class ConvertReactor { - private final Map> injectionMapping; - private final Map> conversionMapping; + private final Map> injectionMapping; + private final Map> conversionMapping; protected ConvertReactor() { - final Map> conversions = new HashMap<>(); - final Map> injections = new HashMap<>(); + final Map> conversions = new HashMap<>(); + final Map> injections = new HashMap<>(); initMappings(conversions, injections); // Create optimized view of mappings @@ -35,28 +36,29 @@ public abstract class ConvertReactor { * @param conversions convert from * @param injections injection */ - protected abstract void initMappings(Map> conversions, - Map> injections); + protected abstract void initMappings(Map> conversions, + Map> injections); /** + * @param result + * @param target * @param source convert from * @param version openflow version * @param target convert to - * @param result - * @param target + * @param convertorExecutor */ @SuppressWarnings("unchecked") - public void convert(final FROM source, final short version, final TARGET target) { + public void convert(final FROM source, final short version, final TARGET target, final ConvertorExecutor convertorExecutor) { //lookup converter - Convertor convertor = (Convertor) conversionMapping.get(version); + ConvertReactorConvertor convertor = (ConvertReactorConvertor) conversionMapping.get(version); if (convertor == null) { throw new IllegalArgumentException("convertor for given version ["+version+"] not found"); } - RESULT convertedItem = convertor.convert(source, null); + RESULT convertedItem = convertor.convert(source, convertorExecutor); //lookup injection - InjectionKey key = buildInjectionKey(version, convertedItem, target); + ConvertorKey key = buildInjectionKey(version, convertedItem, target); ResultInjector injection = (ResultInjector) injectionMapping.get(key); if (injection == null) { throw new IllegalArgumentException("injector for given version and target ["+key+"] not found"); @@ -70,8 +72,8 @@ public abstract class ConvertReactor { * @param target object * @return injection key */ - protected InjectionKey buildInjectionKey(final short version, final Object convertedItem, final Object target) { - return new InjectionKey(version, target.getClass()); + protected ConvertorKey buildInjectionKey(final short version, final Object convertedItem, final Object target) { + return new ConvertorKey(version, target.getClass()); } } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertReactorConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertReactorConvertor.java new file mode 100644 index 0000000000..938f9756be --- /dev/null +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertReactorConvertor.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common; + +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; + +/** + * Converts OpenflowJava to MDSal model and vice versa + * + * @param type of source + * @param type of result + */ +public interface ConvertReactorConvertor { + /** + * Converts source to result + * + * @param source source + * @param convertorExecutor + * @return converted source + */ + TO convert(FROM source, ConvertorExecutor convertorExecutor); +} diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/Convertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/Convertor.java index cb52a506d3..91f91d2aac 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/Convertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/Convertor.java @@ -9,7 +9,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common; import java.util.Collection; -import javax.annotation.Nullable; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yangtools.yang.binding.DataContainer; /** @@ -17,8 +17,28 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; * * @param type of source * @param type of result + * @param the type parameter */ -public interface Convertor { +public abstract class Convertor { + private ConvertorExecutor convertorExecutor; + + /** + * Gets convertor manager. + * + * @return the convertor manager + */ + protected ConvertorExecutor getConvertorExecutor() { + return convertorExecutor; + } + + /** + * Sets convertor manager. + * + * @param convertorExecutor the convertor manager + */ + public void setConvertorExecutor(ConvertorExecutor convertorExecutor) { + this.convertorExecutor = convertorExecutor; + } /** * Gets type of convertor, used in @@ -26,7 +46,7 @@ public interface Convertor { * * @return the type of convertor */ - Collection> getTypes(); + public abstract Collection> getTypes(); /** * Converts source to result @@ -35,5 +55,5 @@ public interface Convertor { * @param data convertor data * @return converted source */ - TO convert(FROM source, @Nullable DATA data); + public abstract TO convert(FROM source, DATA data); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertorCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertorCase.java index aa9ea1f96e..c1639d0bb5 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertorCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertorCase.java @@ -13,6 +13,7 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; /** * The Convertor case used in {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorProcessor}. @@ -42,11 +43,13 @@ public abstract class ConvertorCase { /** * Process source and return result, what can be empty * + * * @param source the source * @param data the data + * @param convertorExecutor convertor executor * @return the optional */ - public abstract Optional process(@Nonnull final FROM source, final DATA data); + public abstract Optional process(@Nonnull final FROM source, final DATA data, final ConvertorExecutor convertorExecutor); /** * Should {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorProcessor} @@ -61,12 +64,14 @@ public abstract class ConvertorCase { /** * Cast untyped source to type of this case and sends it to actual process method. * + * * @param source the source * @param data the data + * @param convertorExecutor convertor executor * @return the optional */ - Optional processRaw(@Nonnull final Object source, final DATA data) { - return process(getType().cast(source), data); + Optional processRaw(@Nonnull final Object source, final DATA data, final ConvertorExecutor convertorExecutor) { + return process(getType().cast(source), data, convertorExecutor); } /** diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/InjectionKey.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertorKey.java similarity index 85% rename from openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/InjectionKey.java rename to openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertorKey.java index 8c7ab330de..c25b5a677d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/InjectionKey.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertorKey.java @@ -16,7 +16,7 @@ import com.google.common.base.Preconditions; /** * injection lookup key based on version and target object */ -public class InjectionKey { +public class ConvertorKey { private final int version; private final Class targetClazz; @@ -25,7 +25,7 @@ public class InjectionKey { * @param version openflow version * @param targetClazz target class */ - public InjectionKey(final int version, final Class targetClazz) { + public ConvertorKey(final int version, final Class targetClazz) { this.version = version; this.targetClazz = Preconditions.checkNotNull(targetClazz); } @@ -46,11 +46,8 @@ public class InjectionKey { if (getClass() != obj.getClass()) { return false; } - final InjectionKey other = (InjectionKey) obj; - if (version != other.version) { - return false; - } - return targetClazz.equals(other.targetClazz); + final ConvertorKey other = (ConvertorKey) obj; + return version == other.version && targetClazz.equals(other.targetClazz); } @Override diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertorProcessor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertorProcessor.java index acb8347beb..c06629a225 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertorProcessor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertorProcessor.java @@ -12,6 +12,7 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yangtools.yang.binding.DataContainer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,7 +28,7 @@ public class ConvertorProcessor> conversions = new ConcurrentHashMap<>(); + private final Map, ConvertorCase>> conversions = new ConcurrentHashMap<>(); private ConvertorCase defaultCase; /** @@ -38,12 +39,10 @@ public class ConvertorProcessor addCase(final ConvertorCase processorCase) { if (processorCase.getSupportedVersions().isEmpty()) { - final InjectionKey key = new InjectionKey(OFP_VERSION_ALL, processorCase.getType()); - conversions.putIfAbsent(key, processorCase); + getCasesForVersion(OFP_VERSION_ALL).putIfAbsent(processorCase.getType(), processorCase); } else { for (short supportedVersion : processorCase.getSupportedVersions()) { - final InjectionKey key = new InjectionKey(supportedVersion, processorCase.getType()); - conversions.putIfAbsent(key, processorCase); + getCasesForVersion(supportedVersion).putIfAbsent(processorCase.getType(), processorCase); } } @@ -54,10 +53,11 @@ public class ConvertorProcessor process(final FROM source) { - return process(source, null); + public Optional process(final FROM source, final ConvertorExecutor convertorExecutor) { + return process(source, null, convertorExecutor); } /** @@ -65,9 +65,10 @@ public class ConvertorProcessor process(final FROM source, final DATA data) { + public Optional process(final FROM source, final DATA data, final ConvertorExecutor convertorExecutor) { Optional result = Optional.empty(); final short version = data != null ? data.getVersion() : OFP_VERSION_ALL; @@ -77,12 +78,13 @@ public class ConvertorProcessor clazz = source.getImplementedInterface(); - final InjectionKey key = new InjectionKey(version, clazz); - final Optional> caseOptional = Optional.ofNullable(conversions.get(key)); + final Optional> caseOptional = Optional + .ofNullable(getCasesForVersion(version).get(clazz)); + final ConvertorCase processorCase = caseOptional.orElse(defaultCase); if (Objects.nonNull(processorCase)) { - result = processorCase.processRaw(source, data); + result = processorCase.processRaw(source, data, convertorExecutor); if (processorCase.isErrorOnEmpty() && !result.isPresent()) { LOG.warn("Failed to process {} for version {}", clazz, version); @@ -104,4 +106,13 @@ public class ConvertorProcessor, ConvertorCase> getCasesForVersion(final short version) { + final Map, ConvertorCase> casesForVersion = + conversions.getOrDefault(version, new ConcurrentHashMap<>()); + + conversions.putIfAbsent(version, casesForVersion); + + return casesForVersion; + } } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/data/VersionDatapathIdConvertorData.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/data/VersionDatapathIdConvertorData.java index f3059e6039..d445451134 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/data/VersionDatapathIdConvertorData.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/data/VersionDatapathIdConvertorData.java @@ -9,12 +9,11 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data; import java.math.BigInteger; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorData; /** * Convertor data implementation containing Openflow version and datapath ID */ -public class VersionDatapathIdConvertorData extends ConvertorData { +public class VersionDatapathIdConvertorData extends VersionConvertorData { private BigInteger datapathId; /** diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowConvertor.java index 079827dfc8..47a8a3f011 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowConvertor.java @@ -19,7 +19,6 @@ import java.util.Collections; import java.util.List; import java.util.Optional; import org.opendaylight.openflowplugin.api.OFConstants; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorProcessor; @@ -77,11 +76,11 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; * {@code * VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(version); * data.setDatapathId(datapathId); - * Optional> ofFlow = ConvertorManager.getInstance().convert(salFlow, data); + * Optional> ofFlow = convertorManager.convert(salFlow, data); * } * */ -public class FlowConvertor implements Convertor, VersionDatapathIdConvertorData> { +public class FlowConvertor extends Convertor, VersionDatapathIdConvertorData> { /** * Default idle timeout */ @@ -145,6 +144,7 @@ public class FlowConvertor implements Convertor, .addCase(new MeterCase()) .addCase(new WriteActionsCase()) .addCase(new WriteMetadataCase()); + private static final List> TYPES = Arrays.asList(Flow.class, AddFlowInput.class, RemoveFlowInput.class, UpdatedFlow.class); static { final VlanId zeroVlan = new VlanId(0); @@ -165,7 +165,7 @@ public class FlowConvertor implements Convertor, VLAN_MATCH_TRUE = vlanMatchBuilder2.build(); } - private static FlowModInputBuilder toFlowModInput(Flow flow, short version, BigInteger datapathid) { + private FlowModInputBuilder toFlowModInput(Flow flow, short version, BigInteger datapathid) { FlowModInputBuilder flowMod = new FlowModInputBuilder(); salToOFFlowCookie(flow, flowMod); @@ -180,10 +180,10 @@ public class FlowConvertor implements Convertor, salToOFFlowOutGroup(flow, flowMod); // convert and inject flowFlags - FlowFlagReactor.getInstance().convert(flow.getFlags(), version, flowMod); + FlowFlagReactor.getInstance().convert(flow.getFlags(), version, flowMod, getConvertorExecutor()); // convert and inject match - MatchReactor.getInstance().convert(flow.getMatch(), version, flowMod); + MatchReactor.getInstance().convert(flow.getMatch(), version, flowMod, getConvertorExecutor()); if (flow.getInstructions() != null) { flowMod.setInstruction(toInstructions(flow, version, datapathid)); @@ -279,7 +279,7 @@ public class FlowConvertor implements Convertor, } } - private static List toInstructions(Flow flow, short version, BigInteger datapathid) { + private List toInstructions(Flow flow, short version, BigInteger datapathid) { final List instructionsList = new ArrayList<>(); final ActionConvertorData data = new ActionConvertorData(version); data.setDatapathId(datapathid); @@ -292,7 +292,7 @@ public class FlowConvertor implements Convertor, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction curInstruction = instruction .getInstruction(); - Optional result = PROCESSOR.process(curInstruction, data); + Optional result = PROCESSOR.process(curInstruction, data, getConvertorExecutor()); if (result.isPresent()) { instructionsList.add(result.get()); @@ -302,7 +302,7 @@ public class FlowConvertor implements Convertor, return instructionsList; } - private static List getActions(short version, BigInteger datapathid, Flow flow) { + private List getActions(short version, BigInteger datapathid, Flow flow) { Instructions instructions = flow.getInstructions(); List sortedInstructions = INSTRUCTION_ORDERING.sortedCopy(instructions.getInstruction()); @@ -318,7 +318,7 @@ public class FlowConvertor implements Convertor, final ActionConvertorData data = new ActionConvertorData(version); data.setDatapathId(datapathid); data.setIpProtocol(FlowConvertorUtil.getIpProtocolFromFlow(flow)); - Optional> result = ConvertorManager.getInstance().convert(applyActions.getAction(), data); + Optional> result = getConvertorExecutor().convert(applyActions.getAction(), data); return result.orElse(Collections.emptyList()); } } @@ -361,7 +361,7 @@ public class FlowConvertor implements Convertor, *     1) Match on (OFPVID_NONE ) without mask + action [push vlan tag + set_field] *     2) Match on (OFPVID_PRESENT) with mask (OFPVID_PRESENT ) + action [ set_field] */ - private static List handleSetVlanIdForOF13(Flow srcFlow, short version, BigInteger datapathId) { + private List handleSetVlanIdForOF13(Flow srcFlow, short version, BigInteger datapathId) { List list = new ArrayList<>(2); final Match srcMatch = Preconditions.checkNotNull(srcFlow.getMatch()); @@ -515,7 +515,7 @@ public class FlowConvertor implements Convertor, @Override public Collection> getTypes() { - return Arrays.asList(Flow.class, AddFlowInput.class, RemoveFlowInput.class, UpdatedFlow.class); + return TYPES; } @Override diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowInstructionResponseConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowInstructionResponseConvertor.java index a72713476f..edc10de00b 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowInstructionResponseConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowInstructionResponseConvertor.java @@ -17,7 +17,6 @@ import java.util.Optional; import java.util.Set; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.extension.api.path.ActionPath; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; @@ -52,11 +51,11 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; *
  * {@code
  * VersionConvertorData data = new VersionConvertorData(version);
- * Optional salFlowInstruction = ConvertorManager.getInstance().convert(ofFlowInstructions, data);
+ * Optional salFlowInstruction = convertorManager.convert(ofFlowInstructions, data);
  * }
  * 
*/ -public final class FlowInstructionResponseConvertor implements Convertor< +public final class FlowInstructionResponseConvertor extends Convertor< List, Instructions, VersionConvertorData> { @@ -86,7 +85,7 @@ public final class FlowInstructionResponseConvertor implements Convertor< final ActionResponseConvertorData actionResponseConvertorData = new ActionResponseConvertorData(data.getVersion()); actionResponseConvertorData.setActionPath(ActionPath.FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_APPLYACTIONSCASE_APPLYACTIONS_ACTION_ACTION); - final Optional> actions = ConvertorManager.getInstance().convert( + final Optional> actions = getConvertorExecutor().convert( actionsInstruction.getApplyActions().getAction(), actionResponseConvertorData); applyActionsBuilder.setAction(FlowConvertorUtil.wrapActionList(actions.orElse(Collections.emptyList()))); @@ -121,7 +120,7 @@ public final class FlowInstructionResponseConvertor implements Convertor< final ActionResponseConvertorData actionResponseConvertorData = new ActionResponseConvertorData(data.getVersion()); actionResponseConvertorData.setActionPath(ActionPath.FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_WRITEACTIONSCASE_WRITEACTIONS_ACTION_ACTION); - final Optional> actions = ConvertorManager.getInstance().convert( + final Optional> actions = getConvertorExecutor().convert( writeActionsCase.getWriteActions().getAction(), actionResponseConvertorData); writeActionsBuilder.setAction(FlowConvertorUtil.wrapActionList(actions.orElse(Collections.emptyList()))); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowStatsResponseConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowStatsResponseConvertor.java index 19f25de81e..84c8b69e2a 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowStatsResponseConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowStatsResponseConvertor.java @@ -8,7 +8,6 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow; -import com.google.common.annotations.VisibleForTesting; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -20,7 +19,6 @@ import org.opendaylight.openflowplugin.extension.api.AugmentTuple; import org.opendaylight.openflowplugin.extension.api.path.ActionPath; import org.opendaylight.openflowplugin.extension.api.path.MatchPath; import org.opendaylight.openflowplugin.openflow.md.core.extension.MatchExtensionHelper; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; @@ -52,11 +50,11 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; * {@code * VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(version); * data.setDatapathId(datapathId); - * Optional> salFlowStats = ConvertorManager.getInstance().convert(ofFlowStats, data); + * Optional> salFlowStats = convertorManager.convert(ofFlowStats, data); * } * */ -public class FlowStatsResponseConvertor implements Convertor, List, VersionDatapathIdConvertorData> { +public class FlowStatsResponseConvertor extends Convertor, List, VersionDatapathIdConvertorData> { private static final Set> TYPES = Collections.singleton(FlowStats.class); @@ -66,8 +64,7 @@ public class FlowStatsResponseConvertor implements Convertor, Li * @param actionsList list of action * @return OF10 actions as an instructions */ - @VisibleForTesting - static Instructions wrapOF10ActionsToInstruction(List actionsList, final short version) { + private Instructions wrapOF10ActionsToInstruction(List actionsList, final short version) { ActionResponseConvertorData actionResponseConvertorData = new ActionResponseConvertorData(version); actionResponseConvertorData.setActionPath(ActionPath.FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_WRITEACTIONSCASE_WRITEACTIONS_ACTION_ACTION); @@ -77,7 +74,7 @@ public class FlowStatsResponseConvertor implements Convertor, Li ApplyActionsCaseBuilder applyActionsCaseBuilder = new ApplyActionsCaseBuilder(); ApplyActionsBuilder applyActionsBuilder = new ApplyActionsBuilder(); - final Optional> actions = ConvertorManager.getInstance().convert( + final Optional> actions = getConvertorExecutor().convert( actionsList, actionResponseConvertorData); applyActionsBuilder.setAction(FlowConvertorUtil.wrapActionList(actions.orElse(Collections.emptyList()))); @@ -123,7 +120,7 @@ public class FlowStatsResponseConvertor implements Convertor, Li salFlowStatsBuilder.setTableId(flowStats.getTableId()); if (flowStats.getMatchV10() != null) { - final Optional matchBuilderOptional = ConvertorManager.getInstance().convert(flowStats.getMatchV10(), data); + final Optional matchBuilderOptional = getConvertorExecutor().convert(flowStats.getMatchV10(), data); if (matchBuilderOptional.isPresent()) { salFlowStatsBuilder.setMatch(matchBuilderOptional.get().build()); @@ -135,7 +132,7 @@ public class FlowStatsResponseConvertor implements Convertor, Li } if (flowStats.getMatch() != null) { - final Optional matchBuilderOptional = ConvertorManager.getInstance().convert(flowStats.getMatch(), data); + final Optional matchBuilderOptional = getConvertorExecutor().convert(flowStats.getMatch(), data); if (matchBuilderOptional.isPresent()) { final MatchBuilder matchBuilder = matchBuilderOptional.get(); @@ -164,7 +161,7 @@ public class FlowStatsResponseConvertor implements Convertor, Li if (flowStats.getInstruction() != null) { final VersionConvertorData simpleConvertorData = new VersionConvertorData(data.getVersion()); - final Optional instructions = ConvertorManager.getInstance().convert( + final Optional instructions = getConvertorExecutor().convert( flowStats.getInstruction(), simpleConvertorData); salFlowStatsBuilder.setInstructions(instructions.orElse(new InstructionsBuilder() diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/ApplyActionsCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/ApplyActionsCase.java index 2ed5d56d95..139cd8cc47 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/ApplyActionsCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/ApplyActionsCase.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActions; @@ -29,13 +29,12 @@ public class ApplyActionsCase extends ConvertorCase process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCase source, final ActionConvertorData data) { + public Optional process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { ApplyActions applyActions = source.getApplyActions(); ApplyActionsCaseBuilder applyActionsCaseBuilder = new ApplyActionsCaseBuilder(); ApplyActionsBuilder applyActionsBuilder = new ApplyActionsBuilder(); - final Optional> actionList = ConvertorManager.getInstance().convert( - applyActions.getAction(), data); + final Optional> actionList = convertorExecutor.convert(applyActions.getAction(), data); applyActionsBuilder.setAction(actionList.orElse(Collections.emptyList())); applyActionsCaseBuilder.setApplyActions(applyActionsBuilder.build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/ClearActionsCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/ClearActionsCase.java index 0aa8bd610a..c167ceffaa 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/ClearActionsCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/ClearActionsCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.case import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.ClearActionsCaseBuilder; @@ -23,7 +24,7 @@ public class ClearActionsCase extends ConvertorCase process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ClearActionsCase source, final ActionConvertorData data) { + public Optional process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ClearActionsCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { ClearActionsCaseBuilder clearActionsCaseBuilder = new ClearActionsCaseBuilder(); InstructionBuilder instructionBuilder = new InstructionBuilder(); instructionBuilder.setInstructionChoice(clearActionsCaseBuilder.build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/GoToTableCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/GoToTableCase.java index c3f66b033a..997f6b6f15 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/GoToTableCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/GoToTableCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.case import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.go.to.table._case.GoToTable; @@ -25,7 +26,7 @@ public class GoToTableCase extends ConvertorCase process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.GoToTableCase source, final ActionConvertorData data) { + public Optional process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.GoToTableCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { GoToTable goToTable = source.getGoToTable(); GotoTableCaseBuilder gotoTableCaseBuilder = new GotoTableCaseBuilder(); GotoTableBuilder gotoTableBuilder = new GotoTableBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/MeterCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/MeterCase.java index 20913d43bc..293fd39ebf 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/MeterCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/MeterCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.case import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.meter._case.Meter; @@ -25,7 +26,7 @@ public class MeterCase extends ConvertorCase process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.MeterCase source, final ActionConvertorData data) { + public Optional process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.MeterCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { Meter meter = source.getMeter(); MeterCaseBuilder meterCaseBuilder = new MeterCaseBuilder(); MeterBuilder meterBuilder = new MeterBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/WriteActionsCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/WriteActionsCase.java index f3b83bd20f..198bbd1ca3 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/WriteActionsCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/WriteActionsCase.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.write.actions._case.WriteActions; @@ -29,13 +29,12 @@ public class WriteActionsCase extends ConvertorCase process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteActionsCase source, final ActionConvertorData data) { + public Optional process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteActionsCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { WriteActions writeActions = source.getWriteActions(); WriteActionsCaseBuilder writeActionsCaseBuilder = new WriteActionsCaseBuilder(); WriteActionsBuilder writeActionsBuilder = new WriteActionsBuilder(); - final Optional> actions = ConvertorManager.getInstance().convert( - writeActions.getAction(), data); + final Optional> actions = convertorExecutor.convert(writeActions.getAction(), data); writeActionsBuilder.setAction(actions.orElse(Collections.emptyList())); writeActionsCaseBuilder.setWriteActions(writeActionsBuilder.build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/WriteMetadataCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/WriteMetadataCase.java index 87b3afd5bc..20938e845a 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/WriteMetadataCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/cases/WriteMetadataCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.case import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.util.ByteUtil; @@ -26,7 +27,7 @@ public class WriteMetadataCase extends ConvertorCase process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteMetadataCase source, final ActionConvertorData data) { + public Optional process(final @Nonnull org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteMetadataCase source, final ActionConvertorData data, ConvertorExecutor convertorExecutor) { WriteMetadata writeMetadata = source.getWriteMetadata(); WriteMetadataCaseBuilder writeMetadataCaseBuilder = new WriteMetadataCaseBuilder(); WriteMetadataBuilder writeMetadataBuilder = new WriteMetadataBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagConvertor.java index 40f76a7c68..96e99d982e 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagConvertor.java @@ -8,33 +8,20 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.flowflag; -import java.util.Collection; -import java.util.Collections; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertReactorConvertor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags; -import org.opendaylight.yangtools.yang.binding.DataContainer; /** * converting from MD-SAL match model into appropriate OF-API match model * * @param type of converted match */ -public interface FlowFlagConvertor extends Convertor { - - @Override - default Collection> getTypes() { - return Collections.singleton(DataContainer.class); - } - - @Override - default E convert(FlowModFlags source, VersionConvertorData data) { - return convert(source); - } - +public interface FlowFlagConvertor extends ConvertReactorConvertor { /** * @param source flow mode flags + * @param convertorExecutor * @return converted match (into OF-API model) */ - E convert(FlowModFlags source); + E convert(FlowModFlags source, ConvertorExecutor convertorExecutor); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactor.java index 7cd4b5d685..b921939ca8 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactor.java @@ -10,8 +10,8 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.flow import java.util.Map; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertReactor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.InjectionKey; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertReactorConvertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorKey; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ResultInjector; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags; @@ -34,8 +34,8 @@ public class FlowFlagReactor extends ConvertReactor { } @Override - protected void initMappings(final Map> conversions, - final Map> injections) { + protected void initMappings(final Map> conversions, + final Map> injections) { FlowFlagReactorMappingFactory.addFlowFlagsConvertors(conversions); FlowFlagReactorMappingFactory.addFlowFlagsIjectors(injections); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactorMappingFactory.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactorMappingFactory.java index b7b3e00b92..c76814e97c 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactorMappingFactory.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactorMappingFactory.java @@ -10,8 +10,8 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.flow import java.util.Map; import org.opendaylight.openflowplugin.api.OFConstants; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.InjectionKey; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertReactorConvertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorKey; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ResultInjector; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlags; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlagsV10; @@ -27,7 +27,7 @@ public class FlowFlagReactorMappingFactory { /** * @param conversionMapping conversion mapping */ - public static void addFlowFlagsConvertors(final Map> conversionMapping) { + public static void addFlowFlagsConvertors(final Map> conversionMapping) { conversionMapping.put(OFConstants.OFP_VERSION_1_3, new FlowFlagsConvertorImpl()); conversionMapping.put(OFConstants.OFP_VERSION_1_0, new FlowFlagsConvertorV10Impl()); } @@ -35,9 +35,9 @@ public class FlowFlagReactorMappingFactory { /** * @param injectionMapping injection mapping */ - public static void addFlowFlagsIjectors(final Map> injectionMapping) { + public static void addFlowFlagsIjectors(final Map> injectionMapping) { // OF-1.3|FlowModFlags --> FlowModInputBuilder - injectionMapping.put(new InjectionKey(OFConstants.OFP_VERSION_1_3, FlowModInputBuilder.class), + injectionMapping.put(new ConvertorKey(OFConstants.OFP_VERSION_1_3, FlowModInputBuilder.class), new ResultInjector() { @Override public void inject(final FlowModFlags value, @@ -47,7 +47,7 @@ public class FlowFlagReactorMappingFactory { }); // OF-1.3|FlowModFlagsV10 --> FlowModInputBuilder - injectionMapping.put(new InjectionKey(OFConstants.OFP_VERSION_1_0, FlowModInputBuilder.class), + injectionMapping.put(new ConvertorKey(OFConstants.OFP_VERSION_1_0, FlowModInputBuilder.class), new ResultInjector() { @Override public void inject(final FlowModFlagsV10 value, diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagsConvertorImpl.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagsConvertorImpl.java index 3604727c52..d33a973a4d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagsConvertorImpl.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagsConvertorImpl.java @@ -8,6 +8,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.flowflag; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.FlowConvertor; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlags; @@ -18,7 +19,7 @@ public class FlowFlagsConvertorImpl implements FlowFlagConvertor { @Override public FlowModFlags convert( - org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags source) { + org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags source, ConvertorExecutor convertorExecutor) { FlowModFlags ofFlowModFlags; if (source != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagsConvertorV10Impl.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagsConvertorV10Impl.java index f37f03760c..73021119e0 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagsConvertorV10Impl.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagsConvertorV10Impl.java @@ -8,6 +8,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.flowflag; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.FlowConvertor; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlagsV10; @@ -19,7 +20,7 @@ public class FlowFlagsConvertorV10Impl implements FlowFlagConvertor type of converted match */ -public interface MatchConvertor extends Convertor { - - @Override - default Collection> getTypes() { - return Collections.singleton(DataContainer.class); - } - - @Override - default E convert(Match source, VersionConvertorData data) { - return convert(source); - } - +public interface MatchConvertor extends ConvertReactorConvertor { /** * @param source match input + * @param convertorExecutor * @return converted match (into OF-API model) */ - E convert(Match source); + E convert(Match source, ConvertorExecutor convertorExecutor); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorImpl.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorImpl.java index 3497f49dac..9f273ed729 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorImpl.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorImpl.java @@ -19,6 +19,7 @@ import org.opendaylight.openflowplugin.extension.api.ConverterExtensionKey; import org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava; import org.opendaylight.openflowplugin.openflow.md.core.extension.ExtensionResolvers; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.OFApprovedExperimenterIds; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorProcessor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cases.SalToOfArpMatchCase; @@ -138,16 +139,16 @@ public class MatchConvertorImpl implements MatchConvertor> { private static final byte[] VLAN_VID_MASK = new byte[]{16, 0}; - private static void layer3Match(final List matchEntryList, final Layer3Match layer3Match) { - java.util.Optional> result = LAYER3_PROCESSOR.process(layer3Match); + private static void layer3Match(final List matchEntryList, final Layer3Match layer3Match, ConvertorExecutor convertorExecutor) { + java.util.Optional> result = LAYER3_PROCESSOR.process(layer3Match, convertorExecutor); if (result.isPresent()) { matchEntryList.addAll(result.get()); } } - private static void layer4Match(final List matchEntryList, final Layer4Match layer4Match) { - java.util.Optional> result = LAYER4_PROCESSOR.process(layer4Match); + private static void layer4Match(final List matchEntryList, final Layer4Match layer4Match, ConvertorExecutor convertorExecutor) { + java.util.Optional> result = LAYER4_PROCESSOR.process(layer4Match, convertorExecutor); if (result.isPresent()) { matchEntryList.addAll(result.get()); @@ -579,7 +580,7 @@ public class MatchConvertorImpl implements MatchConvertor> { } @Override - public List convert(final Match match) { + public List convert(final Match match, ConvertorExecutor convertorExecutor) { List result = new ArrayList<>(); if (match == null) { @@ -592,10 +593,10 @@ public class MatchConvertorImpl implements MatchConvertor> { ethernetMatch(result, match.getEthernetMatch()); vlanMatch(result, match.getVlanMatch()); ipMatch(result, match.getIpMatch()); - layer4Match(result, match.getLayer4Match()); + layer4Match(result, match.getLayer4Match(), convertorExecutor); icmpv4Match(result, match.getIcmpv4Match()); icmpv6Match(result, match.getIcmpv6Match()); - layer3Match(result, match.getLayer3Match()); + layer3Match(result, match.getLayer3Match(), convertorExecutor); protocolMatchFields(result, match.getProtocolMatchFields()); tunnelMatch(result, match.getTunnel()); tcpFlagsMatch(result, match.getTcpFlagsMatch()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorV10Impl.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorV10Impl.java index 90236ab912..2046508949 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorV10Impl.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorV10Impl.java @@ -10,6 +10,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match; import java.util.Iterator; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.util.ActionUtil; import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil; @@ -205,10 +206,11 @@ public class MatchConvertorV10Impl implements MatchConvertor { * Method builds openflow 1.0 specific match (MatchV10) from MD-SAL match. * * @param match MD-SAL match + * @param convertorExecutor * @return OF-API match */ @Override - public MatchV10 convert(final Match match) { + public MatchV10 convert(final Match match, ConvertorExecutor convertorExecutor) { MatchV10Builder matchBuilder = new MatchV10Builder(); boolean _dLDST = true; boolean _dLSRC = true; diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactor.java index 28203dff18..3c31f4d101 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactor.java @@ -10,8 +10,8 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match; import java.util.Map; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertReactor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.InjectionKey; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertReactorConvertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorKey; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ResultInjector; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match; @@ -34,8 +34,8 @@ public class MatchReactor extends ConvertReactor { } @Override - protected void initMappings(final Map> conversions, - final Map> injections) { + protected void initMappings(final Map> conversions, + final Map> injections) { MatchReactorMappingFactory.addMatchConvertors(conversions); MatchReactorMappingFactory.addMatchIjectors(injections); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactorMappingFactory.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactorMappingFactory.java index 5cc91b3748..f10fce4996 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactorMappingFactory.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactorMappingFactory.java @@ -11,8 +11,8 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match; import java.util.List; import java.util.Map; import org.opendaylight.openflowplugin.api.OFConstants; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.InjectionKey; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertReactorConvertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorKey; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ResultInjector; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.FlowConvertor; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match; @@ -34,7 +34,7 @@ public class MatchReactorMappingFactory { /** * @param conversionMapping conversion mapping */ - public static void addMatchConvertors(final Map> conversionMapping) { + public static void addMatchConvertors(final Map> conversionMapping) { conversionMapping.put(OFConstants.OFP_VERSION_1_3, new MatchConvertorImpl()); conversionMapping.put(OFConstants.OFP_VERSION_1_0, new MatchConvertorV10Impl()); } @@ -42,9 +42,9 @@ public class MatchReactorMappingFactory { /** * @param injectionMapping injection mapping */ - public static void addMatchIjectors(final Map> injectionMapping) { + public static void addMatchIjectors(final Map> injectionMapping) { // OF-1.3|List --> FlowModInputBuilder - injectionMapping.put(new InjectionKey(OFConstants.OFP_VERSION_1_3, FlowModInputBuilder.class), + injectionMapping.put(new ConvertorKey(OFConstants.OFP_VERSION_1_3, FlowModInputBuilder.class), new ResultInjector, FlowModInputBuilder>() { @Override public void inject(final List value, @@ -54,7 +54,7 @@ public class MatchReactorMappingFactory { }); // OF-1.3|List --> OxmFieldsActionBuilder - injectionMapping.put(new InjectionKey(OFConstants.OFP_VERSION_1_3, SetFieldActionBuilder.class), + injectionMapping.put(new ConvertorKey(OFConstants.OFP_VERSION_1_3, SetFieldActionBuilder.class), new ResultInjector, SetFieldActionBuilder>() { @Override public void inject(final List value, @@ -64,7 +64,7 @@ public class MatchReactorMappingFactory { }); // OF-1.0|MatchV10Builder --> FlowModInputBuilder - injectionMapping.put(new InjectionKey(OFConstants.OFP_VERSION_1_0, FlowModInputBuilder.class), + injectionMapping.put(new ConvertorKey(OFConstants.OFP_VERSION_1_0, FlowModInputBuilder.class), new ResultInjector() { @Override public void inject(final MatchV10 value, @@ -74,7 +74,7 @@ public class MatchReactorMappingFactory { }); // OF-1.3|List --> MultipartRequestFlowBuilder - injectionMapping.put(new InjectionKey(OFConstants.OFP_VERSION_1_3, MultipartRequestFlowBuilder.class), + injectionMapping.put(new ConvertorKey(OFConstants.OFP_VERSION_1_3, MultipartRequestFlowBuilder.class), new ResultInjector, MultipartRequestFlowBuilder>() { @Override public void inject(final List value, @@ -84,7 +84,7 @@ public class MatchReactorMappingFactory { }); // OF-1.0|List --> MultipartRequestFlowBuilder - injectionMapping.put(new InjectionKey(OFConstants.OFP_VERSION_1_0, MultipartRequestFlowBuilder.class), + injectionMapping.put(new ConvertorKey(OFConstants.OFP_VERSION_1_0, MultipartRequestFlowBuilder.class), new ResultInjector() { @Override public void inject(final MatchV10 value, @@ -94,7 +94,7 @@ public class MatchReactorMappingFactory { }); // OF-1.3|List --> MultipartRequestAggregateBuilder - injectionMapping.put(new InjectionKey(OFConstants.OFP_VERSION_1_3, MultipartRequestAggregateBuilder.class), + injectionMapping.put(new ConvertorKey(OFConstants.OFP_VERSION_1_3, MultipartRequestAggregateBuilder.class), new ResultInjector, MultipartRequestAggregateBuilder>() { @Override public void inject(final List value, @@ -104,7 +104,7 @@ public class MatchReactorMappingFactory { }); // OF-1.0|List --> MultipartRequestAggregateBuilder - injectionMapping.put(new InjectionKey(OFConstants.OFP_VERSION_1_0, MultipartRequestAggregateBuilder.class), + injectionMapping.put(new ConvertorKey(OFConstants.OFP_VERSION_1_0, MultipartRequestAggregateBuilder.class), new ResultInjector() { @Override public void inject(final MatchV10 value, diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertor.java index f15310ef4c..2529f37fbe 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertor.java @@ -92,11 +92,11 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; * {@code * VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(version); * data.setDatapathId(datapathId); - * Optional salMatch = ConvertorManager.getInstance().convert(ofMatch, data); + * Optional salMatch = convertorManager.convert(ofMatch, data); * } * */ -public class MatchResponseConvertor implements Convertor { +public class MatchResponseConvertor extends Convertor { private static final ConvertorProcessor OF_TO_SAL_PROCESSOR = new ConvertorProcessor() .addCase(new OfToSalInPortCase()) .addCase(new OfToSalInPhyPortCase()) @@ -186,10 +186,10 @@ public class MatchResponseConvertor implements Convertor salMatch = ConvertorManager.getInstance().convert(ofMatchV10, data); + * Optional salMatch = convertorManager.convert(ofMatchV10, data); * } * */ -public class MatchV10ResponseConvertor implements Convertor { +public class MatchV10ResponseConvertor extends Convertor { private static final short PROTO_TCP = 6; private static final short PROTO_UDP = 17; private static final short PROTO_ICMPV4 = 1; diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpOpCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpOpCase.java index 4e4a15f59e..e777edf56c 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpOpCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpOpCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalArpOpCase extends ConvertorCase process(@Nonnull ArpOpCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull ArpOpCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final ArpMatchBuilder arpMatchBuilder = data.getArpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpShaCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpShaCase.java index 552fd2f16f..ca42239d5d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpShaCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpShaCase.java @@ -12,6 +12,7 @@ import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowjava.util.ByteBufUtils; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; @@ -27,7 +28,7 @@ public class OfToSalArpShaCase extends ConvertorCase process(@Nonnull ArpShaCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull ArpShaCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final ArpMatchBuilder arpMatchBuilder = data.getArpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpSpaCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpSpaCase.java index 05782f9eaa..04eda9d2c4 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpSpaCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpSpaCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; @@ -26,7 +27,7 @@ public class OfToSalArpSpaCase extends ConvertorCase process(@Nonnull ArpSpaCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull ArpSpaCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final ArpMatchBuilder arpMatchBuilder = data.getArpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpThaCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpThaCase.java index 030bc38046..67c06a48a1 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpThaCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpThaCase.java @@ -12,6 +12,7 @@ import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowjava.util.ByteBufUtils; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; @@ -27,7 +28,7 @@ public class OfToSalArpThaCase extends ConvertorCase process(@Nonnull ArpThaCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull ArpThaCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final ArpMatchBuilder arpMatchBuilder = data.getArpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpTpaCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpTpaCase.java index 843f5dac90..e79eb3e0bd 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpTpaCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalArpTpaCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; @@ -26,7 +27,7 @@ public class OfToSalArpTpaCase extends ConvertorCase process(@Nonnull ArpTpaCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull ArpTpaCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final ArpMatchBuilder arpMatchBuilder = data.getArpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthDstCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthDstCase.java index b2af478336..2653eac5b5 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthDstCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthDstCase.java @@ -13,6 +13,7 @@ import static org.opendaylight.openflowjava.util.ByteBufUtils.macAddressToString import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; @@ -28,7 +29,7 @@ public class OfToSalEthDstCase extends ConvertorCase process(@Nonnull EthDstCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull EthDstCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final EthernetMatchBuilder ethMatchBuilder = data.getEthernetMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthSrcCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthSrcCase.java index fec3bfdc4f..f4c12d96dd 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthSrcCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthSrcCase.java @@ -13,6 +13,7 @@ import static org.opendaylight.openflowjava.util.ByteBufUtils.macAddressToString import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; @@ -28,7 +29,7 @@ public class OfToSalEthSrcCase extends ConvertorCase process(@Nonnull EthSrcCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull EthSrcCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final EthernetMatchBuilder ethMatchBuilder = data.getEthernetMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthTypeCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthTypeCase.java index c69bddb8c4..7a6e532e0d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthTypeCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalEthTypeCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -26,7 +27,7 @@ public class OfToSalEthTypeCase extends ConvertorCase process(@Nonnull EthTypeCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull EthTypeCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final EthernetMatchBuilder ethMatchBuilder = data.getEthernetMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalExperimenterIdCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalExperimenterIdCase.java index ff4ac07940..22bc6f0194 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalExperimenterIdCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalExperimenterIdCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.ByteUtil; @@ -26,7 +27,7 @@ public class OfToSalExperimenterIdCase extends ConvertorCase process(@Nonnull ExperimenterIdCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull ExperimenterIdCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); if (data.getOxmMatchField().equals(TcpFlags.class)) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv4CodeCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv4CodeCase.java index 7241695625..d5fa2c7e47 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv4CodeCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv4CodeCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalIcmpv4CodeCase extends ConvertorCase process(@Nonnull Icmpv4CodeCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Icmpv4CodeCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Icmpv4MatchBuilder icmpv4MatchBuilder = data.getIcmpv4MatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv4TypeCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv4TypeCase.java index 93ccedae5b..749bde8b6a 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv4TypeCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv4TypeCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalIcmpv4TypeCase extends ConvertorCase process(@Nonnull Icmpv4TypeCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Icmpv4TypeCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Icmpv4MatchBuilder icmpv4MatchBuilder = data.getIcmpv4MatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv6CodeCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv6CodeCase.java index b824b2194a..268e8255bb 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv6CodeCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv6CodeCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalIcmpv6CodeCase extends ConvertorCase process(@Nonnull Icmpv6CodeCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Icmpv6CodeCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Icmpv6MatchBuilder icmpv6MatchBuilder = data.getIcmpv6MatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv6TypeCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv6TypeCase.java index e0f296c81e..384e0e4515 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv6TypeCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIcmpv6TypeCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalIcmpv6TypeCase extends ConvertorCase process(@Nonnull Icmpv6TypeCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Icmpv6TypeCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Icmpv6MatchBuilder icmpv6MatchBuilder = data.getIcmpv6MatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalInPhyPortCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalInPhyPortCase.java index faeb92ac18..106682bf9f 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalInPhyPortCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalInPhyPortCase.java @@ -13,6 +13,7 @@ import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil; @@ -26,7 +27,7 @@ public class OfToSalInPhyPortCase extends ConvertorCase process(@Nonnull InPhyPortCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull InPhyPortCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final OpenflowVersion ofVersion = OpenflowVersion.get(data.getVersion()); final BigInteger datapathId = data.getDatapathId(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalInPortCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalInPortCase.java index 3283b8d652..9df2b5f744 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalInPortCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalInPortCase.java @@ -13,6 +13,7 @@ import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil; @@ -26,7 +27,7 @@ public class OfToSalInPortCase extends ConvertorCase process(@Nonnull InPortCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull InPortCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final OpenflowVersion ofVersion = OpenflowVersion.get(data.getVersion()); final BigInteger datapathId = data.getDatapathId(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpDscpCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpDscpCase.java index 2cd568bdd9..4111e275aa 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpDscpCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpDscpCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp; @@ -25,7 +26,7 @@ public class OfToSalIpDscpCase extends ConvertorCase process(@Nonnull IpDscpCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull IpDscpCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final IpMatchBuilder ipMatchBuilder = data.getIpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpEcnCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpEcnCase.java index f999efc9b1..c87e62362c 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpEcnCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpEcnCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalIpEcnCase extends ConvertorCase process(@Nonnull IpEcnCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull IpEcnCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final IpMatchBuilder ipMatchBuilder = data.getIpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpProtoCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpProtoCase.java index a262198c70..6a9cd6b479 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpProtoCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpProtoCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalIpProtoCase extends ConvertorCase process(@Nonnull IpProtoCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull IpProtoCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final IpMatchBuilder ipMatchBuilder = data.getIpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv4DstCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv4DstCase.java index dc417df24d..ba55abe4c1 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv4DstCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv4DstCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; @@ -64,7 +65,7 @@ public class OfToSalIpv4DstCase extends ConvertorCase process(@Nonnull Ipv4DstCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Ipv4DstCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Ipv4MatchBuilder ipv4MatchBuilder = data.getIpv4MatchBuilder(); final Ipv4MatchArbitraryBitMaskBuilder ipv4MatchArbitraryBitMaskBuilder = data.getIpv4MatchArbitraryBitMaskBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv4SrcCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv4SrcCase.java index 9098a6a66a..3fc8de65a6 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv4SrcCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv4SrcCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; @@ -64,7 +65,7 @@ public class OfToSalIpv4SrcCase extends ConvertorCase process(@Nonnull Ipv4SrcCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Ipv4SrcCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Ipv4MatchBuilder ipv4MatchBuilder = data.getIpv4MatchBuilder(); final Ipv4MatchArbitraryBitMaskBuilder ipv4MatchArbitraryBitMaskBuilder = data.getIpv4MatchArbitraryBitMaskBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6DstCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6DstCase.java index 6fd2a136a4..da1272ea1e 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6DstCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6DstCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; @@ -29,7 +30,7 @@ public class OfToSalIpv6DstCase extends ConvertorCase process(@Nonnull Ipv6DstCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Ipv6DstCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Ipv6MatchBuilder ipv6MatchBuilder = data.getIpv6MatchBuilder(); final Ipv6MatchArbitraryBitMaskBuilder ipv6MatchArbitraryBitMaskBuilder = data.getIpv6MatchArbitraryBitMaskBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6ExthdrCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6ExthdrCase.java index b3b5abaaf4..ee65a3834a 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6ExthdrCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6ExthdrCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchConvertorUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; @@ -28,7 +29,7 @@ public class OfToSalIpv6ExthdrCase extends ConvertorCase process(@Nonnull Ipv6ExthdrCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Ipv6ExthdrCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Ipv6MatchBuilder ipv6MatchBuilder = data.getIpv6MatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6FlabelCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6FlabelCase.java index d0434847d6..97679320d4 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6FlabelCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6FlabelCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.ByteUtil; @@ -27,7 +28,7 @@ public class OfToSalIpv6FlabelCase extends ConvertorCase process(@Nonnull Ipv6FlabelCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Ipv6FlabelCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Ipv6MatchBuilder ipv6MatchBuilder = data.getIpv6MatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdSllCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdSllCase.java index 2cdb2ab2b2..15d83ce056 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdSllCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdSllCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalIpv6NdSllCase extends ConvertorCase process(@Nonnull Ipv6NdSllCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Ipv6NdSllCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Ipv6MatchBuilder ipv6MatchBuilder = data.getIpv6MatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdTargetCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdTargetCase.java index 36a3339439..667a5e6c67 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdTargetCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdTargetCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalIpv6NdTargetCase extends ConvertorCase process(@Nonnull Ipv6NdTargetCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Ipv6NdTargetCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Ipv6MatchBuilder ipv6MatchBuilder = data.getIpv6MatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdTllCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdTllCase.java index 25153d0e3b..7f8418705a 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdTllCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6NdTllCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalIpv6NdTllCase extends ConvertorCase process(@Nonnull Ipv6NdTllCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Ipv6NdTllCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Ipv6MatchBuilder ipv6MatchBuilder = data.getIpv6MatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6SrcCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6SrcCase.java index 981bdf8166..2cb8803f1b 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6SrcCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalIpv6SrcCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; @@ -29,7 +30,7 @@ public class OfToSalIpv6SrcCase extends ConvertorCase process(@Nonnull Ipv6SrcCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Ipv6SrcCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Ipv6MatchBuilder ipv6MatchBuilder = data.getIpv6MatchBuilder(); final Ipv6MatchArbitraryBitMaskBuilder ipv6MatchArbitraryBitMaskBuilder = data.getIpv6MatchArbitraryBitMaskBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMetadataCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMetadataCase.java index 179c6dac39..9f924940b9 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMetadataCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMetadataCase.java @@ -12,6 +12,7 @@ import java.math.BigInteger; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -25,7 +26,7 @@ public class OfToSalMetadataCase extends ConvertorCase process(@Nonnull MetadataCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull MetadataCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final MetadataBuilder metadataBuilder = new MetadataBuilder(); final Metadata metadata = source.getMetadata(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsBosCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsBosCase.java index 8e70ca581a..38ae6c2371 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsBosCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsBosCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalMplsBosCase extends ConvertorCase process(@Nonnull MplsBosCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull MplsBosCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = data.getProtocolMatchFieldsBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsLabelCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsLabelCase.java index dd26627586..cf53c8bfce 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsLabelCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsLabelCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalMplsLabelCase extends ConvertorCase process(@Nonnull MplsLabelCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull MplsLabelCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = data.getProtocolMatchFieldsBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsTcCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsTcCase.java index 7005fc08d5..6fcc8d7e5d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsTcCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalMplsTcCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalMplsTcCase extends ConvertorCase process(@Nonnull MplsTcCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull MplsTcCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = data.getProtocolMatchFieldsBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalPbbIsidCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalPbbIsidCase.java index 1d7d25c421..57b876c66e 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalPbbIsidCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalPbbIsidCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.ByteUtil; @@ -26,7 +27,7 @@ public class OfToSalPbbIsidCase extends ConvertorCase process(@Nonnull PbbIsidCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull PbbIsidCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = data.getProtocolMatchFieldsBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalSctpDstCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalSctpDstCase.java index fea5b8399c..7046a9b5ff 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalSctpDstCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalSctpDstCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; @@ -25,7 +26,7 @@ public class OfToSalSctpDstCase extends ConvertorCase process(@Nonnull SctpDstCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull SctpDstCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final SctpMatchBuilder sctpMatchBuilder = data.getSctpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalSctpSrcCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalSctpSrcCase.java index c5bcb92ef7..d9549a886c 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalSctpSrcCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalSctpSrcCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; @@ -25,7 +26,7 @@ public class OfToSalSctpSrcCase extends ConvertorCase process(@Nonnull SctpSrcCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull SctpSrcCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final SctpMatchBuilder sctpMatchBuilder = data.getSctpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTcpDstCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTcpDstCase.java index 76914b9a06..6dcee21beb 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTcpDstCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTcpDstCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; @@ -25,7 +26,7 @@ public class OfToSalTcpDstCase extends ConvertorCase process(@Nonnull TcpDstCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull TcpDstCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final TcpMatchBuilder tcpMatchBuilder = data.getTcpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTcpSrcCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTcpSrcCase.java index 75780742b1..503cabef94 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTcpSrcCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTcpSrcCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalTcpSrcCase extends ConvertorCase process(@Nonnull TcpSrcCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull TcpSrcCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final TcpMatchBuilder tcpMatchBuilder = data.getTcpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIdCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIdCase.java index 389f8cd3f1..dab5b3cad7 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIdCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIdCase.java @@ -12,6 +12,7 @@ import java.math.BigInteger; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -25,7 +26,7 @@ public class OfToSalTunnelIdCase extends ConvertorCase process(@Nonnull TunnelIdCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull TunnelIdCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); TunnelId tunnelId = source.getTunnelId(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIpv4DstCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIpv4DstCase.java index 733c1a886f..e5e5bab5f3 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIpv4DstCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIpv4DstCase.java @@ -12,6 +12,7 @@ import java.nio.ByteBuffer; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; @@ -29,7 +30,7 @@ public class OfToSalTunnelIpv4DstCase extends ConvertorCase process(@Nonnull Ipv4DstCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Ipv4DstCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Ipv4MatchBuilder ipv4MatchBuilder = data.getIpv4MatchBuilder(); final TunnelIpv4MatchBuilder tunnelIpv4MatchBuilder = data.getTunnelIpv4MatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIpv4SrcCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIpv4SrcCase.java index 5586b3484f..c84d9420c0 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIpv4SrcCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalTunnelIpv4SrcCase.java @@ -12,6 +12,7 @@ import java.nio.ByteBuffer; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; @@ -29,7 +30,7 @@ public class OfToSalTunnelIpv4SrcCase extends ConvertorCase process(@Nonnull Ipv4SrcCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull Ipv4SrcCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final Ipv4MatchBuilder ipv4MatchBuilder = data.getIpv4MatchBuilder(); final TunnelIpv4MatchBuilder tunnelIpv4MatchBuilder = data.getTunnelIpv4MatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalUdpDstCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalUdpDstCase.java index 78776cebc5..c3cacffcd0 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalUdpDstCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalUdpDstCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalUdpDstCase extends ConvertorCase process(@Nonnull UdpDstCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull UdpDstCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final UdpMatchBuilder udpMatchBuilder = data.getUdpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalUdpSrcCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalUdpSrcCase.java index ec52f5624d..0dcf7f290a 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalUdpSrcCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalUdpSrcCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalUdpSrcCase extends ConvertorCase process(@Nonnull UdpSrcCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull UdpSrcCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final UdpMatchBuilder udpMatchBuilder = data.getUdpMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalVlanPcpCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalVlanPcpCase.java index 807c0b04ae..b862a46178 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalVlanPcpCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalVlanPcpCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -24,7 +25,7 @@ public class OfToSalVlanPcpCase extends ConvertorCase process(@Nonnull VlanPcpCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull VlanPcpCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final VlanMatchBuilder vlanMatchBuilder = data.getVlanMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalVlanVidCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalVlanVidCase.java index 89e387e6c3..edff8c63ad 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalVlanVidCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/OfToSalVlanVidCase.java @@ -11,6 +11,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.cas import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.data.MatchResponseConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; @@ -26,7 +27,7 @@ public class OfToSalVlanVidCase extends ConvertorCase process(@Nonnull VlanVidCase source, MatchResponseConvertorData data) { + public Optional process(@Nonnull VlanVidCase source, MatchResponseConvertorData data, ConvertorExecutor convertorExecutor) { final MatchBuilder matchBuilder = data.getMatchBuilder(); final VlanMatchBuilder vlanMatchBuilder = data.getVlanMatchBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfArpMatchCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfArpMatchCase.java index cb3bc68662..6ba10bdc15 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfArpMatchCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfArpMatchCase.java @@ -14,6 +14,7 @@ import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.openflowjava.util.ByteBufUtils; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; @@ -48,7 +49,7 @@ public class SalToOfArpMatchCase extends ConvertorCase> process(@Nonnull ArpMatch source, VersionConvertorData data) { + public Optional> process(@Nonnull ArpMatch source, VersionConvertorData data, ConvertorExecutor convertorExecutor) { List result = new ArrayList<>(); if (source.getArpOp() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv4MatchArbitraryBitMaskCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv4MatchArbitraryBitMaskCase.java index 1100cc446a..b8cca513e6 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv4MatchArbitraryBitMaskCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv4MatchArbitraryBitMaskCase.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; @@ -33,7 +34,7 @@ public class SalToOfIpv4MatchArbitraryBitMaskCase extends ConvertorCase> process(@Nonnull Ipv4MatchArbitraryBitMask source, VersionConvertorData data) { + public Optional> process(@Nonnull Ipv4MatchArbitraryBitMask source, VersionConvertorData data, ConvertorExecutor convertorExecutor) { List result = new ArrayList<>(); if (source.getIpv4SourceAddressNoMask() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv4MatchCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv4MatchCase.java index 1c7a907a3c..490575cf67 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv4MatchCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv4MatchCase.java @@ -13,6 +13,7 @@ import java.util.Iterator; import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; @@ -36,7 +37,7 @@ public class SalToOfIpv4MatchCase extends ConvertorCase> process(@Nonnull Ipv4Match source, VersionConvertorData data) { + public Optional> process(@Nonnull Ipv4Match source, VersionConvertorData data, ConvertorExecutor convertorExecutor) { List result = new ArrayList<>(); if (source.getIpv4Source() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv6MatchArbitraryBitMaskCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv6MatchArbitraryBitMaskCase.java index 9ab5674d0e..0f1056cc61 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv6MatchArbitraryBitMaskCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv6MatchArbitraryBitMaskCase.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; @@ -33,7 +34,7 @@ public class SalToOfIpv6MatchArbitraryBitMaskCase extends ConvertorCase> process(@Nonnull Ipv6MatchArbitraryBitMask source, VersionConvertorData data) { + public Optional> process(@Nonnull Ipv6MatchArbitraryBitMask source, VersionConvertorData data, ConvertorExecutor convertorExecutor) { List result = new ArrayList<>(); if (source.getIpv6SourceAddressNoMask() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv6MatchCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv6MatchCase.java index 374bc46ec1..ed9f8eb41e 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv6MatchCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfIpv6MatchCase.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; @@ -51,7 +52,7 @@ public class SalToOfIpv6MatchCase extends ConvertorCase> process(@Nonnull Ipv6Match source, VersionConvertorData data) { + public Optional> process(@Nonnull Ipv6Match source, VersionConvertorData data, ConvertorExecutor convertorExecutor) { List result = new ArrayList<>(); if (source.getIpv6Source() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfSctpMatchCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfSctpMatchCase.java index 5cc9080bb2..e8197316e4 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfSctpMatchCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfSctpMatchCase.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatch; @@ -31,7 +32,7 @@ public class SalToOfSctpMatchCase extends ConvertorCase> process(@Nonnull SctpMatch source, VersionConvertorData data) { + public Optional> process(@Nonnull SctpMatch source, VersionConvertorData data, ConvertorExecutor convertorExecutor) { List result = new ArrayList<>(); if (source.getSctpSourcePort() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfTcpMatchCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfTcpMatchCase.java index 4f6a3d69f4..61c5800c2e 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfTcpMatchCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfTcpMatchCase.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatch; @@ -31,7 +32,7 @@ public class SalToOfTcpMatchCase extends ConvertorCase> process(@Nonnull TcpMatch source, VersionConvertorData data) { + public Optional> process(@Nonnull TcpMatch source, VersionConvertorData data, ConvertorExecutor convertorExecutor) { List result = new ArrayList<>(); if (source.getTcpSourcePort() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfTunnelIpv4MatchCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfTunnelIpv4MatchCase.java index 88f8d49b20..6b85e17f6d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfTunnelIpv4MatchCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfTunnelIpv4MatchCase.java @@ -13,6 +13,7 @@ import java.util.Iterator; import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; @@ -36,7 +37,7 @@ public class SalToOfTunnelIpv4MatchCase extends ConvertorCase> process(@Nonnull TunnelIpv4Match source, VersionConvertorData data) { + public Optional> process(@Nonnull TunnelIpv4Match source, VersionConvertorData data, ConvertorExecutor convertorExecutor) { List result = new ArrayList<>(); if (source.getTunnelIpv4Source() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfUdpMatchCase.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfUdpMatchCase.java index 565c46aa4c..3979863d85 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfUdpMatchCase.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/cases/SalToOfUdpMatchCase.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import javax.annotation.Nonnull; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorCase; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatch; @@ -31,7 +32,7 @@ public class SalToOfUdpMatchCase extends ConvertorCase> process(@Nonnull UdpMatch source, VersionConvertorData data) { + public Optional> process(@Nonnull UdpMatch source, VersionConvertorData data, ConvertorExecutor convertorExecutor) { List result = new ArrayList<>(); if (source.getUdpSourcePort() != null) { diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/FlowRemovedTranslator.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/FlowRemovedTranslator.java index a889a67097..493771c3a1 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/FlowRemovedTranslator.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/FlowRemovedTranslator.java @@ -24,7 +24,7 @@ import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; import org.opendaylight.openflowplugin.extension.api.AugmentTuple; import org.opendaylight.openflowplugin.extension.api.path.MatchPath; import org.opendaylight.openflowplugin.openflow.md.core.extension.MatchExtensionHelper; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.ByteUtil; @@ -159,6 +159,11 @@ public class FlowRemovedTranslator implements IMDMessageTranslator translate(final SwitchConnectionDistinguisher cookie, final SessionContext sc, final OfHeader msg) { @@ -203,7 +208,7 @@ public class FlowRemovedTranslator implements IMDMessageTranslator matchBuilderOptional = ConvertorManager.getInstance().convert(ofFlow.getMatchV10(), data); + final Optional matchBuilderOptional = convertorExecutor.convert(ofFlow.getMatchV10(), data); salFlowRemoved.setMatch(matchBuilderOptional.orElse(new MatchBuilder()).build()); } salFlowRemoved.setNode(new NodeRef(InventoryDataServiceUtil.identifierFromDatapathId(sc.getFeatures() diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTableFeaturesToTableUpdatedTranslator.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTableFeaturesToTableUpdatedTranslator.java index 6ffe053519..e2f755ca37 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTableFeaturesToTableUpdatedTranslator.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTableFeaturesToTableUpdatedTranslator.java @@ -16,7 +16,8 @@ import java.util.concurrent.CopyOnWriteArrayList; import org.opendaylight.openflowplugin.api.openflow.md.core.IMDMessageTranslator; import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; @@ -37,6 +38,11 @@ public class MultipartReplyTableFeaturesToTableUpdatedTranslator implements private static final Logger LOG = LoggerFactory .getLogger(MultipartReplyTableFeaturesToTableUpdatedTranslator.class); + private final ConvertorExecutor convertorExecutor; + + public MultipartReplyTableFeaturesToTableUpdatedTranslator(ConvertorExecutor convertorExecutor) { + this.convertorExecutor = convertorExecutor; + } @Override public List translate(SwitchConnectionDistinguisher cookie, SessionContext sc, OfHeader msg) { @@ -46,7 +52,7 @@ public class MultipartReplyTableFeaturesToTableUpdatedTranslator implements List listDataObject = new CopyOnWriteArrayList<>(); - TableUpdatedBuilder message = new TableUpdatedBuilder() ; + TableUpdatedBuilder message = new TableUpdatedBuilder(); message.setNode((new NodeRef(InventoryDataServiceUtil.identifierFromDatapathId(sc.getFeatures() .getDatapathId())))); message.setMoreReplies(mpReply.getFlags().isOFPMPFREQMORE()); @@ -54,7 +60,8 @@ public class MultipartReplyTableFeaturesToTableUpdatedTranslator implements MultipartReplyTableFeaturesCase caseBody = (MultipartReplyTableFeaturesCase) mpReply.getMultipartReplyBody(); MultipartReplyTableFeatures body = caseBody.getMultipartReplyTableFeatures(); - final Optional> tableFeaturesList = ConvertorManager.getInstance().convert(body); + final VersionConvertorData data = new VersionConvertorData(sc.getPrimaryConductor().getVersion()); + final Optional> tableFeaturesList = convertorExecutor.convert(body, data); message.setTableFeatures(tableFeaturesList.orElse(Collections.emptyList())); listDataObject.add( message.build()) ; diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslator.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslator.java index 4872f58a8c..2e31766fa8 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslator.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslator.java @@ -18,8 +18,7 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.IMDMessageTranslator import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32; @@ -113,6 +112,11 @@ public class MultipartReplyTranslator implements IMDMessageTranslator listDataObject = new CopyOnWriteArrayList(); OpenflowVersion ofVersion = OpenflowVersion.get(sc.getPrimaryConductor().getVersion()); + final VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(sc.getPrimaryConductor().getVersion()); + data.setDatapathId(sc.getFeatures().getDatapathId()); if(msg instanceof MultipartReplyMessage){ MultipartReplyMessage mpReply = (MultipartReplyMessage)msg; @@ -134,10 +140,8 @@ public class MultipartReplyTranslator implements IMDMessageTranslator> flowAndStatisticsMapLists = ConvertorManager.getInstance().convert(replyBody.getFlowStats(), data); + final Optional> flowAndStatisticsMapLists = convertorExecutor.convert(replyBody.getFlowStats(), data); message.setFlowAndStatisticsMapList(flowAndStatisticsMapLists.orElse(Collections.emptyList())); logger.debug("Converted flow statistics : {}",message.build().toString()); @@ -228,7 +232,7 @@ public class MultipartReplyTranslator implements IMDMessageTranslator> groupStatsList = ConvertorManager.getInstance().convert(replyBody.getGroupStats()); + final Optional> groupStatsList = convertorExecutor.convert(replyBody.getGroupStats(), data); message.setGroupStats(groupStatsList.orElse(Collections.emptyList())); logger.debug("Converted group statistics : {}",message.toString()); listDataObject.add(message.build()); @@ -244,8 +248,7 @@ public class MultipartReplyTranslator implements IMDMessageTranslator> groupDescStatsList = ConvertorManager.getInstance().convert(replyBody.getGroupDesc(), data); + final Optional> groupDescStatsList = convertorExecutor.convert(replyBody.getGroupDesc(), data); message.setGroupDescStats(groupDescStatsList.orElse(Collections.emptyList())); logger.debug("Converted group statistics : {}",message.toString()); listDataObject.add(message.build()); @@ -311,7 +314,7 @@ public class MultipartReplyTranslator implements IMDMessageTranslator> meterStatsList = - ConvertorManager.getInstance().convert(replyBody.getMeterStats()); + convertorExecutor.convert(replyBody.getMeterStats(), data); message.setMeterStats(meterStatsList.orElse(Collections.emptyList())); listDataObject.add(message.build()); @@ -328,7 +331,7 @@ public class MultipartReplyTranslator implements IMDMessageTranslator> meterConfigStatsList = ConvertorManager.getInstance().convert(replyBody.getMeterConfig()); + final Optional> meterConfigStatsList = convertorExecutor.convert(replyBody.getMeterConfig(), data); message.setMeterConfigStats(meterConfigStatsList.orElse(Collections.emptyList())); listDataObject.add(message.build()); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/PacketInTranslator.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/PacketInTranslator.java index abb3eb7978..a2d4b946a9 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/PacketInTranslator.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/PacketInTranslator.java @@ -18,7 +18,7 @@ import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; import org.opendaylight.openflowplugin.extension.api.AugmentTuple; import org.opendaylight.openflowplugin.extension.api.path.MatchPath; import org.opendaylight.openflowplugin.openflow.md.core.extension.MatchExtensionHelper; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil; import org.opendaylight.openflowplugin.openflow.md.util.PacketInUtil; @@ -43,6 +43,11 @@ public class PacketInTranslator implements IMDMessageTranslator translate(final SwitchConnectionDistinguisher cookie, @@ -101,7 +106,7 @@ public class PacketInTranslator implements IMDMessageTranslator matchOptional = ConvertorManager.getInstance().convert(message.getMatch(), datapathIdConvertorData); + final Optional matchOptional = convertorExecutor.convert(message.getMatch(), datapathIdConvertorData); final MatchBuilder matchBuilder = new MatchBuilder(matchOptional.orElse(new MatchBuilder()).build()); AugmentTuple matchExtensionWrap = diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImplTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImplTest.java index ea3254406a..8eb350f358 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImplTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImplTest.java @@ -42,6 +42,8 @@ import org.opendaylight.openflowplugin.api.openflow.statistics.MessageSpy; import org.opendaylight.openflowplugin.openflow.md.core.plan.ConnectionAdapterStackImpl; import org.opendaylight.openflowplugin.openflow.md.core.plan.EventFactory; import org.opendaylight.openflowplugin.openflow.md.core.plan.SwitchTestEvent; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.queue.QueueProcessorLightImpl; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Capabilities; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures; @@ -154,7 +156,8 @@ public class ConnectionConductorImplTest { popListener = new PopListenerCountingImpl<>(); - controller = new MDController(); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + controller = new MDController(convertorManager); controller.init(); controller.getMessageTranslators().putAll(assembleTranslatorMapping()); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/MDControllerTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/MDControllerTest.java index 7acdb6de9e..d871ec0fcc 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/MDControllerTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/MDControllerTest.java @@ -8,7 +8,6 @@ package org.opendaylight.openflowplugin.openflow.md.core; import java.util.List; - import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -16,6 +15,8 @@ import org.junit.Test; import org.opendaylight.openflowplugin.api.openflow.md.core.IMDMessageTranslator; import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemoved; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketIn; @@ -35,7 +36,8 @@ public class MDControllerTest { */ @Before public void setUp() throws Exception { - controller = new MDController(); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + controller = new MDController(convertorManager); controller.init(); } @@ -47,12 +49,6 @@ public class MDControllerTest { controller = null; } - - /** - * Test method for - * {@link org.opendaylight.openflowplugin.openflow.md.core.MDController#addMessageListeners} - * . - */ @Test public void testAddMessageListeners() { //clean translators diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ConcurrentSalRegistrationManagerTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ConcurrentSalRegistrationManagerTest.java index 351c566e15..ae87f009ef 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ConcurrentSalRegistrationManagerTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ConcurrentSalRegistrationManagerTest.java @@ -43,6 +43,8 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationEnqueuer import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SwitchSessionKeyOF; import org.opendaylight.openflowplugin.openflow.md.core.ThreadPoolLoggingExecutor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Capabilities; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput; @@ -60,7 +62,7 @@ public class ConcurrentSalRegistrationManagerTest { /** registration related action must end within this amount of seconds */ private static final int REGISTRATION_ACTION_TIMEOUT = 5; - protected static final SalRegistrationManager registrationManager = new SalRegistrationManager(); + protected SalRegistrationManager registrationManager; protected static final Logger LOG = LoggerFactory.getLogger(ConcurrentSalRegistrationManagerTest.class); protected static final SwitchSessionKeyOF SWITCH_SESSION_KEY_OF = new SwitchSessionKeyOF(); @@ -94,6 +96,8 @@ public class ConcurrentSalRegistrationManagerTest { */ @Before public void setUp() { + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + registrationManager = new SalRegistrationManager(convertorManager); SWITCH_SESSION_KEY_OF.setDatapathId(BigInteger.ONE); Mockito.when(context.getNotificationEnqueuer()).thenReturn(notificationEnqueuer); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImplTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImplTest.java index 34a6fe4411..1d551876e7 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImplTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/ModelDrivenSwitchImplTest.java @@ -35,6 +35,8 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDist import org.opendaylight.openflowplugin.api.openflow.md.core.session.IMessageDispatchService; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; import org.opendaylight.openflowplugin.api.openflow.statistics.MessageSpy; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; @@ -207,8 +209,9 @@ public class ModelDrivenSwitchImplTest { OpenflowPortsUtil.init(); - mdSwitchOF10 = new ModelDrivenSwitchImpl(null, null, context); - mdSwitchOF13 = new ModelDrivenSwitchImpl(null, null, context); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + mdSwitchOF10 = new ModelDrivenSwitchImpl(null, null, context, convertorManager); + mdSwitchOF13 = new ModelDrivenSwitchImpl(null, null, context, convertorManager); } /** diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcTaskUtilTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcTaskUtilTest.java index 93324e4a6b..ed51e4e73b 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcTaskUtilTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcTaskUtilTest.java @@ -10,6 +10,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.when; + import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; import java.util.Collection; @@ -26,6 +27,8 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDist import org.opendaylight.openflowplugin.api.openflow.md.core.sal.NotificationComposer; import org.opendaylight.openflowplugin.api.openflow.md.core.session.IMessageDispatchService; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutput; @@ -53,24 +56,24 @@ public class OFRpcTaskUtilTest { @Mock private ListenableFuture> updateFlowRpcResultListenableFuture; @Mock - private OFRpcTaskContext ofRpcTaskContext; - @Mock private NotificationProviderService notificationProviderService; @Mock private NotificationComposer notificationComposer; @Mock ListeningExecutorService executorService; + private ConvertorManager convertorManager; @Before - public void setup() { + public void setUp() { + convertorManager = ConvertorManagerFactory.createDefaultManager(); when(taskContext.getSession()).thenReturn(sessionContext); when(taskContext.getMessageService()).thenReturn(messageDispatchService); when(sessionContext.getNextXid()).thenReturn(new Long(10)); when(sessionContext.getFeatures()).thenReturn(featuresOutput); when(featuresOutput.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3); when(messageDispatchService.barrier(Mockito.any(BarrierInput.class), Mockito.any(SwitchConnectionDistinguisher.class))).thenReturn(resultListenableFuture); - when(ofRpcTaskContext.getRpcPool()).thenReturn(executorService); + when(taskContext.getRpcPool()).thenReturn(executorService); when(executorService.submit(Mockito.>> any())).thenReturn(updateFlowRpcResultListenableFuture); } @@ -84,7 +87,7 @@ public class OFRpcTaskUtilTest { @Test public void testHookFutureNotification() throws Exception { final AddFlowInputBuilder flowInputBuilder = new AddFlowInputBuilder(); - final OFRpcTask> addFlowInputRpcResultOFRpcTask = OFRpcTaskFactory.createAddFlowTask(ofRpcTaskContext, flowInputBuilder.build(), connectionDistinguisher); + final OFRpcTask> addFlowInputRpcResultOFRpcTask = OFRpcTaskFactory.createAddFlowTask(taskContext, flowInputBuilder.build(), connectionDistinguisher, convertorManager); OFRpcTaskUtil.hookFutureNotification(addFlowInputRpcResultOFRpcTask, updateFlowRpcResultListenableFuture, notificationProviderService, notificationComposer); } @@ -92,7 +95,7 @@ public class OFRpcTaskUtilTest { public void testChainFutureBarrier() throws Exception { final AddFlowInputBuilder flowInputBuilder = new AddFlowInputBuilder(); flowInputBuilder.setBarrier(true); - final OFRpcTask> addFlowInputRpcResultOFRpcTask = OFRpcTaskFactory.createAddFlowTask(ofRpcTaskContext, flowInputBuilder.build(), connectionDistinguisher); + final OFRpcTask> addFlowInputRpcResultOFRpcTask = OFRpcTaskFactory.createAddFlowTask(taskContext, flowInputBuilder.build(), connectionDistinguisher, convertorManager); OFRpcTaskUtil.chainFutureBarrier(addFlowInputRpcResultOFRpcTask, updateFlowRpcResultListenableFuture); } } \ No newline at end of file diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManagerTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManagerTest.java index 120107b547..a1df985628 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManagerTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/SalRegistrationManagerTest.java @@ -10,6 +10,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; + import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListeningExecutorService; import java.math.BigInteger; @@ -36,6 +37,8 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDist import org.opendaylight.openflowplugin.api.openflow.md.core.session.IMessageDispatchService; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SwitchSessionKeyOF; import org.opendaylight.openflowplugin.openflow.md.core.role.OfEntityManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; import org.opendaylight.openflowplugin.openflow.md.core.session.SessionContextOFImpl; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutput; @@ -101,9 +104,10 @@ public class SalRegistrationManagerTest { Mockito.when(features.getVersion()).thenReturn((short) 1); context.setFeatures(features); context.setNotificationEnqueuer(notificationEnqueuer); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); - OfEntityManager entManager = new OfEntityManager(entityOwnershipService,getConfig()); - mdSwitchOF13 = new ModelDrivenSwitchImpl(null, null, context); + OfEntityManager entManager = new OfEntityManager(entityOwnershipService,getConfig()); + mdSwitchOF13 = new ModelDrivenSwitchImpl(null, null, context, convertorManager); registration = new AbstractModelDrivenSwitchRegistration(mdSwitchOF13) { @Override protected void removeRegistration() { @@ -119,7 +123,7 @@ public class SalRegistrationManagerTest { messageDispatchService.flowMod(Matchers.any(FlowModInput.class), Matchers.any(SwitchConnectionDistinguisher.class))).thenReturn(Futures.immediateFuture(result)); - salRegistrationManager = new SalRegistrationManager(); + salRegistrationManager = new SalRegistrationManager(convertorManager); salRegistrationManager.setPublishService(notificationProviderService); salRegistrationManager.setDataService(dataBroker); salRegistrationManager.setRpcProviderRegistry(rpcProviderRegistry); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManagerTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManagerTest.java new file mode 100644 index 0000000000..7675e54450 --- /dev/null +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorManagerTest.java @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; +import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; +import org.opendaylight.yangtools.yang.binding.DataContainer; + +/** + * Test for {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager} + */ +@RunWith(MockitoJUnitRunner.class) +public class ConvertorManagerTest { + /** + * Test for {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager#registerConvertor(short, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor)} + * @throws Exception + */ + @Test + public void testRegisterConvertor() throws Exception { + final ConvertorManager convertorManager = new ConvertorManager(OFConstants.OFP_VERSION_1_3) + .registerConvertor(OFConstants.OFP_VERSION_1_3, new Convertor() { + @Override + public Collection> getTypes() { + return Collections.singleton(Action.class); + } + + @Override + public String convert(Action source, VersionConvertorData data) { + return null; + } + }); + + final Optional convertor = convertorManager.findConvertor(OFConstants.OFP_VERSION_1_3, Action.class); + assertTrue("Failed to find convertor for action", convertor.isPresent()); + } + + /** + * Test for {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager#convert(org.opendaylight.yangtools.yang.binding.DataContainer, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorData)} + * @throws Exception + */ + @Test + public void testConvert() throws Exception { + final ConvertorManager convertorManager = new ConvertorManager(OFConstants.OFP_VERSION_1_3) + .registerConvertor(OFConstants.OFP_VERSION_1_3, new Convertor() { + @Override + public Collection> getTypes() { + return Collections.singleton(Action.class); + } + + @Override + public String convert(Action source, VersionConvertorData data) { + return String.valueOf(source) + String.valueOf(data); + } + }); + + final Action source = new ActionBuilder().build(); + final VersionConvertorData data = new VersionConvertorData(OFConstants.OFP_VERSION_1_3); + final String expectedResult = String.valueOf(source) + String.valueOf(data); + final Optional result = convertorManager.convert(source, data); + + assertTrue("Failed to convert action to string", result.isPresent()); + assertEquals("Result and expected result do not match", result.get(), expectedResult); + } + + /** + * Test for {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager#convert(java.util.Collection, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorData)} + * @throws Exception + */ + @Test + public void testConvert1() throws Exception { + final ConvertorManager convertorManager = new ConvertorManager(OFConstants.OFP_VERSION_1_3) + .registerConvertor(OFConstants.OFP_VERSION_1_3, new Convertor, String, VersionConvertorData>() { + @Override + public Collection> getTypes() { + return Collections.singleton(Action.class); + } + + @Override + public String convert(List source, VersionConvertorData data) { + return String.valueOf(source) + String.valueOf(data); + } + }); + + final List source = Collections.singletonList(new ActionBuilder().build()); + final VersionConvertorData data = new VersionConvertorData(OFConstants.OFP_VERSION_1_3); + final String expectedResult = String.valueOf(source) + String.valueOf(data); + final Optional result = convertorManager.convert(source, data); + + assertTrue("Failed to convert action to string", result.isPresent()); + assertEquals("Result and expected result do not match", result.get(), expectedResult); + } +} \ No newline at end of file diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertorTest.java index 778e87e5d5..92acc97320 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertorTest.java @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; @@ -47,6 +48,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.grouping.BucketsList; public class GroupConvertorTest { + private ConvertorManager convertorManager; + + @Before + public void setUp() { + convertorManager = ConvertorManagerFactory.createDefaultManager(); + } /** * test of {@link GroupConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)} } @@ -510,7 +517,7 @@ public class GroupConvertorTest { } private GroupModInputBuilder convert(Group group, VersionDatapathIdConvertorData data) { - final Optional outAddGroupInputOptional = ConvertorManager.getInstance().convert(group, data); + final Optional outAddGroupInputOptional = convertorManager.convert(group, data); Assert.assertTrue("Group convertor not found", outAddGroupInputOptional.isPresent()); return outAddGroupInputOptional.get(); } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupDescStatsResponseConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupDescStatsResponseConvertorTest.java index 79628fd2db..7bff29521c 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupDescStatsResponseConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupDescStatsResponseConvertorTest.java @@ -13,6 +13,7 @@ import java.util.Collections; import java.util.List; import java.util.Optional; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; @@ -38,6 +39,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 * */ public class GroupDescStatsResponseConvertorTest { + private ConvertorManager convertorManager; + + @Before + public void setUp() { + convertorManager = ConvertorManagerFactory.createDefaultManager(); + } /** * Test empty GroupDescStats conversion @@ -236,7 +243,7 @@ public class GroupDescStatsResponseConvertorTest { } private List convert(List groupDescStats,VersionConvertorData data) { - Optional> statsListOptional = ConvertorManager.getInstance().convert(groupDescStats, data); + Optional> statsListOptional = convertorManager.convert(groupDescStats, data); return statsListOptional.orElse(Collections.emptyList()); } } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertorTest.java index 64531a5320..c0d5700585 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupStatsResponseConvertorTest.java @@ -14,7 +14,10 @@ import java.util.List; import java.util.Optional; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; +import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounter; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupId; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.multipart.reply.group.GroupStats; @@ -27,6 +30,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 * */ public class GroupStatsResponseConvertorTest { + private ConvertorManager convertorManager; + + @Before + public void setUp() { + convertorManager = ConvertorManagerFactory.createDefaultManager(); + } /** * Test empty GroupStats conversion @@ -36,7 +45,7 @@ public class GroupStatsResponseConvertorTest { List groupStats = new ArrayList<>(); Optional> salGroupStats = ConvertorManager.getInstance().convert(groupStats); + .GroupStats>> salGroupStats = convertorManager.convert(groupStats, new VersionConvertorData(OFConstants.OFP_VERSION_1_3)); Assert.assertFalse("Group stats response should be not present", salGroupStats.isPresent()); } @@ -58,7 +67,7 @@ public class GroupStatsResponseConvertorTest { groupStats.add(statsBuilder.build()); Optional> salGroupStatsOptional = ConvertorManager.getInstance().convert(groupStats); + .GroupStats>> salGroupStatsOptional = convertorManager.convert(groupStats, new VersionConvertorData(OFConstants.OFP_VERSION_1_3)); Assert.assertTrue("Group stats response convertor not found", salGroupStatsOptional.isPresent()); List salGroupStats = salGroupStatsOptional.get(); @@ -101,7 +110,7 @@ public class GroupStatsResponseConvertorTest { groupStats.add(statsBuilder.build()); Optional> salGroupStatsOptional = ConvertorManager.getInstance().convert(groupStats); + .GroupStats>> salGroupStatsOptional = convertorManager.convert(groupStats, new VersionConvertorData(OFConstants.OFP_VERSION_1_3)); Assert.assertTrue("Group stats response convertor not found", salGroupStatsOptional.isPresent()); List salGroupStats = salGroupStatsOptional.get(); @@ -154,7 +163,7 @@ public class GroupStatsResponseConvertorTest { groupStats.add(statsBuilder.build()); Optional> salGroupStatsOptional = ConvertorManager.getInstance().convert(groupStats); + .GroupStats>> salGroupStatsOptional = convertorManager.convert(groupStats, new VersionConvertorData(OFConstants.OFP_VERSION_1_3)); Assert.assertTrue("Group stats response convertor not found", salGroupStatsOptional.isPresent()); List salGroupStats = salGroupStatsOptional.get(); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConfigStatsResponseConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConfigStatsResponseConvertorTest.java index 4bb1cd3a76..93608292c9 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConfigStatsResponseConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConfigStatsResponseConvertorTest.java @@ -17,6 +17,8 @@ import java.util.Collections; import java.util.List; import java.util.Optional; import org.junit.Test; +import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterFlags; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId; @@ -74,7 +76,8 @@ public class MeterConfigStatsResponseConvertorTest { * Test of basic mapping functionality of {@link MeterConfigStatsResponseConvertor#convert(java.util.List)} } */ public void testToSALMeterConfigList() { - Optional> meterConfigsOptional = ConvertorManager.getInstance().convert(createMeterConfigList()); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + Optional> meterConfigsOptional = convertorManager.convert(createMeterConfigList(), new VersionConvertorData(OFConstants.OFP_VERSION_1_3)); List meterConfigs = meterConfigsOptional.orElse(Collections.emptyList()); assertEquals(PRESET_COUNT, meterConfigs.size()); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java index 1ba7d91726..dd4add67d1 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java @@ -14,6 +14,7 @@ import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput; @@ -42,6 +43,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands; public class MeterConvertorTest { + private ConvertorManager convertorManager; + + @Before + public void setUp() { + convertorManager = ConvertorManagerFactory.createDefaultManager(); + } + @Test public void testMeterModCommandConvertorwithAllParameters() { long BURST_SIZE = 10L; @@ -449,7 +457,7 @@ public class MeterConvertorTest { } private MeterModInputBuilder convert(Meter source, VersionConvertorData data) { - Optional outMeterModInputOptional = ConvertorManager.getInstance().convert(source, data); + Optional outMeterModInputOptional = convertorManager.convert(source, data); return outMeterModInputOptional.orElse(MeterConvertor.defaultResult(data.getVersion())); } } \ No newline at end of file diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterStatsResponseConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterStatsResponseConvertorTest.java index 16b9871ad3..33db1c1937 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterStatsResponseConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterStatsResponseConvertorTest.java @@ -16,6 +16,8 @@ import java.util.Collections; import java.util.List; import java.util.Optional; import org.junit.Test; +import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.meter.band.stats.BandStat; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStats; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsKey; @@ -61,8 +63,8 @@ public class MeterStatsResponseConvertorTest { * Test of basic mapping functionality of {@link MeterStatsResponseConvertor#convert(java.util.List)} */ public void testToSALMeterStatsList() { - - Optional> meterStatsListOptional = ConvertorManager.getInstance().convert(createMeterStatsLit()); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + Optional> meterStatsListOptional = convertorManager.convert(createMeterStatsLit(), new VersionConvertorData(OFConstants.OFP_VERSION_1_3)); List meterStatsList = meterStatsListOptional.orElse(Collections.emptyList()); assertEquals(PRESET_COUNT, meterStatsList.size()); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PacketOutConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PacketOutConvertorTest.java index cce8c34e94..ca5909d693 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PacketOutConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PacketOutConvertorTest.java @@ -52,9 +52,12 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class PacketOutConvertorTest { + private ConvertorManager convertorManager; + @Before - public void init() { + public void setUp() { OpenflowPortsUtil.init(); + convertorManager = ConvertorManagerFactory.createDefaultManager(); } /** @@ -182,7 +185,7 @@ public class PacketOutConvertorTest { ActionConvertorData actionConvertorData = new ActionConvertorData(version); actionConvertorData.setDatapathId(datapathId); - Optional> actionsOptional = ConvertorManager.getInstance().convert( + Optional> actionsOptional = convertorManager.convert( actionList, actionConvertorData); List actions = actionsOptional.orElse(Collections.emptyList()); @@ -282,7 +285,7 @@ public class PacketOutConvertorTest { } private PacketOutInput convert(TransmitPacketInput transmitPacketInput, PacketOutConvertorData data) { - Optional messageOptional = ConvertorManager.getInstance().convert(transmitPacketInput, data); + Optional messageOptional = convertorManager.convert(transmitPacketInput, data); return messageOptional.orElse(PacketOutConvertor.defaultResult(data.getVersion())); } } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertorTest.java index 6cedb3d741..98a3adaf94 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertorTest.java @@ -61,7 +61,8 @@ public class PortConvertorTest { portBld.setHardwareAddress(new MacAddress(DEFAULT_MAC_ADDRESS)); VersionConvertorData data = new VersionConvertorData(OFConstants.OFP_VERSION_1_3); - Optional portOutOptional = ConvertorManager.getInstance().convert(portBld.build(), data); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + Optional portOutOptional = convertorManager.convert(portBld.build(), data); PortModInput portOut = portOutOptional.orElse(PortConvertor.defaultResult(OFConstants.OFP_VERSION_1_3)); PortConfigV10 portConfV10 = new PortConfigV10(false, false, false, false, true, true, false); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertorTest.java index 4b2f64f5ed..720f98d163 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertorTest.java @@ -8,6 +8,9 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; @@ -16,11 +19,10 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Optional; -import junit.framework.TestCase; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.runners.MockitoJUnitRunner; +import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder; @@ -84,8 +86,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.table.properties.TableFeatureProperties; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.table.properties.TableFeaturePropertiesBuilder; -@RunWith(MockitoJUnitRunner.class) -public class TableFeaturesConvertorTest extends TestCase { +public class TableFeaturesConvertorTest { private static final TablePropertiesBuilder tablePropertiesBuilder = new TablePropertiesBuilder(); private static final Map, TableFeaturePropType> augmentationsMap = new HashMap<>(); private static final List instructionsList = new ArrayList<>(); @@ -334,8 +335,10 @@ public class TableFeaturesConvertorTest extends TestCase { .setTableFeatures(tableFeaturesList) .build(); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + Optional> tableFeaturesesOptional = - ConvertorManager.getInstance().convert(tableFeatures); + convertorManager.convert(tableFeatures, new VersionConvertorData(OFConstants.OFP_VERSION_1_3)); List tableFeatureses = tableFeaturesesOptional.orElse(Collections.emptyList()); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesResponseConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesResponseConvertorTest.java index 6a026fe468..68656a440e 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesResponseConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesResponseConvertorTest.java @@ -14,8 +14,11 @@ import java.util.Collections; import java.util.List; import java.util.Optional; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; +import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.ActionRelatedTableFeatureProperty; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.ActionRelatedTableFeaturePropertyBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.InstructionRelatedTableFeatureProperty; @@ -107,6 +110,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table * @author michal.polkorab */ public class TableFeaturesResponseConvertorTest { + private ConvertorManager convertorManager; + + @Before + public void setUp() { + convertorManager = ConvertorManagerFactory.createDefaultManager(); + } /** * Incorrect / empty input test @@ -787,7 +796,7 @@ public class TableFeaturesResponseConvertorTest { private List convert(MultipartReplyTableFeatures features) { - Optional> listOptional = ConvertorManager.getInstance().convert(features); + Optional> listOptional = convertorManager.convert(features, new VersionConvertorData(OFConstants.OFP_VERSION_1_3)); return listOptional.orElse(Collections.emptyList()); } } \ No newline at end of file diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertorTest.java index 73ef034c00..99a847487e 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertorTest.java @@ -16,6 +16,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; @@ -107,9 +108,10 @@ public class ActionConvertorTest { ActionConvertorData data = new ActionConvertorData((short) 0X4); data.setDatapathId(BigInteger.ONE); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); Optional> OFActionsList = - ConvertorManager.getInstance().convert(actions, data); + convertorManager.convert(actions, data); outputActions(OFActionsList.orElse(Collections.emptyList())); @@ -208,7 +210,6 @@ public class ActionConvertorTest { } if (action.getActionChoice() instanceof CopyTtlInCase) { - CopyTtlInCase copyTtlInCase = (CopyTtlInCase) action.getActionChoice(); Assert.assertEquals(action.getActionChoice().getImplementedInterface().getName(), CopyTtlInCase.class.getName()); } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertorV10Test.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertorV10Test.java index 2a84783aa4..f88207c7b2 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertorV10Test.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionConvertorV10Test.java @@ -14,10 +14,12 @@ import java.util.Collections; import java.util.List; import java.util.Optional; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.extension.api.path.ActionPath; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.FlowConvertorUtil; @@ -78,6 +80,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev1 * */ public class ActionConvertorV10Test { + private ConvertorManager convertorManager; + + @Before + public void setUp() { + convertorManager = ConvertorManagerFactory.createDefaultManager(); + } /** * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionConvertor#convert(java.util.List, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData)}} @@ -206,7 +214,7 @@ public class ActionConvertorV10Test { data.setIpProtocol(FlowConvertorUtil.getIpProtocolFromFlow(flow)); Optional> actionsOptional = - ConvertorManager.getInstance().convert(salActions, data); + convertorManager.convert(salActions, data); List actions = actionsOptional.orElse(Collections.emptyList()); @@ -305,7 +313,7 @@ public class ActionConvertorV10Test { Optional> mdSalActionsOptional = - ConvertorManager.getInstance().convert( + convertorManager.convert( actions, data); List> mdSalActions = ConvertorManager.getInstance().convert(actions, data); + .Action>> mdSalActions = convertorManager.convert(actions, data); Assert.assertEquals("Wrong number of output actions", 0, mdSalActions.orElse(Collections.emptyList()).size()); } @@ -269,7 +278,7 @@ public class ActionConvertorV13Test { data.setActionPath(ActionPath.FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_APPLYACTIONSCASE_APPLYACTIONS_ACTION_ACTION); Optional> mdSalActionsOptional = ConvertorManager.getInstance().convert(actions, data); + .Action>> mdSalActionsOptional = convertorManager.convert(actions, data); List mdSalActions = mdSalActionsOptional.orElse(Collections.emptyList()); @@ -502,7 +511,7 @@ public class ActionConvertorV13Test { data.setDatapathId(new BigInteger("42")); data.setIpProtocol(FlowConvertorUtil.getIpProtocolFromFlow(flow)); - Optional> actionsOptional = ConvertorManager.getInstance().convert(salActions, data); + Optional> actionsOptional = convertorManager.convert(salActions, data); List actions = actionsOptional.orElse(Collections.emptyList()); Assert.assertEquals("Wrong number of actions", 12, actions.size()); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowConvertorTest.java index 5cf33ef409..45ac82c9d6 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowConvertorTest.java @@ -14,9 +14,11 @@ import java.util.Collections; import java.util.List; import java.util.Optional; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCaseBuilder; @@ -74,6 +76,12 @@ import org.opendaylight.yangtools.yang.binding.DataContainer; * */ public class FlowConvertorTest { + private ConvertorManager convertorManager; + + @Before + public void setUp() { + convertorManager = ConvertorManagerFactory.createDefaultManager(); + } /** * Tests {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow.FlowConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.Flow, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)} } @@ -264,7 +272,7 @@ public class FlowConvertorTest { } private List convert(Flow flow, VersionDatapathIdConvertorData data) { - Optional> flowModOptional = ConvertorManager.getInstance().convert(flow, data); + Optional> flowModOptional = convertorManager.convert(flow, data); Assert.assertTrue("Flow convertor not found", flowModOptional.isPresent()); return flowModOptional.get(); } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowStatsResponseConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowStatsResponseConvertorTest.java index 1081f6df13..11003c9c0f 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowStatsResponseConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/FlowStatsResponseConvertorTest.java @@ -16,9 +16,11 @@ import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Instructions; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action; @@ -42,23 +44,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13 * Created by Martin Bobak mbobak@cisco.com on 9/18/14. */ public class FlowStatsResponseConvertorTest { + private ConvertorManager convertorManager; - private static final int PRESET_COUNT = 7; - - /** - * Test method for {@link FlowStatsResponseConvertor#wrapOF10ActionsToInstruction(java.util.List, short)} } - */ - @Test - public void testWrapOF10ActionsToInstruction() { - ActionBuilder actionBuilder = new ActionBuilder(); - List actions = new ArrayList<>(); - for (int j = 0; j < PRESET_COUNT; j++) { - actions.add(actionBuilder.build()); - } - Instructions instructions = FlowStatsResponseConvertor.wrapOF10ActionsToInstruction(actions, OFConstants.OFP_VERSION_1_3); - assertNotNull(instructions); + @Before + public void setUp() { + convertorManager = ConvertorManagerFactory.createDefaultManager(); } + private static final int PRESET_COUNT = 7; + /** * Test method for {@link FlowInstructionResponseConvertor#convert(java.util.List, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData)} } */ @@ -165,7 +159,7 @@ public class FlowStatsResponseConvertorTest { } private Instructions convert(List instructionsList, VersionConvertorData data) { - Optional instructionsOptional = ConvertorManager.getInstance().convert(instructionsList, data); + Optional instructionsOptional = convertorManager.convert(instructionsList, data); assertTrue("Flow instruction response convertor not found", instructionsOptional.isPresent()); return instructionsOptional.get(); } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactorTest.java index fe3f5d7ea5..ee16c765e5 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/flow/flowflag/FlowFlagReactorTest.java @@ -11,6 +11,8 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInputBuilder; @@ -20,6 +22,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 public class FlowFlagReactorTest { private FlowModFlags[] flowFlags; + private ConvertorManager convertorManager; /** * prepare input match @@ -31,6 +34,7 @@ public class FlowFlagReactorTest { new FlowModFlags(false, false, false, false, false), new FlowModFlags(true, false, true, false, true) }; + convertorManager = ConvertorManagerFactory.createDefaultManager(); } /** @@ -42,7 +46,7 @@ public class FlowFlagReactorTest { for (FlowModFlags fFlag : flowFlags) { target.setFlags(null); FlowFlagReactor.getInstance().convert(fFlag, - OFConstants.OFP_VERSION_1_3, target); + OFConstants.OFP_VERSION_1_3, target, convertorManager); Assert.assertNotNull(target.getFlags()); } } @@ -56,7 +60,7 @@ public class FlowFlagReactorTest { for (FlowModFlags fFlag : flowFlags) { target.setFlagsV10(null); FlowFlagReactor.getInstance().convert(fFlag, - OFConstants.OFP_VERSION_1_0, target); + OFConstants.OFP_VERSION_1_0, target, convertorManager); Assert.assertNotNull(target.getFlagsV10()); } } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorImpl2Test.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorImpl2Test.java index edaac8a445..184012c13c 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorImpl2Test.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorImpl2Test.java @@ -13,7 +13,8 @@ import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; @@ -147,6 +148,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.matc public class MatchConvertorImpl2Test { private static final MatchConvertorImpl convertor = new MatchConvertorImpl(); + private ConvertorManager convertorManager; /** * Initializes OpenflowPortsUtil @@ -154,26 +156,21 @@ public class MatchConvertorImpl2Test { @Before public void startUp() { OpenflowPortsUtil.init(); + convertorManager = ConvertorManagerFactory.createDefaultManager(); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testEmptyAndNullInput() { MatchBuilder builder = new MatchBuilder(); Match match = builder.build(); - List entries = convertor.convert(null); + List entries = convertor.convert(null, convertorManager); Assert.assertEquals("Wrong entries size", 0, entries.size()); - entries = convertor.convert(match); + entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 0, entries.size()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testConversion() { MatchBuilder builder = new MatchBuilder(); @@ -234,7 +231,7 @@ public class MatchConvertorImpl2Test { builder.setLayer3Match(ipv4MatchBuilder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 24, entries.size()); MatchEntry entry = entries.get(0); checkEntryHeader(entry, InPort.class, false); @@ -343,9 +340,6 @@ public class MatchConvertorImpl2Test { Assert.assertEquals("Wrong hasMask", hasMask, entry.isHasMask()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testIpv4MatchArbitraryBitMaskwithNoMask(){ MatchBuilder builder = new MatchBuilder(); @@ -355,7 +349,7 @@ public class MatchConvertorImpl2Test { builder.setLayer3Match(ipv4MatchArbitraryBitMaskBuilder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 2, entries.size()); MatchEntry entry = entries.get(0); @@ -366,9 +360,6 @@ public class MatchConvertorImpl2Test { Assert.assertEquals("wrong Ipv4Address destination", "10.1.1.1",((Ipv4DstCase) entry.getMatchEntryValue()).getIpv4Dst().getIpv4Address().getValue()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testIpv4MatchArbitraryBitMaskwithMask(){ MatchBuilder builder = new MatchBuilder(); @@ -380,7 +371,7 @@ public class MatchConvertorImpl2Test { builder.setLayer3Match(ipv4MatchArbitraryBitMaskBuilder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 2, entries.size()); MatchEntry entry = entries.get(0); @@ -391,9 +382,6 @@ public class MatchConvertorImpl2Test { Assert.assertEquals("wrong Ipv4Adress destination", "10.1.1.1",((Ipv4DstCase) entry.getMatchEntryValue()).getIpv4Dst().getIpv4Address().getValue()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testUdpMatchConversion() { MatchBuilder builder = new MatchBuilder(); @@ -403,7 +391,7 @@ public class MatchConvertorImpl2Test { builder.setLayer4Match(udpMatchBuilder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 2, entries.size()); MatchEntry entry = entries.get(0); checkEntryHeader(entry, UdpSrc.class, false); @@ -415,9 +403,6 @@ public class MatchConvertorImpl2Test { .getUdpDst().getPort().getValue().intValue()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testTunnelIpv4MatchConversion() { MatchBuilder builder = new MatchBuilder(); @@ -427,7 +412,7 @@ public class MatchConvertorImpl2Test { builder.setLayer3Match(tunnelIpv4MatchBuilder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 2, entries.size()); MatchEntry entry = entries.get(0); checkEntryHeader(entry, Ipv4Src.class, false); @@ -439,9 +424,6 @@ public class MatchConvertorImpl2Test { .getIpv4Address().getValue()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testSctpMatchConversion() { MatchBuilder builder = new MatchBuilder(); @@ -451,7 +433,7 @@ public class MatchConvertorImpl2Test { builder.setLayer4Match(sctpMatchBuilder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 2, entries.size()); MatchEntry entry = entries.get(0); checkEntryHeader(entry, SctpSrc.class, false); @@ -463,9 +445,6 @@ public class MatchConvertorImpl2Test { .getSctpDst().getPort().getValue().intValue()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testArpMatchConversion() { MatchBuilder builder = new MatchBuilder(); @@ -482,7 +461,7 @@ public class MatchConvertorImpl2Test { builder.setLayer3Match(arpBuilder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 5, entries.size()); MatchEntry entry = entries.get(0); checkEntryHeader(entry, ArpOp.class, false); @@ -506,9 +485,6 @@ public class MatchConvertorImpl2Test { .getArpTha().getMacAddress().getValue()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testArpMatchConversionWithMasks() { MatchBuilder builder = new MatchBuilder(); @@ -527,7 +503,7 @@ public class MatchConvertorImpl2Test { builder.setLayer3Match(arpBuilder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 4, entries.size()); MatchEntry entry = entries.get(0); entry = entries.get(0); @@ -556,9 +532,6 @@ public class MatchConvertorImpl2Test { ((ArpThaCase) entry.getMatchEntryValue()).getArpTha().getMask()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testIpv6MatchConversion() { MatchBuilder builder = new MatchBuilder(); @@ -577,7 +550,7 @@ public class MatchConvertorImpl2Test { builder.setLayer3Match(ipv6Builder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 7, entries.size()); MatchEntry entry = entries.get(0); /* Due to conversion ambiguities, we always get "has mask" because @@ -612,9 +585,6 @@ public class MatchConvertorImpl2Test { true, false, true, false), ((Ipv6ExthdrCase) entry.getMatchEntryValue()).getIpv6Exthdr().getPseudoField()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testIpv6MatchConversionWithMasks() { MatchBuilder builder = new MatchBuilder(); @@ -624,7 +594,7 @@ public class MatchConvertorImpl2Test { builder.setLayer3Match(ipv6Builder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 2, entries.size()); MatchEntry entry = entries.get(0); checkEntryHeader(entry, Ipv6Src.class, true); @@ -641,9 +611,6 @@ public class MatchConvertorImpl2Test { ((Ipv6DstCase) entry.getMatchEntryValue()).getIpv6Dst().getMask()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testIpv6ExtHeaderConversion() { MatchBuilder builder = new MatchBuilder(); @@ -655,7 +622,7 @@ public class MatchConvertorImpl2Test { builder.setLayer3Match(ipv6Builder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 1, entries.size()); MatchEntry entry = entries.get(0); checkEntryHeader(entry, Ipv6Exthdr.class, true); @@ -665,9 +632,6 @@ public class MatchConvertorImpl2Test { ((Ipv6ExthdrCase) entry.getMatchEntryValue()).getIpv6Exthdr().getMask()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testConversionWithMasks() { MatchBuilder builder = new MatchBuilder(); @@ -707,7 +671,7 @@ public class MatchConvertorImpl2Test { builder.setLayer3Match(ipv4MatchBuilder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 8, entries.size()); MatchEntry entry = entries.get(0); checkEntryHeader(entry, Metadata.class, true); @@ -761,9 +725,6 @@ public class MatchConvertorImpl2Test { ((TunnelIdCase) entry.getMatchEntryValue()).getTunnelId().getMask()); } - /** - * Test {@link Convertor#convert(Object)} - */ @Test public void testIpv6MatchArbitraryBitMask(){ MatchBuilder builder = new MatchBuilder(); @@ -775,7 +736,7 @@ public class MatchConvertorImpl2Test { builder.setLayer3Match(ipv6MatchArbitraryBitMaskBuilder.build()); Match match = builder.build(); - List entries = convertor.convert(match); + List entries = convertor.convert(match, convertorManager); Assert.assertEquals("Wrong entries size", 2, entries.size()); MatchEntry entry = entries.get(0); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorV10ImplTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorV10ImplTest.java index f454f4de00..639d6f31c1 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorV10ImplTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorV10ImplTest.java @@ -9,9 +9,12 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match; import static org.junit.Assert.assertEquals; + import java.math.BigInteger; import org.junit.Before; import org.junit.Test; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpVersion; @@ -57,10 +60,12 @@ public class MatchConvertorV10ImplTest { private static final VlanId DEFAULT_VLAN_ID = new VlanId(42); private static final Ipv4Address DEFAULT_IPV4_ADDRESS = new Ipv4Address("10.0.0.1"); private static final short DEFAULT_MASK = 24; + private ConvertorManager convertorManager; @Before public void setup() { OpenflowPortsUtil.init(); + convertorManager = ConvertorManagerFactory.createDefaultManager(); } @Test @@ -68,7 +73,7 @@ public class MatchConvertorV10ImplTest { * Test method for {@link MatchConvertorV10Impl#convert(Match,BigInteger)} */ public void testConvert() { - MatchV10 matchV10 = matchConvertorV10.convert(createL4UdpMatch().build()); + MatchV10 matchV10 = matchConvertorV10.convert(createL4UdpMatch().build(), null); assertEquals(ZERO_MAC, matchV10.getDlDst()); assertEquals(FF_MAC, matchV10.getDlSrc()); @@ -83,24 +88,24 @@ public class MatchConvertorV10ImplTest { assertEquals(DEFAULT_PORT.getValue().intValue(), matchV10.getTpSrc().intValue()); assertEquals(DEFAULT_PORT.getValue().intValue(), matchV10.getTpDst().intValue()); - matchV10 = matchConvertorV10.convert(createL4TcpMatch().build()); + matchV10 = matchConvertorV10.convert(createL4TcpMatch().build(), null); assertEquals(DEFAULT_PORT.getValue().intValue(), matchV10.getTpSrc().intValue()); assertEquals(DEFAULT_PORT.getValue().intValue(), matchV10.getTpDst().intValue()); - matchV10 = matchConvertorV10.convert(createVlanTcpMatch().build()); + matchV10 = matchConvertorV10.convert(createVlanTcpMatch().build(), null); assertEquals(DEFAULT_VLAN_ID.getValue().intValue(), matchV10.getDlVlan().intValue()); } /** * ICMPv4 match test for - * {@link MatchConvertorV10Impl#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match)}. + * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertReactorConvertor#convert(Object, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor)}. */ @Test public void testConvertIcmpv4() { MatchBuilder matchBuilder = createMatchBuilderWithDefaults(); Match match = matchBuilder.build(); - MatchV10 matchV10 = matchConvertorV10.convert(match); + MatchV10 matchV10 = matchConvertorV10.convert(match, convertorManager); Integer zero = 0; boolean wcTpSrc = true; boolean wcTpDst = true; @@ -131,7 +136,7 @@ public class MatchConvertorV10ImplTest { wcTpDst, wcTpSrc); match = matchBuilder.setIcmpv4Match(icmpv4MatchBuilder.build()). build(); - matchV10 = matchConvertorV10.convert(match); + matchV10 = matchConvertorV10.convert(match, convertorManager); assertEquals(ZERO_MAC, matchV10.getDlDst()); assertEquals(FF_MAC, matchV10.getDlSrc()); assertEquals(0, matchV10.getDlType().intValue()); @@ -157,7 +162,7 @@ public class MatchConvertorV10ImplTest { wcTpDst, wcTpSrc); match = matchBuilder.setIcmpv4Match(icmpv4MatchBuilder.build()). build(); - matchV10 = matchConvertorV10.convert(match); + matchV10 = matchConvertorV10.convert(match, convertorManager); assertEquals(ZERO_MAC, matchV10.getDlDst()); assertEquals(FF_MAC, matchV10.getDlSrc()); assertEquals(0, matchV10.getDlType().intValue()); @@ -185,7 +190,7 @@ public class MatchConvertorV10ImplTest { wcTpDst, wcTpSrc); match = matchBuilder.setIcmpv4Match(icmpv4MatchBuilder.build()). build(); - matchV10 = matchConvertorV10.convert(match); + matchV10 = matchConvertorV10.convert(match, convertorManager); assertEquals(ZERO_MAC, matchV10.getDlDst()); assertEquals(FF_MAC, matchV10.getDlSrc()); assertEquals(0, matchV10.getDlType().intValue()); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactorTest.java index e2d7de2439..eba0299e43 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactorTest.java @@ -11,6 +11,8 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder; @@ -23,8 +25,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 * match conversion and injection test */ public class MatchReactorTest { - private MatchBuilder matchBuilder; + private ConvertorManager convertorManager; /** * prepare input match @@ -37,6 +39,7 @@ public class MatchReactorTest { ethernetTypeBuilder.setType(new EtherType(42L)); ethernetMatchBuilder.setEthernetType(ethernetTypeBuilder.build()); matchBuilder.setEthernetMatch(ethernetMatchBuilder.build()); + convertorManager = ConvertorManagerFactory.createDefaultManager(); } /** @@ -46,7 +49,7 @@ public class MatchReactorTest { public void testMatchConvertorV13_flow() { FlowModInputBuilder target = new FlowModInputBuilder(); MatchReactor.getInstance().convert(matchBuilder.build(), - OFConstants.OFP_VERSION_1_3, target); + OFConstants.OFP_VERSION_1_3, target, convertorManager); Assert.assertNotNull(target.getMatch()); } @@ -57,7 +60,7 @@ public class MatchReactorTest { public void testMatchConvertorV10_flow() { FlowModInputBuilder target = new FlowModInputBuilder(); MatchReactor.getInstance().convert(matchBuilder.build(), - OFConstants.OFP_VERSION_1_0, target); + OFConstants.OFP_VERSION_1_0, target, convertorManager); Assert.assertNotNull(target.getMatchV10()); } @@ -69,7 +72,7 @@ public class MatchReactorTest { public void testMatchConvertorV13_mpRequestFlow() { MultipartRequestFlowBuilder target = new MultipartRequestFlowBuilder(); MatchReactor.getInstance().convert(matchBuilder.build(), - OFConstants.OFP_VERSION_1_3, target); + OFConstants.OFP_VERSION_1_3, target, convertorManager); Assert.assertNotNull(target.getMatch()); } @@ -80,7 +83,7 @@ public class MatchReactorTest { public void testMatchConvertorV10_mpRequestFlow() { MultipartRequestFlowBuilder target = new MultipartRequestFlowBuilder(); MatchReactor.getInstance().convert(matchBuilder.build(), - OFConstants.OFP_VERSION_1_0, target); + OFConstants.OFP_VERSION_1_0, target, convertorManager); Assert.assertNotNull(target.getMatchV10()); } @@ -88,7 +91,7 @@ public class MatchReactorTest { public void testMatchConvertorV10_null() { MultipartRequestAggregateBuilder target = new MultipartRequestAggregateBuilder(); MatchReactor.getInstance().convert(null, - OFConstants.OFP_VERSION_1_0, target); + OFConstants.OFP_VERSION_1_0, target, convertorManager); Assert.assertNotNull(target.getMatchV10()); } @@ -99,7 +102,7 @@ public class MatchReactorTest { public void testMatchConvertorV13_mpRequestAggregate() { MultipartRequestAggregateBuilder target = new MultipartRequestAggregateBuilder(); MatchReactor.getInstance().convert(matchBuilder.build(), - OFConstants.OFP_VERSION_1_3, target); + OFConstants.OFP_VERSION_1_3, target, convertorManager); Assert.assertNotNull(target.getMatch()); } @@ -107,7 +110,7 @@ public class MatchReactorTest { public void testMatchConvertorV13_null() { MultipartRequestAggregateBuilder target = new MultipartRequestAggregateBuilder(); MatchReactor.getInstance().convert(null, - OFConstants.OFP_VERSION_1_3, target); + OFConstants.OFP_VERSION_1_3, target, convertorManager); Assert.assertNotNull(target.getMatch()); Assert.assertEquals(0, target.getMatch().getMatchEntry().size()); } @@ -119,7 +122,7 @@ public class MatchReactorTest { public void testMatchConvertorV10_mpRequestAggregate() { MultipartRequestAggregateBuilder target = new MultipartRequestAggregateBuilder(); MatchReactor.getInstance().convert(matchBuilder.build(), - OFConstants.OFP_VERSION_1_0, target); + OFConstants.OFP_VERSION_1_0, target, convertorManager); Assert.assertNotNull(target.getMatchV10()); } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertor2Test.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertor2Test.java index 361a69ad46..e91667ca88 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertor2Test.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertor2Test.java @@ -17,6 +17,7 @@ import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp; @@ -161,12 +162,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.matc */ public class MatchResponseConvertor2Test { + private ConvertorManager convertorManager; + /** * Initializes OpenflowPortsUtil */ @Before public void startUp() { OpenflowPortsUtil.init(); + convertorManager = ConvertorManagerFactory.createDefaultManager(); } /** @@ -174,7 +178,7 @@ public class MatchResponseConvertor2Test { */ @Test(expected = NullPointerException.class) public void testEmptyMatch() { - final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_0); + final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3); datapathIdConvertorData.setDatapathId(new BigInteger("42")); convert(new MatchBuilder().build(), datapathIdConvertorData); } @@ -191,7 +195,7 @@ public class MatchResponseConvertor2Test { builder.setMatchEntry(entries); final Match match = builder.build(); - final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_0); + final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3); datapathIdConvertorData.setDatapathId(new BigInteger("42")); final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow @@ -500,7 +504,7 @@ public class MatchResponseConvertor2Test { final Match match = builder.build(); - final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_0); + final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3); datapathIdConvertorData.setDatapathId(new BigInteger("42")); final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow @@ -650,7 +654,7 @@ public class MatchResponseConvertor2Test { builder.setMatchEntry(entries); final Match match = builder.build(); - final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_0); + final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3); datapathIdConvertorData.setDatapathId(new BigInteger("42")); final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow @@ -1604,7 +1608,7 @@ public class MatchResponseConvertor2Test { private org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow .MatchBuilder convert(Match match, VersionDatapathIdConvertorData data) { final Optional salMatchOptional = ConvertorManager.getInstance().convert(match, data); + .MatchBuilder> salMatchOptional = convertorManager.convert(match, data); return salMatchOptional .orElse(new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder()); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertorTest.java index b806e1263c..c945cd4c8a 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchResponseConvertorTest.java @@ -10,16 +10,16 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertTrue; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import java.util.Optional; -import org.junit.BeforeClass; +import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; @@ -77,10 +77,12 @@ public class MatchResponseConvertorTest { Ipv4Address.getDefaultInstance("10.1.2.3"); private static final int DL_VLAN_NONE = 0xffff; + private ConvertorManager convertorManager; - @BeforeClass - public static void setUp() { + @Before + public void setUp() { OpenflowPortsUtil.init(); + convertorManager = ConvertorManagerFactory.createDefaultManager(); } /** @@ -344,13 +346,13 @@ public class MatchResponseConvertorTest { } private MatchBuilder convert(MatchV10 match, VersionDatapathIdConvertorData data) { - final Optional salMatchOptional = ConvertorManager.getInstance().convert(match, data); + final Optional salMatchOptional = convertorManager.convert(match, data); return salMatchOptional.orElse(new MatchBuilder()); } private MatchBuilder convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match match, VersionDatapathIdConvertorData data) { - final Optional salMatchOptional = ConvertorManager.getInstance().convert(match, data); + final Optional salMatchOptional = convertorManager.convert(match, data); return salMatchOptional.orElse(new MatchBuilder()); } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchV10ResponseConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchV10ResponseConvertorTest.java index a8198d334c..ffdc503296 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchV10ResponseConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchV10ResponseConvertorTest.java @@ -15,6 +15,7 @@ import org.junit.Before; import org.junit.Test; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; @@ -37,12 +38,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.matc */ public class MatchV10ResponseConvertorTest { + private ConvertorManager convertorManager; + /** * Initializes OpenflowPortsUtil */ @Before public void startUp() { OpenflowPortsUtil.init(); + convertorManager = ConvertorManagerFactory.createDefaultManager(); } /** @@ -815,7 +819,7 @@ public class MatchV10ResponseConvertorTest { } private MatchBuilder convert(MatchV10 match, VersionDatapathIdConvertorData data) { - final Optional salMatchOptional = ConvertorManager.getInstance().convert(match, data); + final Optional salMatchOptional = convertorManager.convert(match, data); return salMatchOptional.orElse(new MatchBuilder()); } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/SessionManagerOFImplTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/SessionManagerOFImplTest.java index 4deaf12812..9a94c3a6ce 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/SessionManagerOFImplTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/session/SessionManagerOFImplTest.java @@ -8,6 +8,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.session; import static org.mockito.Matchers.any; + import com.google.common.util.concurrent.ListeningExecutorService; import java.math.BigInteger; import java.net.InetSocketAddress; @@ -34,6 +35,8 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.session.SwitchSessio import org.opendaylight.openflowplugin.openflow.md.core.role.OfEntityManager; import org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl; import org.opendaylight.openflowplugin.openflow.md.core.sal.SalRegistrationManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutputBuilder; import org.opendaylight.yangtools.yang.binding.RpcService; @@ -91,7 +94,8 @@ public class SessionManagerOFImplTest { }); // session listener - prepare registration and notification mockery - final SalRegistrationManager sessionListener = new SalRegistrationManager(); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + final SalRegistrationManager sessionListener = new SalRegistrationManager(convertorManager); sessionListener.setPublishService(notificationProviderService); sessionListener.setRpcProviderRegistry(rpcProviderRegistry); sessionListener.setDataService(dataService); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/FlowRemovedTranslatorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/FlowRemovedTranslatorTest.java index a226c15796..6294337349 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/FlowRemovedTranslatorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/FlowRemovedTranslatorTest.java @@ -10,6 +10,7 @@ package org.opendaylight.openflowplugin.openflow.md.core.translator; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.when; + import java.math.BigInteger; import java.util.ArrayList; import java.util.List; @@ -24,6 +25,8 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDist import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; import org.opendaylight.openflowplugin.openflow.md.core.extension.ExtensionConverterManagerImpl; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.core.session.SessionManagerOFImpl; import org.opendaylight.openflowplugin.openflow.md.util.ByteUtil; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; @@ -161,11 +164,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput; import org.opendaylight.yangtools.yang.binding.DataObject; - @RunWith(MockitoJUnitRunner.class) -public class FlowRemovedTranslatorTest extends FlowRemovedTranslator { +public class FlowRemovedTranslatorTest { - private static final FlowRemovedTranslator flowRemovedTranslator = new FlowRemovedTranslator(); + private FlowRemovedTranslator flowRemovedTranslator; private static final BigInteger DATA_PATH_ID = BigInteger.valueOf(42); public static final Ipv6Address IPV_6_ADDRESS = new Ipv6Address("2001:0DB8:AC10:FE01:0000:0000:0000:0000"); private static final byte[] IPV_6_ADDRESS_MASK = ByteUtil.unsignedIntToBytes(new Long(64)); @@ -538,6 +540,8 @@ public class FlowRemovedTranslatorTest extends FlowRemovedTranslator { @Before public void setup() { + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + flowRemovedTranslator = new FlowRemovedTranslator(convertorManager); when(sessionContext.getPrimaryConductor()).thenReturn(connectionConductor); when(connectionConductor.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3); when(sessionContext.getFeatures()).thenReturn(featuresOutput); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTableFeaturesToTableUpdatedTranslatorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTableFeaturesToTableUpdatedTranslatorTest.java index 56799b28cf..bb046425da 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTableFeaturesToTableUpdatedTranslatorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTableFeaturesToTableUpdatedTranslatorTest.java @@ -13,15 +13,19 @@ import static org.mockito.Mockito.when; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; - import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; +import org.opendaylight.openflowplugin.api.OFConstants; +import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.NextTableRelatedTableFeatureProperty; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.NextTableRelatedTableFeaturePropertyBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.table.features.properties.container.table.feature.properties.NextTableIds; @@ -50,21 +54,26 @@ import org.opendaylight.yangtools.yang.binding.DataObject; * @author michal.polkorab * */ +@RunWith(MockitoJUnitRunner.class) public class MultipartReplyTableFeaturesToTableUpdatedTranslatorTest { @Mock SwitchConnectionDistinguisher cookie; @Mock SessionContext sc; @Mock GetFeaturesOutput features; + @Mock ConnectionConductor conductor; - MultipartReplyTableFeaturesToTableUpdatedTranslator translator = new MultipartReplyTableFeaturesToTableUpdatedTranslator(); + MultipartReplyTableFeaturesToTableUpdatedTranslator translator; /** * Initializes mocks */ @Before public void startUp() { - MockitoAnnotations.initMocks(this); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + translator = new MultipartReplyTableFeaturesToTableUpdatedTranslator(convertorManager); + when(sc.getPrimaryConductor()).thenReturn(conductor); when(sc.getFeatures()).thenReturn(features); + when(conductor.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3); when(features.getDatapathId()).thenReturn(new BigInteger("42")); } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFifthTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFifthTest.java index d625aa38e1..6413795b4f 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFifthTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFifthTest.java @@ -16,12 +16,16 @@ import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterConfigStatsUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterStatisticsUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats; @@ -56,6 +60,7 @@ import org.opendaylight.yangtools.yang.binding.DataObject; /** * @author michal.polkorab */ +@RunWith(MockitoJUnitRunner.class) public class MultipartReplyTranslatorFifthTest { @Mock @@ -67,13 +72,15 @@ public class MultipartReplyTranslatorFifthTest { @Mock GetFeaturesOutput features; - MultipartReplyTranslator translator = new MultipartReplyTranslator(); + MultipartReplyTranslator translator; /** * Initializes mocks */ @Before public void startUp() { + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + translator = new MultipartReplyTranslator(convertorManager); MockitoAnnotations.initMocks(this); when(sc.getPrimaryConductor()).thenReturn(conductor); when(conductor.getVersion()).thenReturn((short) EncodeConstants.OF13_VERSION_ID); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFirstTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFirstTest.java index 5abafe5ce3..f4051a80c8 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFirstTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFirstTest.java @@ -13,16 +13,18 @@ import static org.mockito.Mockito.when; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; - import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; -import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; +import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.and.statistics.map.list.FlowAndStatisticsMapList; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match; @@ -48,6 +50,7 @@ import org.opendaylight.yangtools.yang.binding.DataObject; * @author michal.polkorab * */ +@RunWith(MockitoJUnitRunner.class) public class MultipartReplyTranslatorFirstTest { @Mock SwitchConnectionDistinguisher cookie; @@ -55,14 +58,15 @@ public class MultipartReplyTranslatorFirstTest { @Mock ConnectionConductor conductor; @Mock GetFeaturesOutput features; - MultipartReplyTranslator translator = new MultipartReplyTranslator(); + MultipartReplyTranslator translator; /** * Initializes mocks */ @Before public void startUp() { - MockitoAnnotations.initMocks(this); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + translator = new MultipartReplyTranslator(convertorManager); when(sc.getPrimaryConductor()).thenReturn(conductor); when(conductor.getVersion()).thenReturn((short) EncodeConstants.OF13_VERSION_ID); when(sc.getFeatures()).thenReturn(features); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFourthTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFourthTest.java index af8fa893c8..412b67cbcb 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFourthTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorFourthTest.java @@ -9,18 +9,22 @@ package org.opendaylight.openflowplugin.openflow.md.core.translator; import static org.mockito.Mockito.when; + import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupDescStatsUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatisticsUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes; @@ -57,6 +61,7 @@ import org.opendaylight.yangtools.yang.binding.DataObject; * @author michal.polkorab * */ +@RunWith(MockitoJUnitRunner.class) public class MultipartReplyTranslatorFourthTest { @Mock SwitchConnectionDistinguisher cookie; @@ -64,14 +69,15 @@ public class MultipartReplyTranslatorFourthTest { @Mock ConnectionConductor conductor; @Mock GetFeaturesOutput features; - MultipartReplyTranslator translator = new MultipartReplyTranslator(); + MultipartReplyTranslator translator; /** * Initializes mocks */ @Before public void startUp() { - MockitoAnnotations.initMocks(this); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + translator = new MultipartReplyTranslator(convertorManager); when(sc.getPrimaryConductor()).thenReturn(conductor); when(conductor.getVersion()).thenReturn((short) EncodeConstants.OF13_VERSION_ID); when(sc.getFeatures()).thenReturn(features); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorSecondTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorSecondTest.java index b1ea6ff452..737d2ebbea 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorSecondTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorSecondTest.java @@ -13,16 +13,18 @@ import static org.mockito.Mockito.when; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; - import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; -import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; +import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.AggregateFlowStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupFeaturesUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterFeaturesUpdated; @@ -49,6 +51,7 @@ import org.opendaylight.yangtools.yang.binding.DataObject; * @author michal.polkorab * */ +@RunWith(MockitoJUnitRunner.class) public class MultipartReplyTranslatorSecondTest { @Mock SwitchConnectionDistinguisher cookie; @@ -56,14 +59,15 @@ public class MultipartReplyTranslatorSecondTest { @Mock ConnectionConductor conductor; @Mock GetFeaturesOutput features; - MultipartReplyTranslator translator = new MultipartReplyTranslator(); + MultipartReplyTranslator translator; /** * Initializes mocks */ @Before public void startUp() { - MockitoAnnotations.initMocks(this); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + translator = new MultipartReplyTranslator(convertorManager); when(sc.getPrimaryConductor()).thenReturn(conductor); when(conductor.getVersion()).thenReturn((short) EncodeConstants.OF13_VERSION_ID); when(sc.getFeatures()).thenReturn(features); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorThirdTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorThirdTest.java index 24aa3849d0..eec1af26c7 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorThirdTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/MultipartReplyTranslatorThirdTest.java @@ -13,17 +13,19 @@ import static org.mockito.Mockito.when; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; - import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.openflowjava.protocol.api.util.BinContent; import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; -import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor; +import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory; import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMap; @@ -56,6 +58,7 @@ import org.opendaylight.yangtools.yang.binding.DataObject; * @author michal.polkorab * */ +@RunWith(MockitoJUnitRunner.class) public class MultipartReplyTranslatorThirdTest { @Mock SwitchConnectionDistinguisher cookie; @@ -63,14 +66,15 @@ public class MultipartReplyTranslatorThirdTest { @Mock ConnectionConductor conductor; @Mock GetFeaturesOutput features; - MultipartReplyTranslator translator = new MultipartReplyTranslator(); + MultipartReplyTranslator translator; /** * Initializes mocks */ @Before public void startUp() { - MockitoAnnotations.initMocks(this); + final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager(); + translator = new MultipartReplyTranslator(convertorManager); when(sc.getPrimaryConductor()).thenReturn(conductor); when(conductor.getVersion()).thenReturn((short) EncodeConstants.OF13_VERSION_ID); when(sc.getFeatures()).thenReturn(features); -- 2.36.6