From 8546c990b067c288f913d75b92dcdb652fb4dc86 Mon Sep 17 00:00:00 2001 From: tpantelis Date: Thu, 10 Jul 2014 02:49:07 -0400 Subject: [PATCH] Deprecated Rpcs and RpcErrors helper classes With the new RpcResultBuilder class, we can deprecate the Rpcs and RpcErrors classes. Also migrate all uses of the deprecated classes to RpcResultBuilder in the controller code. Change-Id: I86408bba0ce19e70c7d7a41555e94052e54e93f8 Signed-off-by: tpantelis --- .../compatibility/FRMRuntimeDataProvider.java | 7 +-- .../adsal/FlowServiceAdapter.java | 8 ++-- .../adsal/FlowStatisticsAdapter.java | 11 +++-- ...orwardedBackwardsCompatibleDataBroker.java | 5 +- .../connect/dom/BindingToDomTransaction.java | 10 ++-- .../connect/dom/DomToBindingTransaction.java | 10 ++-- .../connect/dom/RpcInvocationStrategy.java | 23 ++++----- .../dom/RpcInvocationStrategyTest.java | 26 ++++++---- .../test/connect/dom/CrossBrokerRpcTest.java | 8 ++-- .../dom/DOMRpcServiceTestBugfix560.java | 6 +-- .../common/impl/service/TwoPhaseCommit.java | 13 ++--- .../util/CommitHandlerTransactions.java | 8 ++-- .../controller/sal/common/util/RpcErrors.java | 4 +- .../controller/sal/common/util/Rpcs.java | 4 ++ .../impl/DOMDataCommitCoordinatorImpl.java | 6 +-- .../sal/dom/broker/impl/HashMapDataStore.java | 10 ++-- .../listener/NetconfDeviceCommunicator.java | 22 ++++----- .../sal/NetconfDeviceCommitHandler.java | 7 ++- .../connect/netconf/sal/NetconfDeviceRpc.java | 7 ++- ...etconfDeviceTwoPhaseCommitTransaction.java | 7 ++- .../mapping/NetconfMessageTransformer.java | 11 +++-- .../util/NetconfMessageTransformUtil.java | 13 +++-- .../sal/connect/util/FailedRpcResult.java | 38 --------------- .../connect/netconf/NetconfDeviceTest.java | 7 ++- .../sal/restconf/impl/BrokerFacade.java | 11 +++-- .../impl/test/InvokeRpcMethodTest.java | 29 ++++++------ .../impl/test/RestPostOperationTest.java | 11 ++--- .../restconf/impl/test/RestconfErrorTest.java | 28 +++++------ .../kitchen/impl/KitchenServiceImpl.java | 20 ++++---- .../toaster/provider/OpendaylightToaster.java | 47 +++++++------------ 30 files changed, 181 insertions(+), 236 deletions(-) delete mode 100644 opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/util/FailedRpcResult.java diff --git a/opendaylight/md-sal/compatibility/flow-management-compatibility/src/main/java/org/opendaylight/controller/md/frm/compatibility/FRMRuntimeDataProvider.java b/opendaylight/md-sal/compatibility/flow-management-compatibility/src/main/java/org/opendaylight/controller/md/frm/compatibility/FRMRuntimeDataProvider.java index be3add1042..ff68176f1f 100644 --- a/opendaylight/md-sal/compatibility/flow-management-compatibility/src/main/java/org/opendaylight/controller/md/frm/compatibility/FRMRuntimeDataProvider.java +++ b/opendaylight/md-sal/compatibility/flow-management-compatibility/src/main/java/org/opendaylight/controller/md/frm/compatibility/FRMRuntimeDataProvider.java @@ -7,8 +7,6 @@ */ package org.opendaylight.controller.md.frm.compatibility; -import java.util.Collections; - import org.opendaylight.controller.forwardingrulesmanager.FlowConfig; import org.opendaylight.controller.forwardingrulesmanager.IForwardingRulesManager; import org.opendaylight.controller.md.sal.common.api.data.DataChangeListener; @@ -17,7 +15,6 @@ import org.opendaylight.controller.md.sal.common.api.data.DataModification; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; import org.opendaylight.controller.sal.binding.api.data.RuntimeDataProvider; import org.opendaylight.controller.sal.common.util.Arguments; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.config.rev130819.Flows; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.config.rev130819.flows.FlowKey; import org.opendaylight.yangtools.concepts.Registration; @@ -26,8 +23,8 @@ import org.opendaylight.yangtools.yang.binding.Identifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import com.google.common.base.Objects; import com.google.common.base.Preconditions; @@ -89,7 +86,7 @@ public class FRMRuntimeDataProvider implements RuntimeDataProvider, DataCommitHa this.manager.removeStaticFlow(flow.getName(), flow.getNode()); this.manager.addStaticFlow(flow); } - return Rpcs. getRpcResult(true, null, Collections. emptySet()); + return RpcResultBuilder. success().build(); } public RpcResult rollback(final FlowCommitTransaction transaction) { diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/adsal/FlowServiceAdapter.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/adsal/FlowServiceAdapter.java index 01d75acfe6..56c7afb253 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/adsal/FlowServiceAdapter.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/adsal/FlowServiceAdapter.java @@ -10,7 +10,6 @@ package org.opendaylight.controller.sal.compatibility.adsal; import java.math.BigInteger; import org.opendaylight.controller.sal.binding.api.NotificationProviderService; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.compatibility.InventoryMapping; import org.opendaylight.controller.sal.compatibility.ToSalConversionsUtils; import org.opendaylight.controller.sal.flowprogrammer.Flow; @@ -32,6 +31,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103. import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -70,7 +70,8 @@ public class FlowServiceAdapter implements SalFlowService, IFlowProgrammerListen AddFlowOutputBuilder builder = new AddFlowOutputBuilder(); builder.setTransactionId(new TransactionId(BigInteger.valueOf(status.getRequestId()))); AddFlowOutput rpcResultType = builder.build(); - return Futures.immediateFuture(Rpcs.getRpcResult(status.isSuccess(), rpcResultType, null)); + return Futures.immediateFuture(RpcResultBuilder.status(status.isSuccess()) + .withResult(rpcResultType).build()); } @Override @@ -84,7 +85,8 @@ public class FlowServiceAdapter implements SalFlowService, IFlowProgrammerListen RemoveFlowOutputBuilder builder = new RemoveFlowOutputBuilder(); builder.setTransactionId(new TransactionId(BigInteger.valueOf(status.getRequestId()))); RemoveFlowOutput rpcResultType = builder.build(); - return Futures.immediateFuture(Rpcs.getRpcResult(status.isSuccess(), rpcResultType, null)); + return Futures.immediateFuture(RpcResultBuilder.status(status.isSuccess()) + .withResult(rpcResultType).build()); } diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/adsal/FlowStatisticsAdapter.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/adsal/FlowStatisticsAdapter.java index c5cbecabed..e63cb54b86 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/adsal/FlowStatisticsAdapter.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/adsal/FlowStatisticsAdapter.java @@ -13,7 +13,6 @@ import java.util.List; import java.util.concurrent.Future; import org.opendaylight.controller.sal.binding.api.NotificationProviderService; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.compatibility.FromSalConversionsUtils; import org.opendaylight.controller.sal.compatibility.InventoryMapping; import org.opendaylight.controller.sal.compatibility.NodeMapping; @@ -60,6 +59,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.n import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableId; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -107,7 +107,8 @@ public class FlowStatisticsAdapter implements OpendaylightFlowStatisticsService, LOG.error(e.getMessage()); } - return Futures.immediateFuture(Rpcs.getRpcResult(rpcResultBool, rpcResultType, null)); + return Futures.immediateFuture(RpcResultBuilder. + status(rpcResultBool).withResult(rpcResultType).build()); } /** @@ -133,7 +134,8 @@ public class FlowStatisticsAdapter implements OpendaylightFlowStatisticsService, LOG.error(e.getMessage()); } - return Futures.immediateFuture(Rpcs.getRpcResult(rpcResultBool, rpcResultType, null)); + return Futures.immediateFuture(RpcResultBuilder. + status(rpcResultBool).withResult(rpcResultType).build()); } @Override @@ -154,7 +156,8 @@ public class FlowStatisticsAdapter implements OpendaylightFlowStatisticsService, LOG.error(e.getMessage()); } - return Futures.immediateFuture(Rpcs.getRpcResult(rpcResultBool, rpcResultType, null)); + return Futures.immediateFuture(RpcResultBuilder. + status(rpcResultBool).withResult(rpcResultType).build()); } @Override diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/ForwardedBackwardsCompatibleDataBroker.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/ForwardedBackwardsCompatibleDataBroker.java index 1c6447a4e7..b45450ae3a 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/ForwardedBackwardsCompatibleDataBroker.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/ForwardedBackwardsCompatibleDataBroker.java @@ -33,7 +33,6 @@ import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; import org.opendaylight.controller.sal.binding.api.data.DataChangeListener; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.core.api.model.SchemaService; import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; import org.opendaylight.yangtools.concepts.Delegator; @@ -42,8 +41,8 @@ import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.concepts.util.ListenerRegistry; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.impl.codec.BindingIndependentMappingService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -163,7 +162,7 @@ public class ForwardedBackwardsCompatibleDataBroker extends AbstractForwardedDat if(requestCommitSuccess) { return tx.getDelegate().commit(); } - return Futures.immediateFuture(Rpcs.getRpcResult(false, TransactionStatus.FAILED, Collections.emptySet())); + return Futures.immediateFuture(RpcResultBuilder.failed().withResult(TransactionStatus.FAILED).build()); } }); diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/BindingToDomTransaction.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/BindingToDomTransaction.java index 20a786e774..081adb44dc 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/BindingToDomTransaction.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/BindingToDomTransaction.java @@ -1,18 +1,17 @@ package org.opendaylight.controller.sal.binding.impl.connect.dom; -import java.util.Collections; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; + import org.opendaylight.controller.md.sal.common.api.TransactionStatus; import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler; import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.core.api.data.DataModificationTransaction; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; class BindingToDomTransaction implements DataCommitHandler.DataCommitTransaction, DataObject> { @@ -41,7 +40,8 @@ class BindingToDomTransaction implements try { RpcResult biResult = result.get(); domOpenedTransactions.remove(backing.getIdentifier()); - return Rpcs.getRpcResult(biResult.isSuccessful(), null, biResult.getErrors()); + return RpcResultBuilder. status(biResult.isSuccessful()) + .withRpcErrors(biResult.getErrors()).build(); } catch (InterruptedException e) { throw new IllegalStateException("", e); } catch (ExecutionException e) { @@ -54,6 +54,6 @@ class BindingToDomTransaction implements @Override public RpcResult rollback() throws IllegalStateException { domOpenedTransactions.remove(backing.getIdentifier()); - return Rpcs.getRpcResult(true, null, Collections. emptySet()); + return RpcResultBuilder. success().build(); } } diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/DomToBindingTransaction.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/DomToBindingTransaction.java index 45be5c96fa..cb271a1a91 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/DomToBindingTransaction.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/DomToBindingTransaction.java @@ -1,15 +1,14 @@ package org.opendaylight.controller.sal.binding.impl.connect.dom; -import java.util.Collections; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; + import org.opendaylight.controller.md.sal.common.api.TransactionStatus; import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler; import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.controller.sal.common.util.Rpcs; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; @@ -39,7 +38,7 @@ class DomToBindingTransaction implements @Override public RpcResult rollback() throws IllegalStateException { bindingOpenedTransactions.remove(backing.getIdentifier()); - return Rpcs.getRpcResult(true, null, Collections.emptySet()); + return RpcResultBuilder. success().build(); } @Override @@ -48,7 +47,8 @@ class DomToBindingTransaction implements try { RpcResult baResult = result.get(); bindingOpenedTransactions.remove(backing.getIdentifier()); - return Rpcs.getRpcResult(baResult.isSuccessful(), null, baResult.getErrors()); + return RpcResultBuilder. status(baResult.isSuccessful()) + .withRpcErrors(baResult.getErrors()).build(); } catch (InterruptedException e) { throw new IllegalStateException("", e); } catch (ExecutionException e) { diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/RpcInvocationStrategy.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/RpcInvocationStrategy.java index d08b217e71..f03d07eb99 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/RpcInvocationStrategy.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/RpcInvocationStrategy.java @@ -10,19 +10,17 @@ package org.opendaylight.controller.sal.binding.impl.connect.dom; import java.lang.ref.WeakReference; import java.lang.reflect.Method; -import java.util.Collection; import java.util.Collections; import java.util.concurrent.Future; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.core.api.RpcProvisionRegistry; import org.opendaylight.yangtools.yang.binding.DataContainer; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.RpcService; import org.opendaylight.yangtools.yang.binding.util.BindingReflections; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.Node; import org.opendaylight.yangtools.yang.data.impl.ImmutableCompositeNode; @@ -89,7 +87,7 @@ public class RpcInvocationStrategy { public ListenableFuture> forwardToDomBroker(final DataObject input) { if(biRpcRegistry == null) { - return Futures.> immediateFuture(Rpcs.getRpcResult(false)); + return Futures.> immediateFuture(RpcResultBuilder.failed().build()); } CompositeNode inputXml = null; @@ -102,6 +100,7 @@ public class RpcInvocationStrategy { Function, RpcResult> transformationFunction = new Function, RpcResult>() { + @SuppressWarnings("rawtypes") @Override public RpcResult apply(RpcResult result) { @@ -114,7 +113,7 @@ public class RpcInvocationStrategy { } } - return Rpcs.getRpcResult(result.isSuccessful(), output, result.getErrors()); + return RpcResultBuilder.from( (RpcResult)result ).withResult( output ).build(); } }; @@ -135,22 +134,18 @@ public class RpcInvocationStrategy { } if (futureResult == null) { - return Rpcs.getRpcResult(false); + return RpcResultBuilder.failed().build(); } - RpcResult bindingResult = futureResult.get(); - - Collection errors = bindingResult.getErrors(); - if( errors == null ) { - errors = Collections.emptySet(); - } + @SuppressWarnings("rawtypes") + RpcResult bindingResult = futureResult.get(); final Object resultObj = bindingResult.getResult(); - CompositeNode output = null; + Object output = null; if (resultObj instanceof DataObject) { output = mappingService.toDataDom((DataObject)resultObj); } - return Rpcs.getRpcResult( bindingResult.isSuccessful(), output, errors); + return RpcResultBuilder.from( bindingResult ).withResult( output ).build(); } public RpcResult invokeOn(final RpcService rpcService, final CompositeNode domInput) throws Exception { diff --git a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/impl/connect/dom/RpcInvocationStrategyTest.java b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/impl/connect/dom/RpcInvocationStrategyTest.java index c5aea8f2ab..6977588a01 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/impl/connect/dom/RpcInvocationStrategyTest.java +++ b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/impl/connect/dom/RpcInvocationStrategyTest.java @@ -25,13 +25,13 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.core.api.RpcProvisionRegistry; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.RpcService; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.impl.codec.BindingIndependentMappingService; @@ -96,9 +96,11 @@ public class RpcInvocationStrategyTest { private void setupForForwardToDom(boolean hasOutput, boolean hasInput, int expectedErrorSize) { - if (expectedErrorSize > 0) + if (expectedErrorSize > 0) { errors.add(rpcError); - RpcResult result = Rpcs.getRpcResult(true, invokeRpcResult, errors); + } + RpcResult result = RpcResultBuilder.success(invokeRpcResult) + .withRpcErrors( errors ).build(); futureCompNode = Futures.immediateFuture(result); if( hasInput ) { @@ -191,22 +193,28 @@ public class RpcInvocationStrategyTest { * invokeOn Tests */ private void setupRpcResultsWithOutput(int expectedErrorSize) { - if (expectedErrorSize > 0) + if (expectedErrorSize > 0) { errors.add(rpcError); - RpcResult resultCompNode = Rpcs.getRpcResult(true, inputInvokeOn, errors); + } + RpcResult resultCompNode = RpcResultBuilder.success(inputInvokeOn) + .withRpcErrors(errors).build(); futureCompNode = Futures.immediateFuture(resultCompNode); - RpcResult resultDataObj = Rpcs.getRpcResult(true, toDataDomInput, errors); + RpcResult resultDataObj = RpcResultBuilder.success(toDataDomInput) + .withRpcErrors(errors).build(); futureDataObj = Futures.immediateFuture(resultDataObj); when(mockMappingService.toDataDom(toDataDomInput)).thenReturn(outputInvokeOn); } private void setupRpcResultsNoOutput(int expectedErrorSize) { - if (expectedErrorSize > 0) + if (expectedErrorSize > 0) { errors.add(rpcError); - RpcResult resultCompNode = Rpcs.getRpcResult(true, inputInvokeOn, errors); + } + RpcResult resultCompNode = RpcResultBuilder.success(inputInvokeOn) + .withRpcErrors(errors).build(); futureCompNode = Futures.immediateFuture(resultCompNode); - RpcResult resultDataObj = Rpcs.getRpcResult(true, null, errors); + RpcResult resultDataObj = RpcResultBuilder.success() + .withRpcErrors(errors).build(); futureDataObj = Futures.immediateFuture(resultDataObj); } diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java index ca38ed0797..48e1db0e63 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java @@ -23,7 +23,6 @@ import org.junit.Test; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.controller.sal.binding.test.util.BindingBrokerTestFactory; import org.opendaylight.controller.sal.binding.test.util.BindingTestContext; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.core.api.RpcImplementation; import org.opendaylight.controller.sal.core.api.RpcProvisionRegistry; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInput; @@ -42,12 +41,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; @@ -136,7 +134,7 @@ public class CrossBrokerRpcTest { @Override public ListenableFuture> invokeRpc(QName rpc, CompositeNode input) { CompositeNode result = testContext.getBindingToDomMappingService().toDataDom(output); - return Futures.immediateFuture(Rpcs.getRpcResult(true, result, ImmutableList.of())); + return Futures.immediateFuture(RpcResultBuilder.success(result).build()); } }); registration.registerPath(NodeContext.QNAME, BI_NODE_C_ID); @@ -168,7 +166,7 @@ public class CrossBrokerRpcTest { private Future> addFlowResult(boolean success, long xid) { AddFlowOutput output = new AddFlowOutputBuilder() // .setTransactionId(new TransactionId(BigInteger.valueOf(xid))).build(); - RpcResult result = Rpcs.getRpcResult(success, output, ImmutableList. of()); + RpcResult result = RpcResultBuilder.status(success).withResult(output).build(); return Futures.immediateFuture(result); } diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/DOMRpcServiceTestBugfix560.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/DOMRpcServiceTestBugfix560.java index c87b93625f..0c123ebe66 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/DOMRpcServiceTestBugfix560.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/DOMRpcServiceTestBugfix560.java @@ -25,7 +25,6 @@ import org.opendaylight.controller.sal.binding.api.mount.MountProviderInstance; import org.opendaylight.controller.sal.binding.api.mount.MountProviderService; import org.opendaylight.controller.sal.binding.test.util.BindingBrokerTestFactory; import org.opendaylight.controller.sal.binding.test.util.BindingTestContext; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.core.api.RpcImplementation; import org.opendaylight.controller.sal.core.api.mount.MountProvisionInstance; import org.opendaylight.controller.sal.core.api.mount.MountProvisionService; @@ -39,6 +38,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.util.BindingReflections; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -135,8 +135,8 @@ public class DOMRpcServiceTestBugfix560 { public ListenableFuture> invokeRpc( final QName rpc, final CompositeNode input) { - return Futures.immediateFuture(Rpcs - . getRpcResult(true)); + return Futures.immediateFuture(RpcResultBuilder + . success().build()); } @Override diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/TwoPhaseCommit.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/TwoPhaseCommit.java index a51dc64816..007122e41d 100644 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/TwoPhaseCommit.java +++ b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/TwoPhaseCommit.java @@ -8,7 +8,6 @@ package org.opendaylight.controller.md.sal.common.impl.service; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -21,10 +20,9 @@ import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; import org.opendaylight.controller.md.sal.common.api.data.DataChangeListener; import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler; import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.yangtools.concepts.Path; -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; @@ -68,8 +66,7 @@ public class TwoPhaseCommit

, D extends Object, DCL extends Dat log.trace("Transaction: {} Finished successfully (no effects).", transactionId); - return Rpcs. getRpcResult(true, TransactionStatus.COMMITED, - Collections. emptySet()); + return RpcResultBuilder. success( TransactionStatus.COMMITED ).build(); } final ImmutableList.Builder> listenersBuilder = ImmutableList.builder(); @@ -127,8 +124,7 @@ public class TwoPhaseCommit

, D extends Object, DCL extends Dat log.trace("Transaction: {} Notifying listeners.", transactionId); publishDataChangeEvent(listeners); - return Rpcs. getRpcResult(true, TransactionStatus.COMMITED, - Collections. emptySet()); + return RpcResultBuilder. success(TransactionStatus.COMMITED).build(); } private void captureInitialState(ImmutableList> listeners) { @@ -240,7 +236,6 @@ public class TwoPhaseCommit

, D extends Object, DCL extends Dat for (final DataCommitTransaction transaction : transactions) { transaction.rollback(); } - Set _emptySet = Collections. emptySet(); - return Rpcs. getRpcResult(false, TransactionStatus.FAILED, _emptySet); + return RpcResultBuilder. failed().withResult(TransactionStatus.FAILED).build(); } } diff --git a/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/CommitHandlerTransactions.java b/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/CommitHandlerTransactions.java index 1af7ccc79a..9aacf1e0a8 100644 --- a/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/CommitHandlerTransactions.java +++ b/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/CommitHandlerTransactions.java @@ -7,13 +7,11 @@ */ package org.opendaylight.controller.sal.common.util; -import java.util.Collections; - import org.opendaylight.controller.md.sal.common.api.data.DataModification; import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction; import org.opendaylight.yangtools.concepts.Path; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; public class CommitHandlerTransactions { @@ -26,11 +24,11 @@ public class CommitHandlerTransactions { } @Override public RpcResult rollback() throws IllegalStateException { - return Rpcs.getRpcResult(true, null, Collections.emptyList()); + return RpcResultBuilder.success().build(); } @Override public RpcResult finish() throws IllegalStateException { - return Rpcs.getRpcResult(true, null, Collections.emptyList()); + return RpcResultBuilder.success().build(); } @Override diff --git a/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/RpcErrors.java b/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/RpcErrors.java index 4d41249b4d..cacb167f6f 100644 --- a/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/RpcErrors.java +++ b/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/RpcErrors.java @@ -12,9 +12,9 @@ import org.opendaylight.yangtools.yang.common.RpcError.ErrorSeverity; import org.opendaylight.yangtools.yang.common.RpcError.ErrorType; /** - * @author mirehak - * + * @deprecated Use {@link org.opendaylight.yangtools.yang.common.RpcResultBuilder} */ +@Deprecated public class RpcErrors { /** diff --git a/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/Rpcs.java b/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/Rpcs.java index f303941871..69458b6a6d 100644 --- a/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/Rpcs.java +++ b/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/Rpcs.java @@ -16,6 +16,10 @@ import org.opendaylight.yangtools.yang.common.RpcResult; import com.google.common.collect.ImmutableList; +/** + * @deprecated Use {@link org.opendaylight.yangtools.yang.common.RpcResultBuilder} + */ +@Deprecated public class Rpcs { public static RpcResult getRpcResult(boolean successful) { diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMDataCommitCoordinatorImpl.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMDataCommitCoordinatorImpl.java index 540e2fe20c..13a0093d34 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMDataCommitCoordinatorImpl.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMDataCommitCoordinatorImpl.java @@ -6,7 +6,6 @@ */ package org.opendaylight.controller.md.sal.dom.broker.impl; -import java.util.Collections; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; @@ -16,10 +15,9 @@ import javax.annotation.concurrent.GuardedBy; import org.opendaylight.controller.md.sal.common.api.TransactionStatus; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.core.spi.data.DOMStoreThreePhaseCommitCohort; -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; @@ -221,7 +219,7 @@ public class DOMDataCommitCoordinatorImpl implements DOMDataCommitExecutor { */ private RpcResult commitBlocking() throws TransactionCommitFailedException { commitAll().checkedGet(); - return Rpcs.getRpcResult(true, TransactionStatus.COMMITED, Collections. emptySet()); + return RpcResultBuilder.success(TransactionStatus.COMMITED).build(); } /** diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/HashMapDataStore.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/HashMapDataStore.java index 50dfbe852b..d7309b9ed3 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/HashMapDataStore.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/HashMapDataStore.java @@ -7,7 +7,6 @@ */ package org.opendaylight.controller.sal.dom.broker.impl; -import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -15,10 +14,9 @@ import java.util.concurrent.ConcurrentHashMap; import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler; import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.core.api.data.DataStore; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.slf4j.Logger; @@ -70,8 +68,7 @@ public final class HashMapDataStore implements DataStore, AutoCloseable { } public RpcResult rollback(HashMapDataStoreTransaction transaction) { - return Rpcs. getRpcResult(true, null, - Collections. emptySet()); + return RpcResultBuilder. success().build(); } public RpcResult finish(HashMapDataStoreTransaction transaction) { @@ -100,8 +97,7 @@ public final class HashMapDataStore implements DataStore, AutoCloseable { configuration.putAll(modification.getUpdatedConfigurationData()); operational.putAll(modification.getUpdatedOperationalData()); - return Rpcs. getRpcResult(true, null, - Collections. emptySet()); + return RpcResultBuilder. success().build(); } public void remove(final Map map, diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfDeviceCommunicator.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfDeviceCommunicator.java index f36ad9abcb..8045f8cb4a 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfDeviceCommunicator.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfDeviceCommunicator.java @@ -8,7 +8,6 @@ package org.opendaylight.controller.sal.connect.netconf.listener; import java.util.ArrayDeque; -import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Queue; @@ -26,16 +25,14 @@ import org.opendaylight.controller.netconf.client.conf.NetconfClientConfiguratio import org.opendaylight.controller.netconf.client.conf.NetconfReconnectingClientConfiguration; import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.controller.netconf.util.xml.XmlUtil; -import org.opendaylight.controller.sal.common.util.RpcErrors; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.connect.api.RemoteDevice; import org.opendaylight.controller.sal.connect.api.RemoteDeviceCommunicator; import org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransformUtil; -import org.opendaylight.controller.sal.connect.util.FailedRpcResult; import org.opendaylight.controller.sal.connect.util.RemoteDeviceId; import org.opendaylight.yangtools.yang.common.QName; 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; @@ -140,9 +137,10 @@ public class NetconfDeviceCommunicator implements NetconfClientSessionListener, private RpcResult createErrorRpcResult( RpcError.ErrorType errorType, String message ) { - return new FailedRpcResult( RpcErrors.getRpcError( null, - NetconfDocumentedException.ErrorTag.operation_failed.getTagValue(), - null, RpcError.ErrorSeverity.ERROR, message, errorType, null ) ); + return RpcResultBuilder.failed() + .withError( errorType, NetconfDocumentedException.ErrorTag.operation_failed.getTagValue(), + message ) + .build(); } @Override @@ -208,8 +206,8 @@ public class NetconfDeviceCommunicator implements NetconfClientSessionListener, logger.warn( "{}: Invalid request-reply match, reply message contains different message-id, request: {}, response: {}", id, msgToS( request.request ), msgToS( message ), e ); - request.future.set( new FailedRpcResult( - NetconfMessageTransformUtil.toRpcError( e ) ) ); + request.future.set( RpcResultBuilder.failed() + .withRpcError( NetconfMessageTransformUtil.toRpcError( e ) ).build() ); return; } @@ -220,12 +218,12 @@ public class NetconfDeviceCommunicator implements NetconfClientSessionListener, logger.warn( "{}: Error reply from remote device, request: {}, response: {}", id, msgToS( request.request ), msgToS( message ), e ); - request.future.set( new FailedRpcResult( - NetconfMessageTransformUtil.toRpcError( e ) ) ); + request.future.set( RpcResultBuilder.failed() + .withRpcError( NetconfMessageTransformUtil.toRpcError( e ) ).build() ); return; } - request.future.set(Rpcs.getRpcResult( true, message, Collections.emptySet() ) ); + request.future.set( RpcResultBuilder.success( message ).build() ); } } diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceCommitHandler.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceCommitHandler.java index 8b6ac7d567..26c6a2758c 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceCommitHandler.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceCommitHandler.java @@ -11,12 +11,11 @@ import java.util.concurrent.ExecutionException; import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler; import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.controller.sal.common.util.RpcErrors; -import org.opendaylight.controller.sal.connect.util.FailedRpcResult; import org.opendaylight.controller.sal.connect.util.RemoteDeviceId; import org.opendaylight.controller.sal.core.api.RpcImplementation; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.slf4j.Logger; @@ -74,8 +73,8 @@ public final class NetconfDeviceCommitHandler implements DataCommitHandler finish() throws IllegalStateException { - return new FailedRpcResult<>(RpcErrors.getRpcError(null, null, null, RpcError.ErrorSeverity.ERROR, - id + ": Unexpected operation error during pre-commit operations", RpcError.ErrorType.APPLICATION, e)); + return RpcResultBuilder.failed().withError( RpcError.ErrorType.APPLICATION, + id + ": Unexpected operation error during pre-commit operations", e ).build(); } @Override diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceRpc.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceRpc.java index 6a62b1e20b..8d5b7aed2f 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceRpc.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceRpc.java @@ -9,17 +9,19 @@ package org.opendaylight.controller.sal.connect.netconf.sal; import com.google.common.base.Function; import com.google.common.util.concurrent.Futures; + import java.util.Collections; import java.util.Set; import javax.annotation.Nullable; + import org.opendaylight.controller.netconf.api.NetconfMessage; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.connect.api.MessageTransformer; import org.opendaylight.controller.sal.connect.api.RemoteDeviceCommunicator; import org.opendaylight.controller.sal.core.api.RpcImplementation; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import com.google.common.util.concurrent.ListenableFuture; @@ -66,7 +68,8 @@ public final class NetconfDeviceRpc implements RpcImplementation { if (netconfMessageRpcResult.isSuccessful()) { return transformer.toRpcResult(netconfMessageRpcResult.getResult(), rpc); } else { - return Rpcs.getRpcResult(false, netconfMessageRpcResult.getErrors()); + return RpcResultBuilder. failed() + .withRpcErrors(netconfMessageRpcResult.getErrors()).build(); } } diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceTwoPhaseCommitTransaction.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceTwoPhaseCommitTransaction.java index 1737b8234a..0ef76d330d 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceTwoPhaseCommitTransaction.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceTwoPhaseCommitTransaction.java @@ -33,14 +33,13 @@ import java.util.concurrent.ExecutionException; import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction; import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.controller.sal.common.util.RpcErrors; import org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransformUtil; -import org.opendaylight.controller.sal.connect.util.FailedRpcResult; import org.opendaylight.controller.sal.connect.util.RemoteDeviceId; import org.opendaylight.controller.sal.core.api.RpcImplementation; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifierWithPredicates; @@ -211,8 +210,8 @@ final class NetconfDeviceTwoPhaseCommitTransaction implements DataCommitTransact throw new RuntimeException(id + ": Interrupted while waiting for response", e); } catch (final ExecutionException e) { LOG.warn("{}: Failed to finish commit operation", id, e); - return new FailedRpcResult<>(RpcErrors.getRpcError(null, null, null, RpcError.ErrorSeverity.ERROR, - id + ": Unexpected operation error during commit operation", RpcError.ErrorType.APPLICATION, e)); + return RpcResultBuilder.failed().withError( RpcError.ErrorType.APPLICATION, + id + ": Unexpected operation error during commit operation", e ).build(); } } diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java index f9e6239bed..80d0f67ac4 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java @@ -8,18 +8,19 @@ package org.opendaylight.controller.sal.connect.netconf.schema.mapping; import com.google.common.base.Optional; -import java.util.Collections; + import java.util.List; import java.util.Set; + import javax.activation.UnsupportedDataTypeException; + import org.opendaylight.controller.netconf.api.NetconfMessage; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.connect.api.MessageTransformer; import org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.controller.sal.connect.util.MessageCounter; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl; import org.opendaylight.yangtools.yang.data.impl.ImmutableCompositeNode; @@ -90,7 +91,7 @@ public class NetconfMessageTransformer implements MessageTransformeremptySet()); + return RpcResultBuilder.success( node ).build(); } } @@ -114,7 +115,7 @@ public class NetconfMessageTransformer implements MessageTransformer emptySet()); + return RpcResultBuilder.success( compositeNode ).build(); } @Override diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java index 6d087a9cc3..0aeec64690 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java @@ -27,9 +27,9 @@ import javax.annotation.Nullable; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.util.messages.NetconfMessageUtil; -import org.opendaylight.controller.sal.common.util.RpcErrors; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcError; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.common.RpcError.ErrorSeverity; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; @@ -140,9 +140,14 @@ public class NetconfMessageTransformUtil { } } - return RpcErrors.getRpcError( null, ex.getErrorTag().getTagValue(), infoBuilder.toString(), - toRpcErrorSeverity( ex.getErrorSeverity() ), ex.getLocalizedMessage(), - toRpcErrorType( ex.getErrorType() ), ex.getCause() ); + ErrorSeverity severity = toRpcErrorSeverity( ex.getErrorSeverity() ); + return severity == ErrorSeverity.ERROR ? + RpcResultBuilder.newError( + toRpcErrorType( ex.getErrorType() ), ex.getErrorTag().getTagValue(), + ex.getLocalizedMessage(), null, infoBuilder.toString(), ex.getCause() ) : + RpcResultBuilder.newWarning( + toRpcErrorType( ex.getErrorType() ), ex.getErrorTag().getTagValue(), + ex.getLocalizedMessage(), null, infoBuilder.toString(), ex.getCause() ); } private static ErrorSeverity toRpcErrorSeverity( final NetconfDocumentedException.ErrorSeverity severity ) { diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/util/FailedRpcResult.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/util/FailedRpcResult.java deleted file mode 100644 index 49b16d4cfb..0000000000 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/util/FailedRpcResult.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2014 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.controller.sal.connect.util; - -import java.util.Collection; -import java.util.Collections; - -import org.opendaylight.yangtools.yang.common.RpcError; -import org.opendaylight.yangtools.yang.common.RpcResult; - -public final class FailedRpcResult implements RpcResult { - - private final RpcError rpcError; - - public FailedRpcResult(final RpcError rpcError) { - this.rpcError = rpcError; - } - - @Override - public boolean isSuccessful() { - return false; - } - - @Override - public T getResult() { - return null; - } - - @Override - public Collection getErrors() { - return Collections.singletonList(rpcError); - } -} diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java index c1b9f7b47b..ec2a820daa 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java @@ -27,7 +27,6 @@ import org.junit.Test; import org.mockito.Mockito; import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.connect.api.MessageTransformer; import org.opendaylight.controller.sal.connect.api.RemoteDeviceCommunicator; import org.opendaylight.controller.sal.connect.api.RemoteDeviceHandler; @@ -38,8 +37,8 @@ import org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransf import org.opendaylight.controller.sal.connect.util.RemoteDeviceId; import org.opendaylight.controller.sal.core.api.RpcImplementation; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -65,8 +64,8 @@ public class NetconfDeviceTest { } } - private static final RpcResult rpcResult = Rpcs.getRpcResult(true, netconfMessage, Collections.emptySet()); - private static final RpcResult rpcResultC = Rpcs.getRpcResult(true, compositeNode, Collections.emptySet()); + private static final RpcResult rpcResult = RpcResultBuilder.success(netconfMessage).build(); + private static final RpcResult rpcResultC = RpcResultBuilder.success(compositeNode).build(); public static final String TEST_NAMESPACE = "test:namespace"; public static final String TEST_MODULE = "test-module"; diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java index a2c228788f..ead1740ffd 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java @@ -8,12 +8,13 @@ package org.opendaylight.controller.sal.restconf.impl; import com.google.common.util.concurrent.Futures; -import java.util.Collections; + import java.util.concurrent.Future; + import javax.ws.rs.core.Response.Status; + import org.opendaylight.controller.md.sal.common.api.TransactionStatus; import org.opendaylight.controller.md.sal.common.api.data.DataReader; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession; import org.opendaylight.controller.sal.core.api.data.DataBrokerService; import org.opendaylight.controller.sal.core.api.data.DataChangeListener; @@ -24,8 +25,8 @@ import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType; import org.opendaylight.controller.sal.streams.listeners.ListenerAdapter; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.slf4j.Logger; @@ -176,8 +177,8 @@ public class BrokerFacade implements DataReader getRpcResult(true, TransactionStatus.COMMITED, - Collections. emptyList())); + return Futures.immediateFuture(RpcResultBuilder. + success(TransactionStatus.COMMITED).build()); } transaction.removeConfigurationData(path); return transaction.commit(); diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/InvokeRpcMethodTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/InvokeRpcMethodTest.java index d12bf9e44e..313b766ed3 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/InvokeRpcMethodTest.java +++ b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/InvokeRpcMethodTest.java @@ -36,8 +36,7 @@ import javax.ws.rs.core.UriInfo; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.opendaylight.controller.sal.common.util.RpcErrors; -import org.opendaylight.controller.sal.common.util.Rpcs; + import org.opendaylight.controller.sal.core.api.mount.MountInstance; import org.opendaylight.controller.sal.restconf.impl.BrokerFacade; import org.opendaylight.controller.sal.restconf.impl.ControllerContext; @@ -50,8 +49,8 @@ import org.opendaylight.controller.sal.restconf.impl.RestconfImpl; import org.opendaylight.controller.sal.restconf.impl.StructuredData; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcError; -import org.opendaylight.yangtools.yang.common.RpcError.ErrorSeverity; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.ModifyAction; import org.opendaylight.yangtools.yang.data.api.MutableCompositeNode; @@ -112,7 +111,7 @@ public class InvokeRpcMethodTest { CompositeNode payload = preparePayload(); when(mockedBrokerFacade.invokeRpc(any(QName.class), any(CompositeNode.class))).thenReturn( - Futures.> immediateFuture(Rpcs. getRpcResult(true))); + Futures.> immediateFuture(RpcResultBuilder.success().build())); StructuredData structData = restconf.invokeRpc("invoke-rpc-module:rpc-test", payload, uriInfo); assertTrue(structData == null); @@ -132,7 +131,7 @@ public class InvokeRpcMethodTest { @Test public void testInvokeRpcWithNoPayloadRpc_FailNoErrors() { - RpcResult rpcResult = Rpcs. getRpcResult(false); + RpcResult rpcResult = RpcResultBuilder.failed().build(); BrokerFacade brokerFacade = mock(BrokerFacade.class); when( @@ -177,11 +176,13 @@ public class InvokeRpcMethodTest { @Test public void testInvokeRpcWithNoPayloadRpc_FailWithRpcError() { - List rpcErrors = Arrays.asList(RpcErrors.getRpcError(null, "bogusTag", null, ErrorSeverity.ERROR, - "foo", RpcError.ErrorType.TRANSPORT, null), RpcErrors.getRpcError("app-tag", "in-use", null, - ErrorSeverity.WARNING, "bar", RpcError.ErrorType.RPC, null)); + List rpcErrors = Arrays.asList( + RpcResultBuilder.newError( RpcError.ErrorType.TRANSPORT, "bogusTag", "foo" ), + RpcResultBuilder.newWarning( RpcError.ErrorType.RPC, "in-use", "bar", + "app-tag", null, null ) ); - RpcResult rpcResult = Rpcs. getRpcResult(false, rpcErrors); + RpcResult rpcResult = RpcResultBuilder.failed() + .withRpcErrors(rpcErrors).build(); BrokerFacade brokerFacade = mock(BrokerFacade.class); when( @@ -205,7 +206,7 @@ public class InvokeRpcMethodTest { @Test public void testInvokeRpcWithNoPayload_Success() { - RpcResult rpcResult = Rpcs. getRpcResult(true); + RpcResult rpcResult = RpcResultBuilder.success().build(); BrokerFacade brokerFacade = mock(BrokerFacade.class); when( @@ -246,7 +247,7 @@ public class InvokeRpcMethodTest { @Test public void testInvokeRpcMethodWithInput() { - RpcResult rpcResult = Rpcs. getRpcResult(true); + RpcResult rpcResult = RpcResultBuilder.success().build(); CompositeNode payload = mock(CompositeNode.class); @@ -279,8 +280,8 @@ public class InvokeRpcMethodTest { @Test public void testInvokeRpcWithNoPayloadWithOutput_Success() { CompositeNode compositeNode = mock(CompositeNode.class); - RpcResult rpcResult = Rpcs. getRpcResult(true, compositeNode, - Collections. emptyList()); + RpcResult rpcResult = + RpcResultBuilder.success(compositeNode).build(); BrokerFacade brokerFacade = mock(BrokerFacade.class); when( @@ -299,7 +300,7 @@ public class InvokeRpcMethodTest { @Test public void testMountedRpcCallNoPayload_Success() throws Exception { - RpcResult rpcResult = Rpcs. getRpcResult(true); + RpcResult rpcResult = RpcResultBuilder.success().build(); ListenableFuture> mockListener = mock(ListenableFuture.class); when(mockListener.get()).thenReturn(rpcResult); diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPostOperationTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPostOperationTest.java index 1442338e2c..af9dd28359 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPostOperationTest.java +++ b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPostOperationTest.java @@ -37,7 +37,6 @@ import org.junit.BeforeClass; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.opendaylight.controller.md.sal.common.api.TransactionStatus; -import org.opendaylight.controller.sal.common.util.RpcErrors; import org.opendaylight.controller.sal.core.api.mount.MountInstance; import org.opendaylight.controller.sal.core.api.mount.MountService; import org.opendaylight.controller.sal.rest.api.Draft02; @@ -52,7 +51,7 @@ import org.opendaylight.controller.sal.restconf.impl.ControllerContext; import org.opendaylight.controller.sal.restconf.impl.RestconfImpl; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcError; -import org.opendaylight.yangtools.yang.common.RpcError.ErrorSeverity; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.common.RpcError.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.CompositeNode; @@ -125,10 +124,10 @@ public class RestPostOperationTest extends JerseyTest { assertEquals(500, post(uri, MediaType.APPLICATION_XML, xmlDataRpcInput)); List rpcErrors = new ArrayList<>(); - rpcErrors.add(RpcErrors.getRpcError("applicationTag1", "tag1", "info1", ErrorSeverity.ERROR, "message1", - ErrorType.RPC, null)); - rpcErrors.add(RpcErrors.getRpcError("applicationTag2", "tag2", "info2", ErrorSeverity.WARNING, "message2", - ErrorType.PROTOCOL, null)); + rpcErrors.add( RpcResultBuilder.newError( ErrorType.RPC, "tag1", "message1", + "applicationTag1", "info1", null ) ); + rpcErrors.add( RpcResultBuilder.newWarning( ErrorType.PROTOCOL, "tag2", "message2", + "applicationTag2", "info2", null ) ); mockInvokeRpc(null, false, rpcErrors); assertEquals(500, post(uri, MediaType.APPLICATION_XML, xmlDataRpcInput)); diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfErrorTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfErrorTest.java index f0d3fb6822..18311104a4 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfErrorTest.java +++ b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfErrorTest.java @@ -11,7 +11,6 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; -import static org.opendaylight.controller.sal.common.util.RpcErrors.getRpcError; import java.util.HashMap; import java.util.Map; @@ -23,6 +22,7 @@ import org.opendaylight.controller.sal.restconf.impl.RestconfError; import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag; import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType; import org.opendaylight.yangtools.yang.common.RpcError; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; /** * Unit tests for RestconfError. @@ -144,41 +144,41 @@ public class RestconfErrorTest { public void testRestConfErrorWithRpcError() { // All fields set - RpcError rpcError = getRpcError("mock app-tag", ErrorTag.BAD_ATTRIBUTE.getTagValue(), "mock error-info", - RpcError.ErrorSeverity.ERROR, "mock error-message", RpcError.ErrorType.PROTOCOL, new Exception( - "mock cause")); + RpcError rpcError = RpcResultBuilder.newError( + RpcError.ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE.getTagValue(), "mock error-message", + "mock app-tag", "mock error-info", new Exception( "mock cause" ) ); validateRestConfError("mock error-message", ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE, "mock app-tag", "mock error-info", new RestconfError(rpcError)); // All fields set except 'info' - expect error-info set to 'cause' - rpcError = getRpcError("mock app-tag", ErrorTag.BAD_ATTRIBUTE.getTagValue(), null, - RpcError.ErrorSeverity.ERROR, "mock error-message", RpcError.ErrorType.PROTOCOL, new Exception( - "mock cause")); + rpcError = RpcResultBuilder.newError( + RpcError.ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE.getTagValue(), "mock error-message", + "mock app-tag", null, new Exception( "mock cause" ) ); validateRestConfError("mock error-message", ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE, "mock app-tag", new Contains("mock cause"), new RestconfError(rpcError)); // Some fields set - expect error-info set to ErrorSeverity - rpcError = getRpcError(null, ErrorTag.ACCESS_DENIED.getTagValue(), null, RpcError.ErrorSeverity.ERROR, null, - RpcError.ErrorType.RPC, null); + rpcError = RpcResultBuilder.newError( + RpcError.ErrorType.RPC, ErrorTag.ACCESS_DENIED.getTagValue(), null, null, null, null ); validateRestConfError(null, ErrorType.RPC, ErrorTag.ACCESS_DENIED, null, "error", new RestconfError(rpcError)); // 'tag' field not mapped to ErrorTag - expect error-tag set to // OPERATION_FAILED - rpcError = getRpcError(null, "not mapped", null, RpcError.ErrorSeverity.WARNING, null, - RpcError.ErrorType.TRANSPORT, null); + rpcError = RpcResultBuilder.newWarning( + RpcError.ErrorType.TRANSPORT, "not mapped", null, null, null, null ); validateRestConfError(null, ErrorType.TRANSPORT, ErrorTag.OPERATION_FAILED, null, "warning", new RestconfError(rpcError)); // No fields set - edge case - rpcError = getRpcError(null, null, null, null, null, null, null); + rpcError = RpcResultBuilder.newError( null, null, null, null, null, null ); - validateRestConfError(null, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED, null, (String) null, - new RestconfError(rpcError)); + validateRestConfError( null, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED, + null, "error", new RestconfError( rpcError ) ); } private void validateRestConfError(String expectedMessage, ErrorType expectedErrorType, ErrorTag expectedErrorTag, diff --git a/opendaylight/md-sal/samples/toaster-consumer/src/main/java/org/opendaylight/controller/sample/kitchen/impl/KitchenServiceImpl.java b/opendaylight/md-sal/samples/toaster-consumer/src/main/java/org/opendaylight/controller/sample/kitchen/impl/KitchenServiceImpl.java index 50ae8fd04f..c6aa545935 100644 --- a/opendaylight/md-sal/samples/toaster-consumer/src/main/java/org/opendaylight/controller/sample/kitchen/impl/KitchenServiceImpl.java +++ b/opendaylight/md-sal/samples/toaster-consumer/src/main/java/org/opendaylight/controller/sample/kitchen/impl/KitchenServiceImpl.java @@ -1,15 +1,12 @@ package org.opendaylight.controller.sample.kitchen.impl; -import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.Future; + import org.opendaylight.controller.config.yang.config.kitchen_service.impl.KitchenServiceRuntimeMXBean; -import org.opendaylight.controller.sal.common.util.RpcErrors; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sample.kitchen.api.EggsType; import org.opendaylight.controller.sample.kitchen.api.KitchenService; import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.MakeToastInput; @@ -20,10 +17,10 @@ import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120 import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.ToasterRestocked; import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.ToasterService; import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.WheatBread; -import org.opendaylight.yangtools.yang.common.RpcError.ErrorSeverity; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcError.ErrorType; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -89,7 +86,8 @@ public class KitchenServiceImpl implements KitchenService, KitchenServiceRuntime } return Futures.immediateFuture( - Rpcs. getRpcResult( atLeastOneSucceeded, errorList.build() ) ); + RpcResultBuilder. status( atLeastOneSucceeded ) + .withRpcErrors( errorList.build() ).build() ); } } ); } @@ -102,7 +100,7 @@ public class KitchenServiceImpl implements KitchenService, KitchenServiceRuntime public RpcResult call() throws Exception { // We don't actually do anything here - just return a successful result. - return Rpcs. getRpcResult( true, Collections.emptyList() ); + return RpcResultBuilder. success().build(); } } ); } @@ -113,11 +111,9 @@ public class KitchenServiceImpl implements KitchenService, KitchenServiceRuntime if( toasterOutOfBread ) { log.info( "We're out of toast but we can make eggs" ); - return Futures.immediateFuture( Rpcs. getRpcResult( true, - Arrays.asList( RpcErrors.getRpcError( "", "partial-operation", null, - ErrorSeverity.WARNING, - "Toaster is out of bread but we can make you eggs", - ErrorType.APPLICATION, null ) ) ) ); + return Futures.immediateFuture( RpcResultBuilder. success() + .withWarning( ErrorType.APPLICATION, "partial-operation", + "Toaster is out of bread but we can make you eggs" ).build() ); } // Access the ToasterService to make the toast. diff --git a/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/sample/toaster/provider/OpendaylightToaster.java b/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/sample/toaster/provider/OpendaylightToaster.java index d2b0f90194..de5ddd9a75 100644 --- a/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/sample/toaster/provider/OpendaylightToaster.java +++ b/opendaylight/md-sal/samples/toaster-provider/src/main/java/org/opendaylight/controller/sample/toaster/provider/OpendaylightToaster.java @@ -7,9 +7,6 @@ */ package org.opendaylight.controller.sample.toaster.provider; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; @@ -28,8 +25,6 @@ import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException; import org.opendaylight.controller.sal.binding.api.NotificationProviderService; -import org.opendaylight.controller.sal.common.util.RpcErrors; -import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.DisplayString; import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.MakeToastInput; import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.RestockToasterInput; @@ -43,7 +38,7 @@ import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120 import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcError; -import org.opendaylight.yangtools.yang.common.RpcError.ErrorSeverity; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.common.RpcError.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; @@ -163,8 +158,7 @@ public class OpendaylightToaster implements ToasterService, ToasterProviderRunti } // Always return success from the cancel toast call. - return Futures.immediateFuture( Rpcs. getRpcResult( true, - Collections.emptyList() ) ); + return Futures.immediateFuture( RpcResultBuilder. success().build() ); } /** @@ -181,17 +175,14 @@ public class OpendaylightToaster implements ToasterService, ToasterProviderRunti return futureResult; } - private List makeToasterOutOfBreadError() { - return Arrays.asList( - RpcErrors.getRpcError( "out-of-stock", "resource-denied", null, null, - "Toaster is out of bread", - ErrorType.APPLICATION, null ) ); + private RpcError makeToasterOutOfBreadError() { + return RpcResultBuilder.newError( ErrorType.APPLICATION, "resource-denied", + "Toaster is out of bread", "out-of-stock", null, null ); } - private List makeToasterInUseError() { - return Arrays.asList( - RpcErrors.getRpcError( "", "in-use", null, ErrorSeverity.WARNING, - "Toaster is busy", ErrorType.APPLICATION, null ) ); + private RpcError makeToasterInUseError() { + return RpcResultBuilder.newWarning( ErrorType.APPLICATION, "in-use", + "Toaster is busy", null, null, null ); } private void checkStatusAndMakeToast( final MakeToastInput input, @@ -225,8 +216,8 @@ public class OpendaylightToaster implements ToasterService, ToasterProviderRunti if( outOfBread() ) { LOG.debug( "Toaster is out of bread" ); - return Futures.immediateFuture( Rpcs.getRpcResult( - false, null, makeToasterOutOfBreadError() ) ); + return Futures.immediateFuture( RpcResultBuilder.failed() + .withRpcError( makeToasterOutOfBreadError() ).build() ); } LOG.debug( "Setting Toaster status to Down" ); @@ -244,8 +235,8 @@ public class OpendaylightToaster implements ToasterService, ToasterProviderRunti // Return an error since we are already making toast. This will get // propagated to the commitFuture below which will interpret the null // TransactionStatus in the RpcResult as an error condition. - return Futures.immediateFuture( Rpcs.getRpcResult( - false, null, makeToasterInUseError() ) ); + return Futures.immediateFuture( RpcResultBuilder.failed() + .withRpcError( makeToasterInUseError() ).build() ); } } ); @@ -265,7 +256,8 @@ public class OpendaylightToaster implements ToasterService, ToasterProviderRunti // the read above returned ToasterStatus.Down. Either way, fail the // futureResult and copy the errors. - futureResult.set( Rpcs.getRpcResult( false, null, result.getErrors() ) ); + futureResult.set( RpcResultBuilder.failed().withRpcErrors( + result.getErrors() ).build() ); } } @@ -286,10 +278,8 @@ public class OpendaylightToaster implements ToasterService, ToasterProviderRunti LOG.error( "Failed to commit Toaster status", ex ); // Got some unexpected error so fail. - futureResult.set( Rpcs. getRpcResult( false, null, Arrays.asList( - RpcErrors.getRpcError( null, null, null, ErrorSeverity.ERROR, - ex.getMessage(), - ErrorType.APPLICATION, ex ) ) ) ); + futureResult.set( RpcResultBuilder. failed() + .withError( ErrorType.APPLICATION, ex.getMessage() ).build() ); } } } ); @@ -312,7 +302,7 @@ public class OpendaylightToaster implements ToasterService, ToasterProviderRunti notificationProvider.publish( reStockedNotification ); } - return Futures.immediateFuture(Rpcs. getRpcResult(true, Collections.emptyList())); + return Futures.immediateFuture( RpcResultBuilder. success().build() ); } /** @@ -416,8 +406,7 @@ public class OpendaylightToaster implements ToasterService, ToasterProviderRunti LOG.debug("Toast done"); - futureResult.set( Rpcs.getRpcResult( true, null, - Collections.emptyList() ) ); + futureResult.set( RpcResultBuilder.success().build() ); return null; } -- 2.36.6