package org.opendaylight.openflowplugin.impl.services;
-import java.util.Collections;
import java.util.List;
-import java.util.Optional;
import java.util.concurrent.Future;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
-import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.openflowplugin.impl.datastore.MultipartWriterProvider;
-import org.opendaylight.openflowplugin.impl.services.util.RequestInputUtils;
-import org.opendaylight.openflowplugin.impl.services.util.ServiceException;
-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.openflow.common.types.rev130731.MultipartType;
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.multipart.request.body.MultipartRequestTableFeaturesCaseBuilder;
-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.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.multipart.request.table.features.TableFeatures;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.TableUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableOutput;
import org.opendaylight.yangtools.yang.common.RpcResult;
-public abstract class AbstractTableMultipartService<T extends OfHeader> extends AbstractMultipartService<UpdateTableInput, T> {
+public abstract class AbstractTableMultipartService<T extends OfHeader>
+ extends AbstractMultipartService<UpdateTableInput, T> {
- private final ConvertorExecutor convertorExecutor;
private final MultipartWriterProvider multipartWriterProvider;
- private final VersionConvertorData data;
protected AbstractTableMultipartService(final RequestContextStack requestContextStack,
final DeviceContext deviceContext,
- final ConvertorExecutor convertorExecutor,
final MultipartWriterProvider multipartWriterProvider) {
super(requestContextStack, deviceContext);
- this.convertorExecutor = convertorExecutor;
this.multipartWriterProvider = multipartWriterProvider;
- data = new VersionConvertorData(getVersion());
- }
-
- @Override
- protected OfHeader buildRequest(final Xid xid, final UpdateTableInput input) throws ServiceException {
- final Optional<List<TableFeatures>> tableFeatures = getConvertorExecutor().convert(input.getUpdatedTable(), data);
-
- return RequestInputUtils.createMultipartHeader(MultipartType.OFPMPTABLEFEATURES, xid.getValue(), getVersion())
- .setMultipartRequestBody(new MultipartRequestTableFeaturesCaseBuilder()
- .setMultipartRequestTableFeatures(new MultipartRequestTableFeaturesBuilder()
- .setTableFeatures(tableFeatures
- .orElseGet(Collections::emptyList))
- .build())
- .build())
- .build();
- }
-
- /**
- * Get convertor executor
- * @return convertor executor
- */
- protected ConvertorExecutor getConvertorExecutor() {
- return convertorExecutor;
- }
-
- /**
- * Get data
- * @return data
- */
- protected VersionConvertorData getData() {
- return data;
}
/**
- * Stores table features to operational datastore
+ * Stores table features to operational datastore.
*/
- protected void storeStatistics(List<org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures> result) {
+ protected void storeStatistics(List<org.opendaylight.yang.gen.v1.urn
+ .opendaylight.table.types.rev131026.table.features.TableFeatures> result) {
multipartWriterProvider
.lookup(MultipartType.OFPMPTABLEFEATURES)
.ifPresent(writer -> {
}
/**
- * Process experimenter input and result experimenter output
+ * Process experimenter input and result experimenter output.
* @param input experimenter input
* @return experimenter output
*/