X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fimpl%2Fcommon%2FMultipartRequestInputFactory.java;h=5a3d6813d2d9ee25d42d5f29087dc49a62bbe723;hb=refs%2Fchanges%2F72%2F73472%2F2;hp=1b0e74e6c14a15cdad584b1f019d5b76a749b6f7;hpb=7092c47e25a93adbf92ab51769ae7ae6ae4639da;p=openflowplugin.git diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactory.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactory.java index 1b0e74e6c1..5a3d6813d2 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactory.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactory.java @@ -8,12 +8,21 @@ package org.opendaylight.openflowplugin.impl.common; -import com.google.common.base.Preconditions; -import java.math.BigInteger; -import javax.annotation.CheckForNull; import javax.annotation.Nonnull; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.impl.util.MatchUtil; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.multipart.request.multipart.request.body.MultipartRequestDescBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.multipart.request.multipart.request.body.MultipartRequestFlowTableStatsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.multipart.request.multipart.request.body.MultipartRequestPortDescBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.multipart.request.multipart.request.body.MultipartRequestFlowAggregateStatsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.multipart.request.multipart.request.body.MultipartRequestFlowStatsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.multipart.request.multipart.request.body.multipart.request.flow.stats.FlowStatsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.multipart.request.multipart.request.body.MultipartRequestGroupDescBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.multipart.request.multipart.request.body.MultipartRequestGroupFeaturesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.multipart.request.multipart.request.body.MultipartRequestGroupStatsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.multipart.request.multipart.request.body.MultipartRequestMeterFeaturesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.multipart.request.multipart.request.body.MultipartRequestMeterStatsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.MultipartRequestBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupId; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags; @@ -23,36 +32,22 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.matc import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.v10.grouping.MatchV10Builder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.MultipartRequestBody; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregateCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregateCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestDescCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestDescCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlowCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlowCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupDescCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupDescCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupFeaturesCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupFeaturesCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterFeaturesCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterFeaturesCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortDescCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortDescCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStatsCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStatsCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueueCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueueCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableFeaturesCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableFeaturesCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.flow._case.MultipartRequestFlowBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.group._case.MultipartRequestGroupBuilder; @@ -61,19 +56,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.port.stats._case.MultipartRequestPortStatsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.queue._case.MultipartRequestQueueBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.MultipartRequestTableFeaturesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.experimenter.types.rev151020.multipart.request.multipart.request.body.MultipartRequestExperimenterBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.multipart.request.multipart.request.body.MultipartRequestQueueStatsBuilder; /** * openflowplugin-impl * org.opendaylight.openflowplugin.impl.common - *

* Factory class is designed for easy producing a MultipartRequestInput. Class should help * to understand a relationship between {@link MultipartType} and {@link MultipartRequestInput} * without touch OF specification 1.3.2 - a section 7.3.5. Multipart Messages - * see also OpenFlow 1.3.2 - * - * @author Vaclav Demcak - *

- * Created: Mar 27, 2015 */ public final class MultipartRequestInputFactory { @@ -82,57 +73,79 @@ public final class MultipartRequestInputFactory { } /** - * Method validate input and makes {@link MultipartRequestInput} from input values. Method set - * a moreRequest marker to false and it creates default empty {@link MultipartRequestBody} + * Method validate input and makes + * {@link org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader} + * from input values. Method set a moreRequest marker to false and it creates default empty multipart request body * by {@link MultipartType} * - * @param xid - * @param type - * @param ofVersion - * @return + * @param xid xid + * @param version OpenFlow version + * @param type multipart type + * @param canUseSingleLayer can use single layer serialization + * @return multipart request */ - public static MultipartRequestInput makeMultipartRequestInput(final long xid, final short ofVersion, - @Nonnull final MultipartType type) { - return maker(xid, type, ofVersion, false, makeDefaultEmptyRequestBody(type, ofVersion)); + public static OfHeader makeMultipartRequest(final long xid, + final short version, + @Nonnull final MultipartType type, + final boolean canUseSingleLayer) { + return canUseSingleLayer + ? new MultipartRequestBuilder() + .setRequestMore(false) + .setVersion(version) + .setXid(xid) + .setMultipartRequestBody(makeDefaultSingleLayerBody(type)) + .build() + : new MultipartRequestInputBuilder() + .setFlags(new MultipartRequestFlags(false)) + .setMultipartRequestBody(makeDefaultMultiLayerBody(type, version)) + .setVersion(version) + .setType(type) + .setXid(xid) + .build(); } - - - /** - * Method build {@link MultipartRequestInput} from input values. It is private because we would like - * to validate only what is really need to be validate. - * - * @param xid - * @param type - * @param ofVersion - * @param moreRequests - * @param body - * @return - */ - private static MultipartRequestInput maker(final long xid, final MultipartType type, - final short ofVersion, final boolean moreRequests, final MultipartRequestBody body) { - final MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder(); - builder.setFlags(new MultipartRequestFlags(moreRequests)); - builder.setMultipartRequestBody(body); - builder.setVersion(ofVersion); - builder.setType(type); - builder.setXid(xid); - return builder.build(); + private static org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.request + .MultipartRequestBody makeDefaultSingleLayerBody(final MultipartType type) { + switch (type) { + case OFPMPDESC: return new MultipartRequestDescBuilder().build(); + case OFPMPFLOW: return new MultipartRequestFlowStatsBuilder().setFlowStats(new FlowStatsBuilder() + .setMatch(new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow + .MatchBuilder().build()).build()).build(); + case OFPMPAGGREGATE: return new MultipartRequestFlowAggregateStatsBuilder().build(); + case OFPMPTABLE: return new MultipartRequestFlowTableStatsBuilder().build(); + case OFPMPPORTSTATS: return new org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics + .rev131214.multipart.request.multipart.request.body.MultipartRequestPortStatsBuilder().build(); + case OFPMPQUEUE: return new MultipartRequestQueueStatsBuilder().build(); + case OFPMPGROUP: return new MultipartRequestGroupStatsBuilder().build(); + case OFPMPGROUPDESC: return new MultipartRequestGroupDescBuilder().build(); + case OFPMPGROUPFEATURES: return new MultipartRequestGroupFeaturesBuilder().build(); + case OFPMPMETER: return new MultipartRequestMeterStatsBuilder().build(); + case OFPMPMETERCONFIG: return new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics + .rev131111.multipart.request.multipart.request.body.MultipartRequestMeterConfigBuilder().build(); + case OFPMPMETERFEATURES: return new MultipartRequestMeterFeaturesBuilder().build(); + case OFPMPTABLEFEATURES: return new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types + .rev131026.multipart.request.multipart.request.body.MultipartRequestTableFeaturesBuilder().build(); + case OFPMPPORTDESC: return new MultipartRequestPortDescBuilder().build(); + case OFPMPEXPERIMENTER: return new MultipartRequestExperimenterBuilder().build(); + default:throw new IllegalArgumentException("Unknown MultipartType " + type); + } } - private static MultipartRequestBody makeDefaultEmptyRequestBody(@CheckForNull final MultipartType type, @CheckForNull final short version) { - Preconditions.checkArgument(type != null, "Multipart Request can not by build without type!"); + private static MultipartRequestBody makeDefaultMultiLayerBody(@Nonnull final MultipartType type, + final short version) { switch (type) { case OFPMPDESC: return new MultipartRequestDescCaseBuilder().build(); case OFPMPFLOW: - MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder(); + final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder + = new MultipartRequestFlowCaseBuilder(); MultipartRequestFlowBuilder multipartRequestFlowBuilder = new MultipartRequestFlowBuilder(); multipartRequestFlowBuilder.setTableId(OFConstants.OFPTT_ALL); multipartRequestFlowBuilder.setOutPort(OFConstants.OFPP_ANY); multipartRequestFlowBuilder.setOutGroup(OFConstants.OFPG_ANY); - multipartRequestFlowBuilder.setCookie(BigInteger.ZERO); - multipartRequestFlowBuilder.setCookieMask(BigInteger.ZERO); + multipartRequestFlowBuilder.setCookie(OFConstants.DEFAULT_COOKIE); + multipartRequestFlowBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK); + switch (version) { case OFConstants.OFP_VERSION_1_0: MatchV10Builder matchV10Builder = MatchUtil.createEmptyV10Match(); @@ -141,7 +154,10 @@ public final class MultipartRequestInputFactory { case OFConstants.OFP_VERSION_1_3: multipartRequestFlowBuilder.setMatch(new MatchBuilder().setType(OxmMatchType.class).build()); break; + default: + throw new IllegalArgumentException("Unknown version " + version); } + multipartRequestFlowCaseBuilder.setMultipartRequestFlow(multipartRequestFlowBuilder.build()); return multipartRequestFlowCaseBuilder.build(); case OFPMPAGGREGATE: @@ -149,20 +165,25 @@ public final class MultipartRequestInputFactory { case OFPMPTABLE: return new MultipartRequestTableCaseBuilder().build(); case OFPMPPORTSTATS: - MultipartRequestPortStatsCaseBuilder multipartRequestPortStatsCaseBuilder = new MultipartRequestPortStatsCaseBuilder(); - MultipartRequestPortStatsBuilder multipartRequestPortStatsBuilder = new MultipartRequestPortStatsBuilder(); + MultipartRequestPortStatsCaseBuilder multipartRequestPortStatsCaseBuilder + = new MultipartRequestPortStatsCaseBuilder(); + MultipartRequestPortStatsBuilder multipartRequestPortStatsBuilder + = new MultipartRequestPortStatsBuilder(); multipartRequestPortStatsBuilder.setPortNo(OFConstants.OFPP_ANY); - multipartRequestPortStatsCaseBuilder.setMultipartRequestPortStats(multipartRequestPortStatsBuilder.build()); + multipartRequestPortStatsCaseBuilder + .setMultipartRequestPortStats(multipartRequestPortStatsBuilder.build()); return multipartRequestPortStatsCaseBuilder.build(); case OFPMPQUEUE: - MultipartRequestQueueCaseBuilder multipartRequestQueueCaseBuilder = new MultipartRequestQueueCaseBuilder(); + MultipartRequestQueueCaseBuilder multipartRequestQueueCaseBuilder + = new MultipartRequestQueueCaseBuilder(); MultipartRequestQueueBuilder multipartRequestQueueBuilder = new MultipartRequestQueueBuilder(); multipartRequestQueueBuilder.setPortNo(OFConstants.OFPP_ANY); multipartRequestQueueBuilder.setQueueId(OFConstants.OFPQ_ALL); multipartRequestQueueCaseBuilder.setMultipartRequestQueue(multipartRequestQueueBuilder.build()); return multipartRequestQueueCaseBuilder.build(); case OFPMPGROUP: - MultipartRequestGroupCaseBuilder multipartRequestGroupCaseBuilder = new MultipartRequestGroupCaseBuilder(); + MultipartRequestGroupCaseBuilder multipartRequestGroupCaseBuilder + = new MultipartRequestGroupCaseBuilder(); MultipartRequestGroupBuilder multipartRequestGroupBuilder = new MultipartRequestGroupBuilder(); GroupId groupId = new GroupId(OFConstants.OFPG_ALL); multipartRequestGroupBuilder.setGroupId(groupId); @@ -173,24 +194,31 @@ public final class MultipartRequestInputFactory { case OFPMPGROUPFEATURES: return new MultipartRequestGroupFeaturesCaseBuilder().build(); case OFPMPMETER: - MultipartRequestMeterCaseBuilder multipartRequestMeterCaseBuilder = new MultipartRequestMeterCaseBuilder(); + MultipartRequestMeterCaseBuilder multipartRequestMeterCaseBuilder + = new MultipartRequestMeterCaseBuilder(); MultipartRequestMeterBuilder multipartRequestMeterBuilder = new MultipartRequestMeterBuilder(); MeterId meterId = new MeterId(OFConstants.OFPM_ALL); multipartRequestMeterBuilder.setMeterId(meterId); multipartRequestMeterCaseBuilder.setMultipartRequestMeter(multipartRequestMeterBuilder.build()); return multipartRequestMeterCaseBuilder.build(); case OFPMPMETERCONFIG: - MultipartRequestMeterConfigCaseBuilder multipartRequestMeterConfigCaseBuilder = new MultipartRequestMeterConfigCaseBuilder(); - MultipartRequestMeterConfigBuilder multipartRequestMeterConfigBuilder = new MultipartRequestMeterConfigBuilder(); + MultipartRequestMeterConfigCaseBuilder multipartRequestMeterConfigCaseBuilder + = new MultipartRequestMeterConfigCaseBuilder(); + MultipartRequestMeterConfigBuilder multipartRequestMeterConfigBuilder + = new MultipartRequestMeterConfigBuilder(); MeterId configMeterId = new MeterId(OFConstants.OFPM_ALL); multipartRequestMeterConfigBuilder.setMeterId(configMeterId); - multipartRequestMeterConfigCaseBuilder.setMultipartRequestMeterConfig(multipartRequestMeterConfigBuilder.build()); + multipartRequestMeterConfigCaseBuilder + .setMultipartRequestMeterConfig(multipartRequestMeterConfigBuilder.build()); return multipartRequestMeterConfigCaseBuilder.build(); case OFPMPMETERFEATURES: return new MultipartRequestMeterFeaturesCaseBuilder().build(); case OFPMPTABLEFEATURES: - MultipartRequestTableFeaturesCaseBuilder tableFeaturesCaseBuilder = new MultipartRequestTableFeaturesCaseBuilder(); - tableFeaturesCaseBuilder.setMultipartRequestTableFeatures(new MultipartRequestTableFeaturesBuilder().build()); + MultipartRequestTableFeaturesCaseBuilder tableFeaturesCaseBuilder + = new MultipartRequestTableFeaturesCaseBuilder(); + tableFeaturesCaseBuilder.setMultipartRequestTableFeatures( + new MultipartRequestTableFeaturesBuilder().build() + ); return tableFeaturesCaseBuilder.build(); case OFPMPPORTDESC: return new MultipartRequestPortDescCaseBuilder().build(); @@ -200,44 +228,4 @@ public final class MultipartRequestInputFactory { throw new IllegalArgumentException("Unknown MultipartType " + type); } } - - private static boolean validationOfMultipartTypeAndRequestBody(@CheckForNull final MultipartType type, - @CheckForNull final MultipartRequestBody body) { - Preconditions.checkArgument(type != null, "Multipart Request can not by build without type!"); - Preconditions.checkArgument(body != null, "Multipart Request can not by build without body!"); - switch (type) { - case OFPMPDESC: - return body instanceof MultipartRequestDescCase; - case OFPMPFLOW: - return body instanceof MultipartRequestFlowCase; - case OFPMPAGGREGATE: - return body instanceof MultipartRequestAggregateCase; - case OFPMPTABLE: - return body instanceof MultipartRequestTableCase; - case OFPMPPORTSTATS: - return body instanceof MultipartRequestPortStatsCase; - case OFPMPQUEUE: - return body instanceof MultipartRequestQueueCase; - case OFPMPGROUP: - return body instanceof MultipartRequestGroupCase; - case OFPMPGROUPDESC: - return body instanceof MultipartRequestGroupDescCase; - case OFPMPGROUPFEATURES: - return body instanceof MultipartRequestGroupFeaturesCase; - case OFPMPMETER: - return body instanceof MultipartRequestMeterCase; - case OFPMPMETERCONFIG: - return body instanceof MultipartRequestMeterConfigCase; - case OFPMPMETERFEATURES: - return body instanceof MultipartRequestMeterFeaturesCase; - case OFPMPTABLEFEATURES: - return body instanceof MultipartRequestTableFeaturesCase; - case OFPMPPORTDESC: - return body instanceof MultipartRequestPortDescCase; - case OFPMPEXPERIMENTER: - return body instanceof MultipartRequestExperimenterCase; - default: - throw new IllegalArgumentException("Unknown MultipartType " + type); - } - } }