import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.JdkFutureAdapters;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleControlSalBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.bundle.add.message.sal.SalAddMessageDataBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.bundle.control.sal.SalControlDataBuilder;
+import org.opendaylight.yangtools.yang.common.ErrorTag;
+import org.opendaylight.yangtools.yang.common.ErrorType;
import org.opendaylight.yangtools.yang.common.RpcError;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Simple bundle extension service.
*/
public class SalBundleServiceImpl implements SalBundleService {
-
+ private static final Logger LOG = LoggerFactory.getLogger(SalBundleServiceImpl.class);
private final SalExperimenterMessageService experimenterMessageService;
public SalBundleServiceImpl(final SalExperimenterMessageService experimenterMessageService) {
}
@Override
- public ListenableFuture<RpcResult<ControlBundleOutput>> controlBundle(ControlBundleInput input) {
+ public ListenableFuture<RpcResult<ControlBundleOutput>> controlBundle(final ControlBundleInput input) {
+ LOG.debug("Control message for device {} and bundle type {}", input.getNode(), input.getType());
final SendExperimenterInputBuilder experimenterInputBuilder = new SendExperimenterInputBuilder();
experimenterInputBuilder.setNode(input.getNode());
experimenterInputBuilder.setExperimenterMessageOfChoice(
}
@Override
- public ListenableFuture<RpcResult<AddBundleMessagesOutput>> addBundleMessages(AddBundleMessagesInput input) {
+ public ListenableFuture<RpcResult<AddBundleMessagesOutput>> addBundleMessages(final AddBundleMessagesInput input) {
final List<ListenableFuture<RpcResult<SendExperimenterOutput>>> partialResults = new ArrayList<>();
final SendExperimenterInputBuilder experimenterInputBuilder = new SendExperimenterInputBuilder();
final BundleAddMessageSalBuilder bundleAddMessageBuilder = new BundleAddMessageSalBuilder();
dataBuilder.setBundleInnerMessage(message.getBundleInnerMessage());
experimenterInputBuilder.setExperimenterMessageOfChoice(
bundleAddMessageBuilder.setSalAddMessageData(dataBuilder.build()).build());
- ListenableFuture<RpcResult<SendExperimenterOutput>> res = JdkFutureAdapters
- .listenInPoolThread(experimenterMessageService.sendExperimenter(experimenterInputBuilder.build()));
- partialResults.add(res);
+ partialResults.add(experimenterMessageService.sendExperimenter(experimenterInputBuilder.build()));
}
return processResults(partialResults);
}
Futures.addCallback(Futures.successfulAsList(partialResults),new FutureCallback<
List<RpcResult<SendExperimenterOutput>>>() {
@Override
- public void onSuccess(List<RpcResult<SendExperimenterOutput>> results) {
+ public void onSuccess(final List<RpcResult<SendExperimenterOutput>> results) {
final ArrayList<RpcError> errors = new ArrayList<>();
final RpcResultBuilder<AddBundleMessagesOutput> rpcResultBuilder;
for (RpcResult<SendExperimenterOutput> res : results) {
if (res == null) {
- errors.add(RpcResultBuilder.newError(RpcError.ErrorType.APPLICATION, "BundleExtensionService",
- "RpcResult is null."));
+ // FIXME: this should never happen
+ errors.add(RpcResultBuilder.newError(ErrorType.APPLICATION,
+ new ErrorTag("BundleExtensionService"), "RpcResult is null."));
} else if (!res.isSuccessful()) {
errors.addAll(res.getErrors());
}
}
@Override
- public void onFailure(Throwable throwable) {
+ public void onFailure(final Throwable throwable) {
RpcResultBuilder<AddBundleMessagesOutput> rpcResultBuilder = RpcResultBuilder.failed();
result.set(rpcResultBuilder.build());
}