Bump MRI upstreams 77/100077/17
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 11 Mar 2022 10:35:45 +0000 (11:35 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 31 Mar 2022 14:05:51 +0000 (16:05 +0200)
Adopt the following versions:
- odlparent-10.0.0
- infrautils-3.0.0
- yangtools-8.0.2
- controller-5.0.1
- aaa-0.15.1
- netconf-3.0.0

Also reconcile leaf-list mapping and correct feature packaging, so that
we do not repackage upstream bundles.

Change-Id: I5fc015361626e3c8721ac30255e8a4efacfb568e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
146 files changed:
applications/arbitratorreconciliation/impl/src/main/java/org/opendaylight/openflowplugin/applications/arbitratorreconciliation/impl/ArbitratorReconciliationManagerImpl.java
applications/arbitratorreconciliation/pom.xml
applications/bulk-o-matic/src/main/java/org/opendaylight/openflowplugin/applications/bulk/o/matic/SalBulkFlowServiceImpl.java
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/AbstractListeningCommiter.java
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/BundleFlowForwarder.java
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/DeviceMastershipManager.java
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowForwarder.java
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowNodeConnectorInventoryTranslatorImpl.java
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowNodeReconciliationImpl.java
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/ForwardingRulesManagerImpl.java
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FrmReconciliationServiceImpl.java
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/recovery/impl/OpenflowServiceRecoveryHandlerImpl.java
applications/forwardingrules-sync/src/main/java/org/opendaylight/openflowplugin/applications/frsync/impl/SyncReactorGuardDecorator.java
applications/forwardingrules-sync/src/main/java/org/opendaylight/openflowplugin/applications/frsync/impl/clustering/DeviceMastership.java
applications/forwardingrules-sync/src/main/java/org/opendaylight/openflowplugin/applications/frsync/impl/strategy/FlowForwarder.java
applications/forwardingrules-sync/src/main/java/org/opendaylight/openflowplugin/applications/frsync/impl/strategy/SyncPlanPushStrategyFlatBatchImpl.java
applications/forwardingrules-sync/src/main/java/org/opendaylight/openflowplugin/applications/frsync/impl/strategy/SyncPlanPushStrategyIncrementalImpl.java
applications/forwardingrules-sync/src/main/java/org/opendaylight/openflowplugin/applications/frsync/util/ReconcileUtil.java
applications/lldp-speaker/src/test/java/org/opendaylight/openflowplugin/applications/lldpspeaker/NodeConnectorInventoryEventTranslatorTest.java
applications/pom.xml
applications/reconciliation-framework/pom.xml
applications/southbound-cli/pom.xml
applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/NodeListener.java
applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/ReconciliationServiceImpl.java
applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/cli/GetAllNodesCommandProvider.java
applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/cli/Reconciliation.java
applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/util/ShellUtil.java
applications/southbound-cli/src/main/resources/OSGI-INF/blueprint/commands.xml
applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPLinkAger.java
applications/topology-lldp-discovery/src/test/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPLinkAgerTest.java
applications/topology-lldp-discovery/src/test/java/org/opendaylight/openflowplugin/applications/topology/lldp/utils/LLDPDiscoveryUtilsTest.java
artifacts/pom.xml
distribution/karaf/pom.xml
drop-test-karaf/pom.xml
extension/features-extension-aggregator/features-openflowplugin-extension/pom.xml
extension/features-extension-aggregator/odl-openflowplugin-eric-extensions/pom.xml
extension/features-extension-aggregator/odl-openflowplugin-nxm-extensions/pom.xml
extension/features-extension-aggregator/odl-openflowplugin-onf-extensions/pom.xml
extension/features-extension-aggregator/pom.xml
extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/match/NxmHeader.java
extension/pom.xml
features-aggregator/features-openflowplugin/pom.xml
features-aggregator/odl-openflowplugin-app-arbitratorreconciliation/pom.xml
features-aggregator/odl-openflowplugin-app-bulk-o-matic/pom.xml
features-aggregator/odl-openflowplugin-app-config-pusher/pom.xml
features-aggregator/odl-openflowplugin-app-forwardingrules-manager/pom.xml
features-aggregator/odl-openflowplugin-app-forwardingrules-sync/pom.xml
features-aggregator/odl-openflowplugin-app-lldp-speaker/pom.xml
features-aggregator/odl-openflowplugin-app-reconciliation-framework/pom.xml
features-aggregator/odl-openflowplugin-app-southbound-cli/pom.xml
features-aggregator/odl-openflowplugin-app-table-miss-enforcer/pom.xml
features-aggregator/odl-openflowplugin-app-topology-lldp-discovery/pom.xml
features-aggregator/odl-openflowplugin-app-topology-manager/pom.xml
features-aggregator/odl-openflowplugin-app-topology/pom.xml
features-aggregator/odl-openflowplugin-drop-test/pom.xml
features-aggregator/odl-openflowplugin-flow-services-rest/pom.xml
features-aggregator/odl-openflowplugin-flow-services/pom.xml
features-aggregator/odl-openflowplugin-libraries/pom.xml
features-aggregator/odl-openflowplugin-libraries/src/main/feature/feature.xml
features-aggregator/odl-openflowplugin-nsf-model/pom.xml
features-aggregator/odl-openflowplugin-nsf-model/src/main/feature/feature.xml
features-aggregator/odl-openflowplugin-southbound/pom.xml
features-aggregator/odl-openflowplugin-southbound/src/main/feature/feature.xml
features-aggregator/pom.xml
libraries/pom.xml
model/model-flow-base/src/main/yang/opendaylight-group-types.yang
model/model-flow-base/src/main/yang/opendaylight-table-types.yang
model/pom.xml
openflowjava/features-openflowjava-aggregator/features-openflowjava/pom.xml
openflowjava/features-openflowjava-aggregator/odl-openflowjava-protocol/pom.xml
openflowjava/features-openflowjava-aggregator/odl-openflowjava-protocol/src/main/feature/feature.xml
openflowjava/features-openflowjava-aggregator/pom.xml
openflowjava/openflow-protocol-api/src/main/yang/openflow-protocol.yang
openflowjava/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/connection/TlsConfigurationImplTest.java
openflowjava/openflow-protocol-impl/pom.xml
openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/TcpChannelInitializer.java
openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/connection/AbstractOutboundQueueManager.java
openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/connection/AbstractRpcListener.java
openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/GetAsyncReplyMessageFactory.java
openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/MultipartReplyMessageFactory.java
openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/SetAsyncInputMessageFactory.java
openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GetAsyncReplyMessageFactory.java
openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/SetAsyncInputMessageFactory.java
openflowjava/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/core/PublishingChannelInitializerFactoryTest.java
openflowjava/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/core/PublishingChannelInitializerTest.java
openflowjava/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/core/SslContextFactoryTest.java
openflowjava/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/core/connection/SwitchConnectionProviderImpl02Test.java
openflowjava/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/core/connection/SwitchConnectionProviderImplTest.java
openflowjava/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/GetAsyncReplyMessageFactoryTest.java
openflowjava/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/SetAsyncInputMessageFactoryTest.java
openflowjava/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/action/OF13SetFieldActionSerializerTest.java
openflowjava/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GetAsyncReplyMessageFactoryTest.java
openflowjava/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/SetAsyncInputMessageFactoryTest.java
openflowjava/openflow-protocol-it/src/test/java/org/opendaylight/openflowjava/protocol/it/integration/IntegrationTest.java
openflowjava/openflow-protocol-spi/src/main/yang/openflow-switch-connection-config.yang
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/OFConstants.java
openflowplugin-impl/pom.xml
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/MultipartReplyTranslatorUtil.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/BuildSwitchCapabilitiesOF10.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/BuildSwitchCapabilitiesOF13.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/SwitchFeaturesUtil.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/initialization/OF10DeviceInitializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/lifecycle/ContextChainHolderImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyGroupFeaturesDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyMeterFeaturesDeserializer.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/AbstractMultipartRequestCallback.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/AbstractMultipartRequestOnTheFlyCallback.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/AbstractRequestCallback.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/AbstractService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/multilayer/MultiLayerAggregateFlowMultipartService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/multilayer/MultiLayerExperimenterMultipartService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/multilayer/MultiLayerFlowService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/multilayer/MultiLayerTableMultipartService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/sal/SalAsyncConfigServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/sal/SalBundleServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/sal/SalFlowServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/singlelayer/SingleLayerAggregateFlowMultipartService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/singlelayer/SingleLayerExperimenterMultipartService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/singlelayer/SingleLayerTableMultipartService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/util/RequestContextUtil.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/GroupFeaturesService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/MeterFeaturesService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/OpendaylightDirectStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/multilayer/FlowDirectStatisticsService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/multilayer/GroupDirectStatisticsService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/DeviceInitializationUtil.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/SwitchFeaturesUtilTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/TransactionChainManagerTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/multipart/MultipartReplyGroupFeaturesDeserializerTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/MultipartRequestOnTheFlyCallbackTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/batch/FlatBatchFlowAdaptersTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/batch/FlatBatchGroupAdaptersTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/batch/FlatBatchMeterAdaptersTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/sal/SalFlatBatchServiceImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/sal/SalFlowsBatchServiceImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/sal/SalGroupsBatchServiceImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/services/sal/SalMetersBatchServiceImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/FlatBatchUtilTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/FlowUtilTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/GroupUtilTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/MeterUtilTest.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertor.java
parent/pom.xml
samples/pom.xml
test-provider/pom.xml

index 0c31367e60071145cbfa47727c590d8ef5e2e1d6..8eec6568fb3ecc2c58d8897a42a2926238b13967 100644 (file)
@@ -11,17 +11,15 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.base.Function;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
@@ -81,6 +79,7 @@ import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.RpcService;
+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;
@@ -131,7 +130,7 @@ public class ArbitratorReconciliationManagerImpl implements ArbitratorReconcileS
             final UpgradeState upgradeState) {
         Preconditions.checkArgument(rpcRegistry != null, "RpcConsumerRegistry cannot be null !");
         this.reconciliationManager = requireNonNull(reconciliationManager, "ReconciliationManager cannot be null!");
-        this.salBundleService = requireNonNull(rpcRegistry.getRpcService(SalBundleService.class),
+        salBundleService = requireNonNull(rpcRegistry.getRpcService(SalBundleService.class),
                 "RPC SalBundleService not found.");
         this.rpcProviderService = rpcProviderService;
         this.upgradeState = requireNonNull(upgradeState, "UpgradeState cannot be null!");
@@ -181,8 +180,8 @@ public class ArbitratorReconciliationManagerImpl implements ArbitratorReconcileS
         }
         return RpcResultBuilder.success(new CommitActiveBundleOutputBuilder()
                 .setResult(null).build())
-                .withRpcErrors(Collections.singleton(RpcResultBuilder.newError(RpcError.ErrorType.APPLICATION,
-                        null, "No active bundle found for the node" + nodeId.toString()))).buildFuture();
+                .withRpcErrors(List.of(RpcResultBuilder.newError(ErrorType.APPLICATION,
+                        null, "No active bundle found for the node" + nodeId))).buildFuture();
     }
 
     @Override
@@ -198,9 +197,9 @@ public class ArbitratorReconciliationManagerImpl implements ArbitratorReconcileS
                         .setResult(bundleDetails.getBundleId())
                         .build())
                         .buildFuture();
-            } catch (InterruptedException | ExecutionException | NullPointerException e) {
+            } catch (InterruptedException | ExecutionException e) {
                 return RpcResultBuilder.<GetActiveBundleOutput>failed()
-                        .withRpcErrors(Collections.singleton(RpcResultBuilder.newError(RpcError.ErrorType.APPLICATION,
+                        .withRpcErrors(List.of(RpcResultBuilder.newError(ErrorType.APPLICATION,
                                 null, e.getMessage()))).buildFuture();
             }
         }
@@ -249,8 +248,6 @@ public class ArbitratorReconciliationManagerImpl implements ArbitratorReconcileS
         return executor.submit(upgradeReconTask);
     }
 
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-            justification = "https://github.com/spotbugs/spotbugs/issues/811")
     private static Messages createMessages(final NodeRef nodeRef) {
         final List<Message> messages = new ArrayList<>();
         messages.add(new MessageBuilder()
@@ -365,7 +362,7 @@ public class ArbitratorReconciliationManagerImpl implements ArbitratorReconcileS
                 }
             } else {
                 resultSink = RpcResultBuilder.<CommitActiveBundleOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "action of " + action + " failed");
+                        .withError(ErrorType.APPLICATION, "action of " + action + " failed");
             }
             return resultSink.build();
         };
@@ -376,8 +373,7 @@ public class ArbitratorReconciliationManagerImpl implements ArbitratorReconcileS
                 .child(Node.class, new NodeKey(node.getNodeId()));
         LOG.debug("The path is registered : {}", path);
         ObjectRegistration<? extends RpcService> rpcRegistration =
-                rpcProviderService.registerRpcImplementation(ArbitratorReconcileService.class,
-                        this, ImmutableSet.of(path));
+                rpcProviderService.registerRpcImplementation(ArbitratorReconcileService.class, this, Set.of(path));
         rpcRegistrations.put(node.getNodeId().getValue(), rpcRegistration);
     }
 
@@ -410,8 +406,6 @@ public class ArbitratorReconciliationManagerImpl implements ArbitratorReconcileS
         }
     }
 
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-            justification = "https://github.com/spotbugs/spotbugs/issues/811")
     private static Uint64 getDpnIdFromNodeName(final String nodeName) {
         String dpnId = nodeName.substring(nodeName.lastIndexOf(SEPARATOR) + 1);
         return Uint64.valueOf(dpnId);
index 65063296b211e95529e6c7c216ffabf4dfc3c434..3e0bfe557a35bca657fe465e8fe72e76fd56a74d 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index d4392cfa25462347260839414ac3099367dfe46e..ea323eedf446f947ad61a569da2c1bb95fe20cff 100644 (file)
@@ -71,7 +71,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalF
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
 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.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
@@ -159,7 +159,7 @@ public class SalBulkFlowServiceImpl implements SalBulkFlowService {
             @Override
             public void onFailure(final Throwable throwable) {
                 RpcResultBuilder<Void> rpcResultBld = RpcResultBuilder.<Void>failed()
-                        .withRpcErrors(Collections.singleton(RpcResultBuilder.newError(RpcError.ErrorType.APPLICATION,
+                        .withRpcErrors(Collections.singleton(RpcResultBuilder.newError(ErrorType.APPLICATION,
                                 null, throwable.getMessage())));
                 rpcResult.set(rpcResultBld.build());
             }
index f7145b82ccaa23c03351a2a42e1f00b089eaafca..731232da9a71f552e1fa6ffca14518d5cafc4b88 100644 (file)
@@ -12,6 +12,7 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.MoreExecutors;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Collection;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.binding.api.DataBroker;
@@ -44,12 +45,15 @@ public abstract class AbstractListeningCommiter<T extends DataObject>
     protected final ListenerRegistrationHelper registrationHelper;
     protected ListenerRegistration<AbstractListeningCommiter> listenerRegistration;
 
-    public AbstractListeningCommiter(final ForwardingRulesManager provider, final DataBroker dataBroker,
+    @SuppressFBWarnings(value = "MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR", justification = "See FIXME below")
+    protected AbstractListeningCommiter(final ForwardingRulesManager provider, final DataBroker dataBroker,
                                      final ListenerRegistrationHelper registrationHelper) {
         this.provider = requireNonNull(provider, "ForwardingRulesManager can not be null!");
         this.nodeConfigurator = requireNonNull(provider.getNodeConfigurator(), "NodeConfigurator can not be null!");
         this.dataBroker = requireNonNull(dataBroker, "DataBroker can not be null!");
         this.registrationHelper = requireNonNull(registrationHelper, "registrationHelper can not be null!");
+
+        // FIXME: this may start listening on an uninitialized object: clean up the lifecycle here
         registerListener();
         provider.addRecoverableListener(this);
     }
@@ -112,7 +116,7 @@ public abstract class AbstractListeningCommiter<T extends DataObject>
     }
 
     @Override
-    public void registerListener() {
+    public final void registerListener() {
         final DataTreeIdentifier<T> treeId =
                 DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, getWildCardPath());
         Futures.addCallback(registrationHelper.checkedRegisterListener(treeId, this),
index 26d02fe6b63dcea40b96b6b5ad55517b4ac07cb2..93ddbb3bd4b5e0f8725029d3308ca14bd06d7de8 100644 (file)
@@ -55,7 +55,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.on
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleFlags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleId;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint32;
@@ -72,7 +72,7 @@ public class BundleFlowForwarder implements BundleMessagesCommiter<Flow> {
 
     public BundleFlowForwarder(final ForwardingRulesManager forwardingRulesManager) {
         this.forwardingRulesManager = requireNonNull(forwardingRulesManager, "ForwardingRulesManager can not be null!");
-        this.nodeConfigurator = requireNonNull(forwardingRulesManager.getNodeConfigurator(),
+        nodeConfigurator = requireNonNull(forwardingRulesManager.getNodeConfigurator(),
                 "NodeConfigurator can not be null!");
     }
 
@@ -200,19 +200,19 @@ public class BundleFlowForwarder implements BundleMessagesCommiter<Flow> {
                         }, MoreExecutors.directExecutor());
                     } else {
                         LOG.debug("Group {} not present in the config inventory", groupId);
-                        resultFuture = Futures.immediateFuture(RpcResultBuilder.<AddBundleMessagesOutput>failed()
-                                .withError(RpcError.ErrorType.APPLICATION,
-                                        "Group " + groupId + " not present in the config inventory").build());
+                        resultFuture = RpcResultBuilder.<AddBundleMessagesOutput>failed()
+                                .withError(ErrorType.APPLICATION,
+                                        "Group " + groupId + " not present in the config inventory").buildFuture();
                     }
                 } catch (InterruptedException | ExecutionException e) {
                     LOG.error("Error while reading group from config datastore for the group ID {}", groupId, e);
-                    resultFuture = Futures.immediateFuture(RpcResultBuilder.<AddBundleMessagesOutput>failed()
-                            .withError(RpcError.ErrorType.APPLICATION,
-                                    "Group " + groupId + " not present in the config inventory").build());
+                    resultFuture = RpcResultBuilder.<AddBundleMessagesOutput>failed()
+                            .withError(ErrorType.APPLICATION,
+                                    "Group " + groupId + " not present in the config inventory").buildFuture();
                 }
             }
         } else {
-            resultFuture = Futures.immediateFuture(RpcResultBuilder.<AddBundleMessagesOutput>success().build());
+            resultFuture = RpcResultBuilder.<AddBundleMessagesOutput>success().buildFuture();
         }
         return resultFuture;
     }
@@ -233,8 +233,8 @@ public class BundleFlowForwarder implements BundleMessagesCommiter<Flow> {
             this.bundleId = bundleId;
             this.messages = messages;
             this.resultFuture = resultFuture;
-            this.flowId = getFlowId(identifier);
-            this.tableId = getTableId(identifier);
+            flowId = getFlowId(identifier);
+            tableId = getTableId(identifier);
             nodeId = getNodeIdValueFromNodeIdentifier(nodeIdent);
         }
 
index 366847bb51aa6e6da3a132850ef75d43853d4234..f10635c544a13adaf7dddeb556eaed1153e80964 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.openflowplugin.applications.frm.impl;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Sets;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
@@ -61,6 +62,7 @@ public class DeviceMastershipManager implements ClusteredDataTreeChangeListener<
     private Set<InstanceIdentifier<FlowCapableNode>> activeNodes = Collections.emptySet();
     private MastershipChangeRegistration mastershipChangeServiceRegistration;
 
+    @SuppressFBWarnings(value = "MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR", justification = "Non-final for mocking")
     public DeviceMastershipManager(final ClusterSingletonServiceProvider clusterSingletonService,
                                    final FlowNodeReconciliation reconcliationAgent,
                                    final DataBroker dataBroker,
@@ -70,10 +72,10 @@ public class DeviceMastershipManager implements ClusteredDataTreeChangeListener<
         this.clusterSingletonService = clusterSingletonService;
         this.reconcliationAgent = reconcliationAgent;
         this.rpcProviderService = rpcProviderService;
-        this.reconcliationService = reconciliationService;
+        reconcliationService = reconciliationService;
         this.dataBroker = dataBroker;
         registerNodeListener();
-        this.mastershipChangeServiceRegistration = mastershipChangeServiceManager.register(this);
+        mastershipChangeServiceRegistration = mastershipChangeServiceManager.register(this);
     }
 
     public boolean isDeviceMastered(final NodeId nodeId) {
index a0d33067974e5f9dd0eada3f752c92d4d05d20d8..75131a3cfa2cec1349bfae6966836c7b12921553 100644 (file)
@@ -62,7 +62,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleId;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint32;
@@ -340,17 +340,17 @@ public class FlowForwarder extends AbstractListeningCommiter<Flow> {
                 builder.setGroupRef(new GroupRef(nodeIdent));
                 builder.setTransactionUri(new Uri(provider.getNewTransactionId()));
                 AddGroupInput addGroupInput = builder.build();
-                resultFuture = this.provider.getSalGroupService().addGroup(addGroupInput);
+                resultFuture = provider.getSalGroupService().addGroup(addGroupInput);
             } else {
-                resultFuture = Futures.immediateFuture(RpcResultBuilder.<AddGroupOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION,
-                                "Group " + groupId + " not present in the config inventory").build());
+                resultFuture = RpcResultBuilder.<AddGroupOutput>failed()
+                        .withError(ErrorType.APPLICATION,
+                                "Group " + groupId + " not present in the config inventory").buildFuture();
             }
         } catch (InterruptedException | ExecutionException e) {
             LOG.error("Error while reading group from config datastore for the group ID {}", groupId, e);
-            resultFuture = Futures.immediateFuture(RpcResultBuilder.<AddGroupOutput>failed()
-                    .withError(RpcError.ErrorType.APPLICATION,
-                            "Error while reading group " + groupId + " from inventory").build());
+            resultFuture = RpcResultBuilder.<AddGroupOutput>failed()
+                    .withError(ErrorType.APPLICATION,
+                            "Error while reading group " + groupId + " from inventory").buildFuture();
         }
         return resultFuture;
     }
index c37efe6cac1bcf7b5148ad60b0b2028656e0ce2a..95e5cadc5101efc88574157c732f0255399db0e4 100644 (file)
@@ -28,7 +28,8 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class FlowNodeConnectorInventoryTranslatorImpl extends AbstractNodeConnectorCommitter<FlowCapableNodeConnector>
+public final class FlowNodeConnectorInventoryTranslatorImpl
+        extends AbstractNodeConnectorCommitter<FlowCapableNodeConnector>
         implements FlowNodeConnectorInventoryTranslator {
 
     private static final Logger LOG = LoggerFactory.getLogger(FlowNodeConnectorInventoryTranslatorImpl.class);
index 2d9ab20f8c9b097f5f25cee79b7c87e25c17784e..f9d2378e309891bdc59db42492e4d463698bb59d 100644 (file)
@@ -19,7 +19,6 @@ 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.ThreadFactoryBuilder;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.math.BigInteger;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -595,8 +594,6 @@ public class FlowNodeReconciliationImpl implements FlowNodeReconciliation {
         }
     }
 
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-            justification = "https://github.com/spotbugs/spotbugs/issues/811")
     private static BigInteger getDpnIdFromNodeName(final String nodeName) {
         String dpId = nodeName.substring(nodeName.lastIndexOf(SEPARATOR) + 1);
         return new BigInteger(dpId);
@@ -742,8 +739,6 @@ public class FlowNodeReconciliationImpl implements FlowNodeReconciliation {
         return nodeIdent.child(StaleMeter.class, new StaleMeterKey(new MeterId(staleMeter.getMeterId())));
     }
 
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-            justification = "https://github.com/spotbugs/spotbugs/issues/811")
     private List<ListenableFuture<RpcResult<AddBundleMessagesOutput>>> addBundleMessages(final FlowCapableNode flowNode,
                                                          final BundleId bundleIdValue,
                                                          final InstanceIdentifier<FlowCapableNode> nodeIdentity) {
@@ -789,8 +784,6 @@ public class FlowNodeReconciliationImpl implements FlowNodeReconciliation {
                 .build();
     }
 
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-            justification = "https://github.com/spotbugs/spotbugs/issues/811")
     private static Messages createMessages(final NodeRef nodeRef) {
         final List<Message> messages = new ArrayList<>();
         messages.add(new MessageBuilder().setNode(nodeRef)
index 7e4b9013253515b917990c6dc089acd559c574f5..7b62d7025051613953224c27a6e6c65c769f7670 100644 (file)
@@ -68,7 +68,7 @@ import org.slf4j.LoggerFactory;
  *
  */
 @Singleton
-public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
+public final class ForwardingRulesManagerImpl implements ForwardingRulesManager {
     private static final Logger LOG = LoggerFactory.getLogger(ForwardingRulesManagerImpl.class);
 
     static final int STARTUP_LOOP_TICK = 1000;
@@ -127,10 +127,10 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
         staleMarkingEnabled = config.getStaleMarkingEnabled();
         reconciliationRetryCount = config.getReconciliationRetryCount().toJava();
         isBundleBasedReconciliationEnabled = config.getBundleBasedReconciliationEnabled();
-        this.configurationServiceRegistration = configurationService.registerListener(this);
+        configurationServiceRegistration = configurationService.registerListener(this);
         this.registrationHelper = requireNonNull(registrationHelper, "RegistrationHelper cannot be null");
-        this.dataService = requireNonNull(dataBroker, "DataBroker can not be null!");
-        this.clusterSingletonServiceProvider = requireNonNull(clusterSingletonService,
+        dataService = requireNonNull(dataBroker, "DataBroker can not be null!");
+        clusterSingletonServiceProvider = requireNonNull(clusterSingletonService,
                 "ClusterSingletonService provider can not be null");
         this.reconciliationManager = reconciliationManager;
         this.rpcProviderService = rpcProviderService;
@@ -139,21 +139,21 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
 
         Preconditions.checkArgument(rpcRegistry != null, "RpcProviderRegistry can not be null !");
 
-        this.salFlowService = requireNonNull(rpcRegistry.getRpcService(SalFlowService.class),
+        salFlowService = requireNonNull(rpcRegistry.getRpcService(SalFlowService.class),
                 "RPC SalFlowService not found.");
-        this.salGroupService = requireNonNull(rpcRegistry.getRpcService(SalGroupService.class),
+        salGroupService = requireNonNull(rpcRegistry.getRpcService(SalGroupService.class),
                 "RPC SalGroupService not found.");
-        this.salMeterService = requireNonNull(rpcRegistry.getRpcService(SalMeterService.class),
+        salMeterService = requireNonNull(rpcRegistry.getRpcService(SalMeterService.class),
                 "RPC SalMeterService not found.");
-        this.salTableService = requireNonNull(rpcRegistry.getRpcService(SalTableService.class),
+        salTableService = requireNonNull(rpcRegistry.getRpcService(SalTableService.class),
                 "RPC SalTableService not found.");
-        this.salBundleService = requireNonNull(rpcRegistry.getRpcService(SalBundleService.class),
+        salBundleService = requireNonNull(rpcRegistry.getRpcService(SalBundleService.class),
                 "RPC SalBundlService not found.");
         this.openflowServiceRecoveryHandler = requireNonNull(openflowServiceRecoveryHandler,
                 "Openflow service recovery handler cannot be null");
         this.serviceRecoveryRegistry = requireNonNull(serviceRecoveryRegistry,
                 "Service recovery registry cannot be null");
-        this.arbitratorReconciliationManager =
+        arbitratorReconciliationManager =
                 requireNonNull(rpcRegistry.getRpcService(ArbitratorReconcileService.class),
                         "ArbitratorReconciliationManager can not be null!");
     }
@@ -162,26 +162,26 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
     @PostConstruct
     public void start() {
         nodeConfigurator = new NodeConfiguratorImpl();
-        this.devicesGroupRegistry = new DevicesGroupRegistry();
-        this.nodeListener = new FlowNodeReconciliationImpl(this, dataService, SERVICE_NAME, FRM_RECONCILIATION_PRIORITY,
+        devicesGroupRegistry = new DevicesGroupRegistry();
+        nodeListener = new FlowNodeReconciliationImpl(this, dataService, SERVICE_NAME, FRM_RECONCILIATION_PRIORITY,
                 ResultState.DONOTHING, flowGroupCacheManager);
         if (this.isReconciliationDisabled()) {
             LOG.debug("Reconciliation is disabled by user");
         } else {
-            this.reconciliationNotificationRegistration = reconciliationManager.registerService(this.nodeListener);
+            reconciliationNotificationRegistration = reconciliationManager.registerService(nodeListener);
             LOG.debug("Reconciliation is enabled by user and successfully registered to the reconciliation framework");
         }
-        this.deviceMastershipManager = new DeviceMastershipManager(clusterSingletonServiceProvider, this.nodeListener,
+        deviceMastershipManager = new DeviceMastershipManager(clusterSingletonServiceProvider, nodeListener,
                 dataService, mastershipChangeServiceManager, rpcProviderService,
                 new FrmReconciliationServiceImpl(this));
         flowNodeConnectorInventoryTranslatorImpl = new FlowNodeConnectorInventoryTranslatorImpl(dataService);
 
-        this.bundleFlowListener = new BundleFlowForwarder(this);
-        this.bundleGroupListener = new BundleGroupForwarder(this);
-        this.flowListener = new FlowForwarder(this, dataService, registrationHelper);
-        this.groupListener = new GroupForwarder(this, dataService, registrationHelper);
-        this.meterListener = new MeterForwarder(this, dataService, registrationHelper);
-        this.tableListener = new TableForwarder(this, dataService, registrationHelper);
+        bundleFlowListener = new BundleFlowForwarder(this);
+        bundleGroupListener = new BundleGroupForwarder(this);
+        flowListener = new FlowForwarder(this, dataService, registrationHelper);
+        groupListener = new GroupForwarder(this, dataService, registrationHelper);
+        meterListener = new MeterForwarder(this, dataService, registrationHelper);
+        tableListener = new TableForwarder(this, dataService, registrationHelper);
         LOG.info("ForwardingRulesManager has started successfully.");
     }
 
@@ -190,32 +190,32 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
     public void close() throws Exception {
         configurationServiceRegistration.close();
 
-        if (this.flowListener != null) {
-            this.flowListener.close();
-            this.flowListener = null;
+        if (flowListener != null) {
+            flowListener.close();
+            flowListener = null;
         }
-        if (this.groupListener != null) {
-            this.groupListener.close();
-            this.groupListener = null;
+        if (groupListener != null) {
+            groupListener.close();
+            groupListener = null;
         }
-        if (this.meterListener != null) {
-            this.meterListener.close();
-            this.meterListener = null;
+        if (meterListener != null) {
+            meterListener.close();
+            meterListener = null;
         }
-        if (this.tableListener != null) {
-            this.tableListener.close();
-            this.tableListener = null;
+        if (tableListener != null) {
+            tableListener.close();
+            tableListener = null;
         }
-        if (this.nodeListener != null) {
-            this.nodeListener.close();
-            this.nodeListener = null;
+        if (nodeListener != null) {
+            nodeListener.close();
+            nodeListener = null;
         }
         if (deviceMastershipManager != null) {
             deviceMastershipManager.close();
         }
-        if (this.reconciliationNotificationRegistration != null) {
-            this.reconciliationNotificationRegistration.close();
-            this.reconciliationNotificationRegistration = null;
+        if (reconciliationNotificationRegistration != null) {
+            reconciliationNotificationRegistration.close();
+            reconciliationNotificationRegistration = null;
         }
     }
 
@@ -276,7 +276,7 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
 
     @Override
     public DevicesGroupRegistry getDevicesGroupRegistry() {
-        return this.devicesGroupRegistry;
+        return devicesGroupRegistry;
     }
 
     @Override
@@ -375,16 +375,16 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
         if (forwardingRulesProperty != null) {
             switch (forwardingRulesProperty) {
                 case DISABLE_RECONCILIATION:
-                    disableReconciliation = Boolean.valueOf(propertyValue);
+                    disableReconciliation = Boolean.parseBoolean(propertyValue);
                     break;
                 case STALE_MARKING_ENABLED:
-                    staleMarkingEnabled = Boolean.valueOf(propertyValue);
+                    staleMarkingEnabled = Boolean.parseBoolean(propertyValue);
                     break;
                 case RECONCILIATION_RETRY_COUNT:
                     reconciliationRetryCount = Integer.parseInt(propertyValue);
                     break;
                 case BUNDLE_BASED_RECONCILIATION_ENABLED:
-                    isBundleBasedReconciliationEnabled = Boolean.valueOf(propertyValue);
+                    isBundleBasedReconciliationEnabled = Boolean.parseBoolean(propertyValue);
                     break;
                 default:
                     LOG.warn("No forwarding rule property found.");
index 37a14c0e410afa2a3815906e16e302811d5eee7a..9e43568b9a6a202950ffa175b5b1f80566d18c2e 100644 (file)
@@ -25,7 +25,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.app.frm.reconciliation.service.rev180227.ReconcileNodeOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.app.frm.reconciliation.service.rev180227.ReconcileNodeOutputBuilder;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
@@ -79,7 +79,7 @@ public class FrmReconciliationServiceImpl implements FrmReconciliationService {
                 futureResult.set(RpcResultBuilder.success(output).build());
             } else {
                 futureResult.set(RpcResultBuilder.<ReconcileNodeOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "Error while triggering reconciliation").build());
+                        .withError(ErrorType.APPLICATION, "Error while triggering reconciliation").build());
             }
 
         }
@@ -88,7 +88,7 @@ public class FrmReconciliationServiceImpl implements FrmReconciliationService {
         public void onFailure(Throwable error) {
             LOG.error("initReconciliation failed", error);
             futureResult.set(RpcResultBuilder.<ReconcileNodeOutput>failed()
-                    .withError(RpcError.ErrorType.RPC,"Error while calling RPC").build());
+                    .withError(ErrorType.RPC, "Error while calling RPC").build());
         }
     }
 }
index b9bd0f30831f78f121faf01ce9cb8681c8cdd54b..a6e16c6bd6e87c4fe44c4bf5637274a35f282496 100644 (file)
@@ -18,7 +18,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @Singleton
-public class OpenflowServiceRecoveryHandlerImpl implements ServiceRecoveryInterface,
+public final class OpenflowServiceRecoveryHandlerImpl implements ServiceRecoveryInterface,
         OpenflowServiceRecoveryHandler {
 
     private static final Logger LOG = LoggerFactory.getLogger(OpenflowServiceRecoveryHandlerImpl.class);
index 85870820852669526b470cf23cd38d0390a93b03..ebd10d89ef4f4138def2719b41302761bd32d481 100644 (file)
@@ -11,7 +11,6 @@ import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 import org.opendaylight.openflowplugin.applications.frsync.SemaphoreKeeper;
@@ -86,8 +85,6 @@ public class SyncReactorGuardDecorator implements SyncReactor {
         };
     }
 
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-            justification = "https://github.com/spotbugs/spotbugs/issues/811")
     private static String formatNanos(final long nanos) {
         return "'" + TimeUnit.NANOSECONDS.toMillis(nanos) + " ms'";
     }
index 1771f89dea1a61bc76c5024c322d876b4c455aa5..49c15ca0123884b6ce40aae322e12479fa5fb929 100644 (file)
@@ -21,7 +21,7 @@ import org.slf4j.LoggerFactory;
 /**
  * {@link ClusterSingletonService} clusterSingletonServiceRegistration per connected device.
  */
-public class DeviceMastership implements ClusterSingletonService, AutoCloseable {
+public final class DeviceMastership implements ClusterSingletonService, AutoCloseable {
     private static final Logger LOG = LoggerFactory.getLogger(DeviceMastership.class);
     private final NodeId nodeId;
     private final ServiceGroupIdentifier identifier;
@@ -33,9 +33,9 @@ public class DeviceMastership implements ClusterSingletonService, AutoCloseable
                             final ReconciliationRegistry reconciliationRegistry,
                             final ClusterSingletonServiceProvider clusterSingletonService) {
         this.nodeId = nodeId;
-        this.identifier = ServiceGroupIdentifier.create(nodeId.getValue());
+        identifier = ServiceGroupIdentifier.create(nodeId.getValue());
         this.reconciliationRegistry = reconciliationRegistry;
-        this.deviceMastered = false;
+        deviceMastered = false;
         clusterSingletonServiceRegistration = clusterSingletonService.registerClusterSingletonService(this);
     }
 
index bb9e4baaeb8469ae2c4aae130f0cfe063b373fcb..f4c54b4def892f5e7864e29946fe131823594c8e 100644 (file)
@@ -30,7 +30,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowRe
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
 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.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
@@ -70,7 +70,7 @@ public class FlowForwarder implements ForwardingRulesCommitter<Flow, AddFlowOutp
             return salFlowService.removeFlow(builder.build());
         } else {
             return RpcResultBuilder.<RemoveFlowOutput>failed()
-                    .withError(RpcError.ErrorType.APPLICATION, TABLE_ID_MISMATCH).buildFuture();
+                    .withError(ErrorType.APPLICATION, TABLE_ID_MISMATCH).buildFuture();
         }
     }
 
@@ -97,7 +97,7 @@ public class FlowForwarder implements ForwardingRulesCommitter<Flow, AddFlowOutp
             output = salFlowService.updateFlow(builder.build());
         } else {
             output = RpcResultBuilder.<UpdateFlowOutput>failed()
-                    .withError(RpcError.ErrorType.APPLICATION, TABLE_ID_MISMATCH).buildFuture();
+                    .withError(ErrorType.APPLICATION, TABLE_ID_MISMATCH).buildFuture();
         }
 
         return output;
@@ -120,8 +120,8 @@ public class FlowForwarder implements ForwardingRulesCommitter<Flow, AddFlowOutp
             builder.setFlowTable(new FlowTableRef(nodeIdent.child(Table.class, tableKey)));
             output = salFlowService.addFlow(builder.build());
         } else {
-            output = RpcResultBuilder.<AddFlowOutput>failed().withError(RpcError.ErrorType.APPLICATION,
-                    TABLE_ID_MISMATCH).buildFuture();
+            output = RpcResultBuilder.<AddFlowOutput>failed().withError(ErrorType.APPLICATION, TABLE_ID_MISMATCH)
+                .buildFuture();
         }
         return output;
     }
index 25c833a1757a95242c92da01fb5b355d55c8daa8..d954cf2129263e86fbb59c2183036dfb45c49413 100644 (file)
@@ -15,7 +15,6 @@ import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedHashMap;
@@ -186,8 +185,6 @@ public class SyncPlanPushStrategyFlatBatchImpl implements SyncPlanPushStrategy {
         };
     }
 
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-            justification = "https://github.com/spotbugs/spotbugs/issues/811")
     private static void decrementBatchFailuresCounters(final Collection<BatchFailure> batchFailures,
                                                 final Map<Range<Uint16>, Batch> batchMap,
                                                 final SyncCrudCounters counters) {
index edc463d89ac99e0cc9590b36c951fa957cb1d118..da2117120f17711f16eee157436f27bfaa3e8c1d 100644 (file)
@@ -45,7 +45,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.Upd
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableOutput;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
@@ -286,7 +286,7 @@ public class SyncPlanPushStrategyIncrementalImpl implements SyncPlanPushStrategy
             }
         } catch (IllegalStateException e) {
             chainedResult = RpcResultBuilder.<Void>failed()
-                    .withError(RpcError.ErrorType.APPLICATION, "failed to add missing groups", e)
+                    .withError(ErrorType.APPLICATION, "failed to add missing groups", e)
                     .buildFuture();
         }
 
@@ -470,7 +470,7 @@ public class SyncPlanPushStrategyIncrementalImpl implements SyncPlanPushStrategy
             }
         } catch (IllegalStateException e) {
             chainedResult = RpcResultBuilder.<Void>failed()
-                    .withError(RpcError.ErrorType.APPLICATION, "failed to add missing groups", e)
+                    .withError(ErrorType.APPLICATION, "failed to add missing groups", e)
                     .buildFuture();
         }
 
index 1832ad76b03ca4864cbabb9bb5baeb8b26ab69d5..af58030a84019442df3a69a5782b3d9bcbcefcdf 100644 (file)
@@ -40,6 +40,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+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;
@@ -83,7 +84,7 @@ public final class ReconcileUtil {
                 }
             } else {
                 resultSink = RpcResultBuilder.<Void>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "previous " + previousItemAction + " failed");
+                        .withError(ErrorType.APPLICATION, "previous " + previousItemAction + " failed");
             }
             return resultSink.build();
         };
@@ -110,7 +111,7 @@ public final class ReconcileUtil {
                 }
             } else {
                 resultSink = RpcResultBuilder.<Void>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "action of " + actionDescription + " failed");
+                        .withError(ErrorType.APPLICATION, "action of " + actionDescription + " failed");
             }
             return resultSink.build();
         };
@@ -183,21 +184,13 @@ public final class ReconcileUtil {
 
                 final Group existingGroup = installedGroups.get(group.getGroupId().getValue());
                 if (existingGroup != null) {
-                    if (!gatherUpdates) {
+                    if (!gatherUpdates || group.equals(existingGroup)) {
                         iterator.remove();
-                    } else {
+                    } else if (checkGroupPrecondition(installedGroups.keySet(), group)) {
                         // check buckets and eventually update
-                        if (group.equals(existingGroup)) {
-                            iterator.remove();
-                        } else {
-                            if (checkGroupPrecondition(installedGroups.keySet(), group)) {
-                                iterator.remove();
-                                LOG.trace("Group {} on device {} differs - planned for update", group.getGroupId(),
-                                        nodeId);
-                                stepPlan.getItemsToUpdate().add(new ItemSyncBox.ItemUpdateTuple<>(existingGroup,
-                                        group));
-                            }
-                        }
+                        iterator.remove();
+                        LOG.trace("Group {} on device {} differs - planned for update", group.getGroupId(), nodeId);
+                        stepPlan.getItemsToUpdate().add(new ItemSyncBox.ItemUpdateTuple<>(existingGroup, group));
                     }
                 } else if (checkGroupPrecondition(installedGroups.keySet(), group)) {
                     iterator.remove();
index 92a47543674a485cc178842a940fd2ea1b93d6eb..b3da817d8928db68e56b6812e57bec5fb46ca11d 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.openflowplugin.applications.lldpspeaker;
 
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.when;
 import static org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType.DELETE;
 import static org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType.SUBTREE_MODIFIED;
@@ -81,7 +81,7 @@ public class NodeConnectorInventoryEventTranslatorTest {
         FlowCapableNodeConnector fcnc = TestUtils.createFlowCapableNodeConnector(true, false).build();
         DataTreeModification dataTreeModification = setupDataTreeChange(WRITE, ID, fcnc);
         translator.onDataTreeChanged(Collections.singleton(dataTreeModification));
-        verifyZeroInteractions(eventsObserver);
+        verifyNoInteractions(eventsObserver);
     }
 
     /**
@@ -92,7 +92,7 @@ public class NodeConnectorInventoryEventTranslatorTest {
         FlowCapableNodeConnector fcnc = TestUtils.createFlowCapableNodeConnector(false, true).build();
         DataTreeModification dataTreeModification = setupDataTreeChange(WRITE, ID, fcnc);
         translator.onDataTreeChanged(Collections.singleton(dataTreeModification));
-        verifyZeroInteractions(eventsObserver);
+        verifyNoInteractions(eventsObserver);
     }
 
     /**
index 22b78c236887cc6533348854bacc95b58160a0df..d4047848057552ffa1e8a0d44debbe8e0a5b2436 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index d9e5998fa93c0e455ab0431832339e341447e81e..5254c0be5607afbd2a5b0847bfd25b97328b1fa8 100644 (file)
     <packaging>bundle</packaging>
 
     <dependencies>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.core</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.openflowplugin</groupId>
             <artifactId>openflowplugin-api</artifactId>
             <artifactId>org.apache.karaf.shell.console</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.framework</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.guicedee.services</groupId>
             <artifactId>javax.inject</artifactId>
index e95bd08fe305bab8645812d634e1c54a11b9b887..c9f2aa9965e1d84a0f0d60ba87b1d2e7157687c7 100644 (file)
     <packaging>bundle</packaging>
 
     <dependencies>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.core</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-api</artifactId>
             <artifactId>org.apache.karaf.shell.console</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.framework</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.openflowplugin.applications</groupId>
             <artifactId>forwardingrules-manager</artifactId>
index fd22171e69525ee84cbf594f05833c741bdfece4..0285b727e4c673e2b345e9d83e69a45c3b630a69 100644 (file)
@@ -5,7 +5,6 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.applications.southboundcli;
 
 import static java.util.Objects.requireNonNull;
@@ -13,7 +12,6 @@ import static java.util.Objects.requireNonNull;
 import java.util.Collection;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.DataObjectModification;
@@ -33,12 +31,12 @@ public class NodeListener implements ClusteredDataTreeChangeListener<FlowCapable
     public static final String DEFAULT_DPN_NAME = "UNKNOWN";
     public static final String SEPARATOR = ":";
 
+    private final Map<Long, String> dpnIdToNameCache = new ConcurrentHashMap<>();
     private final DataBroker dataBroker;
     private ListenerRegistration<?> listenerReg;
-    private Map<Long, String> dpnIdToNameCache;
 
-    public NodeListener(DataBroker broker) {
-        this.dataBroker = broker;
+    public NodeListener(final DataBroker broker) {
+        dataBroker = broker;
     }
 
     public void start() {
@@ -47,7 +45,6 @@ public class NodeListener implements ClusteredDataTreeChangeListener<FlowCapable
         final DataTreeIdentifier<FlowCapableNode> identifier =
                 DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, path);
         listenerReg = dataBroker.registerDataTreeChangeListener(identifier, NodeListener.this);
-        dpnIdToNameCache = new ConcurrentHashMap<>();
     }
 
     @Override
@@ -58,7 +55,7 @@ public class NodeListener implements ClusteredDataTreeChangeListener<FlowCapable
     }
 
     @Override
-    public void onDataTreeChanged(@NonNull Collection<DataTreeModification<FlowCapableNode>> changes) {
+    public void onDataTreeChanged(final Collection<DataTreeModification<FlowCapableNode>> changes) {
         requireNonNull(changes, "Changes may not be null!");
         for (DataTreeModification<FlowCapableNode> change : changes) {
             final InstanceIdentifier<FlowCapableNode> key = change.getRootPath().getRootIdentifier();
@@ -84,7 +81,7 @@ public class NodeListener implements ClusteredDataTreeChangeListener<FlowCapable
         }
     }
 
-    private void remove(InstanceIdentifier<FlowCapableNode> instId, FlowCapableNode delNode) {
+    private void remove(final InstanceIdentifier<FlowCapableNode> instId, final FlowCapableNode delNode) {
         LOG.trace("Received remove notification for {}", delNode);
         String[] node = instId.firstKeyOf(Node.class).getId().getValue().split(SEPARATOR);
         if (node.length < 2) {
@@ -96,44 +93,33 @@ public class NodeListener implements ClusteredDataTreeChangeListener<FlowCapable
         dpnIdToNameCache.remove(dpnId);
     }
 
-    private void update(InstanceIdentifier<FlowCapableNode> instId, FlowCapableNode dataObjectModificationBefore,
-                          FlowCapableNode dataObjectModificationAfter) {
+    private void update(final InstanceIdentifier<FlowCapableNode> instId,
+            final FlowCapableNode dataObjectModificationBefore, final FlowCapableNode dataObjectModificationAfter) {
 
         LOG.trace("Received update notification {}", instId);
         String[] node = instId.firstKeyOf(Node.class).getId().getValue().split(SEPARATOR);
         if (node.length < 2) {
-            LOG.error("Failed to add Unexpected nodeId {}", instId.firstKeyOf(Node.class).getId()
-                    .getValue());
+            LOG.error("Failed to add Unexpected nodeId {}", instId.firstKeyOf(Node.class).getId().getValue());
             return;
         }
         long dpnId = Long.parseLong(node[1]);
-        try {
-            String nodeName = dataObjectModificationAfter.getDescription();
-            if (nodeName != null) {
-                dpnIdToNameCache.put(dpnId, nodeName);
-            } else {
-                dpnIdToNameCache.put(dpnId , DEFAULT_DPN_NAME);
-            }
-        } catch (NullPointerException e) {
-            LOG.error("Error while converting Node:{} to FlowCapableNode: ", dpnId, e);
+        String nodeName = dataObjectModificationAfter == null ? null : dataObjectModificationAfter.getDescription();
+        if (nodeName != null) {
+            dpnIdToNameCache.put(dpnId, nodeName);
+        } else {
+            dpnIdToNameCache.put(dpnId, DEFAULT_DPN_NAME);
         }
     }
 
-    private void add(InstanceIdentifier<FlowCapableNode> instId, FlowCapableNode addNode) {
+    private void add(final InstanceIdentifier<FlowCapableNode> instId, final FlowCapableNode addNode) {
         LOG.trace("Received ADD notification for {}", instId);
         String[] node = instId.firstKeyOf(Node.class).getId().getValue().split(SEPARATOR);
         if (node.length < 2) {
-            LOG.error("Failed to add Unexpected nodeId {}", instId.firstKeyOf(Node.class).getId()
-                    .getValue());
+            LOG.error("Failed to add Unexpected nodeId {}", instId.firstKeyOf(Node.class).getId().getValue());
             return;
         }
         long dpnId = Long.parseLong(node[1]);
-        String dpnName = null;
-        try {
-            dpnName = addNode.getDescription();
-        } catch (NullPointerException e) {
-            LOG.error("Error while converting Node:{} to FlowCapableNode: ", dpnId, e);
-        }
+        String dpnName = addNode == null ? null : addNode.getDescription();
         LOG.trace("Adding DPNID {} to cache", dpnId);
         if (dpnName == null) {
             dpnName = DEFAULT_DPN_NAME;
index f7f7e7b19a3d9d79c09f719959830084ac1f3ed4..d20ba88a75700b86f3b9f8833dcb46d8da106623 100644 (file)
@@ -12,15 +12,16 @@ import static org.opendaylight.openflowplugin.api.openflow.ReconciliationState.R
 import static org.opendaylight.openflowplugin.api.openflow.ReconciliationState.ReconciliationStatus.FAILED;
 import static org.opendaylight.openflowplugin.api.openflow.ReconciliationState.ReconciliationStatus.STARTED;
 
+import com.google.common.collect.ImmutableSet;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.Set;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -53,7 +54,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.app.reconciliation.service.rev180227.reconciliation.counter.ReconcileCounterBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.app.reconciliation.service.rev180227.reconciliation.counter.ReconcileCounterKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorTag;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint32;
@@ -94,9 +96,9 @@ public class ReconciliationServiceImpl implements ReconciliationService, AutoClo
     @Override
     public ListenableFuture<RpcResult<ReconcileOutput>> reconcile(final ReconcileInput input) {
         boolean reconcileAllNodes = input.getReconcileAllNodes();
-        List<Uint64> inputNodes = input.getNodes();
+        Set<Uint64> inputNodes = input.getNodes();
         if (inputNodes == null) {
-            inputNodes = new ArrayList<>();
+            inputNodes = Set.of();
         }
         if (reconcileAllNodes && inputNodes.size() > 0) {
             return buildErrorResponse("Error executing command reconcile. "
@@ -116,7 +118,7 @@ public class ReconciliationServiceImpl implements ReconciliationService, AutoClo
                 return buildErrorResponse("Error executing command reconcile. "
                         + "Node(s) not found: " + String.join(", ", unresolvedNodes.toString()));
             }
-            List<Uint64> inprogressNodes = new ArrayList<>();
+            ImmutableSet.Builder<Uint64> inprogressNodes = ImmutableSet.builder();
             nodesToReconcile.parallelStream().forEach(nodeId -> {
                 ReconciliationState state = getReconciliationState(nodeId);
                 if (state != null && state.getState().equals(STARTED)) {
@@ -130,7 +132,7 @@ public class ReconciliationServiceImpl implements ReconciliationService, AutoClo
                 }
             });
             ReconcileOutput reconcilingInProgress = new ReconcileOutputBuilder()
-                    .setInprogressNodes(inprogressNodes)
+                    .setInprogressNodes(inprogressNodes.build())
                     .build();
             result.set(RpcResultBuilder.success(reconcilingInProgress).build());
             return result;
@@ -147,7 +149,7 @@ public class ReconciliationServiceImpl implements ReconciliationService, AutoClo
     private static ListenableFuture<RpcResult<ReconcileOutput>> buildErrorResponse(final String msg) {
         LOG.error("Error {}", msg);
         return RpcResultBuilder.<ReconcileOutput>failed()
-                .withError(RpcError.ErrorType.PROTOCOL, "reconcile", msg)
+                .withError(ErrorType.PROTOCOL, new ErrorTag("reconcile"), msg)
                 .buildFuture();
     }
 
@@ -180,22 +182,23 @@ public class ReconciliationServiceImpl implements ReconciliationService, AutoClo
                 if (rpcResult.isSuccessful()) {
                     increaseReconcileCount(true);
                     updateReconciliationState(COMPLETED);
-                    LOG.info("Reconciliation successfully completed for node {}", this.nodeId);
+                    LOG.info("Reconciliation successfully completed for node {}", nodeId);
                 } else {
                     increaseReconcileCount(false);
                     updateReconciliationState(FAILED);
-                    LOG.error("Reconciliation failed for node {} with error {}", this.nodeId, rpcResult.getErrors());
+                    LOG.error("Reconciliation failed for node {} with error {}", nodeId, rpcResult.getErrors());
                 }
             } catch (ExecutionException | InterruptedException e) {
                 increaseReconcileCount(false);
                 updateReconciliationState(FAILED);
-                LOG.error("Error occurred while invoking reconcile RPC for node {}", this.nodeId, e);
+                LOG.error("Error occurred while invoking reconcile RPC for node {}", nodeId, e);
             } finally {
                 alarmAgent.clearNodeReconciliationAlarm(nodeId.longValue());
             }
         }
 
         private void increaseReconcileCount(final boolean isSuccess) {
+            // FIXME: do not use SimpleDateFormat
             final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_AND_TIME_FORMAT);
             InstanceIdentifier<ReconcileCounter> instanceIdentifier = InstanceIdentifier
                     .builder(ReconciliationCounter.class).child(ReconcileCounter.class,
index 135e8498ae54d45f8c881012e48fc27b51e95556..5653acb17d0a7f673125708619ca21338168ea61 100644 (file)
@@ -11,24 +11,14 @@ import java.util.Formatter;
 import java.util.List;
 import org.apache.felix.gogo.commands.Command;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.openflowplugin.applications.southboundcli.NodeListener;
 import org.opendaylight.openflowplugin.applications.southboundcli.util.OFNode;
 import org.opendaylight.openflowplugin.applications.southboundcli.util.ShellUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 @Command(scope = "openflow", name = "getallnodes", description = "Print all nodes from the operational datastore")
 public class GetAllNodesCommandProvider extends OsgiCommandSupport {
-    private static final Logger LOG = LoggerFactory.getLogger(GetAllNodesCommandProvider.class);
-
-    private DataBroker dataBroker;
     private NodeListener nodeListener;
 
-    public void setDataBroker(final DataBroker dataBroker) {
-        this.dataBroker = dataBroker;
-    }
-
     public void setNodeListener(final NodeListener nodeListener) {
         this.nodeListener = nodeListener;
     }
index 0239a46cedcff338bd79c0de9bf301f7ed15c3ee..5872cbd9831968b3a8ce77a32a86e4be66db0c8d 100644 (file)
@@ -5,12 +5,11 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.applications.southboundcli.cli;
 
-import java.util.ArrayList;
 import java.util.Formatter;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.stream.Collectors;
@@ -46,9 +45,9 @@ public class Reconciliation extends OsgiCommandSupport {
     @SuppressWarnings("checkstyle:RegexpSinglelineJava")
     @Override
     protected Object doExecute() throws Exception {
-        List<Uint64> nodes = nodeIds == null
-                ? new ArrayList<>()
-                : nodeIds.stream().distinct().map(Uint64::valueOf).collect(Collectors.toList());
+        Set<Uint64> nodes = nodeIds == null
+                ? Set.of()
+                : nodeIds.stream().distinct().map(Uint64::valueOf).collect(Collectors.toUnmodifiableSet());
         LOG.debug("Triggering reconciliation for nodes {}", nodes);
         ReconcileInput rpcInput = new ReconcileInputBuilder().setNodes(nodes)
                 .setReconcileAllNodes(reconcileAllNodes).build();
@@ -69,7 +68,7 @@ public class Reconciliation extends OsgiCommandSupport {
 
     @SuppressWarnings("checkstyle:RegexpSinglelineJava")
     private static void printInProgressNodes(ReconcileOutput reconcileOutput) {
-        List<Uint64> inprogressNodes = reconcileOutput.getInprogressNodes();
+        Set<Uint64> inprogressNodes = reconcileOutput.getInprogressNodes();
         if (inprogressNodes.size() > 0) {
             StringBuilder stringBuilder = new StringBuilder();
             final Formatter formatter = new Formatter(stringBuilder);
@@ -88,4 +87,4 @@ public class Reconciliation extends OsgiCommandSupport {
         formatter.close();
         return header;
     }
-}
\ No newline at end of file
+}
index d72029bf366bc574b8bb28a389d3617c10c6519b..66112519edbaf0474fe2cf929cb75dc52e90b856 100644 (file)
@@ -122,7 +122,7 @@ public final class ShellUtil {
             if (result.isPresent()) {
                 output = result.get().nonnullReconcileCounter().values();
             }
-        } catch (ExecutionException | InterruptedException | NullPointerException e) {
+        } catch (ExecutionException | InterruptedException e) {
             LOG.error("Error reading reconciliation counter from datastore", e);
         }
         return output;
index 04634716b5999cf2e83e3946218ccd60618f7f58..2ab42185d9a9a2c8a00b6676f09cd47e10fed23e 100644 (file)
@@ -20,7 +20,6 @@
     <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.0.0">
         <command name="openflow/getallnodes">
             <action class="org.opendaylight.openflowplugin.applications.southboundcli.cli.GetAllNodesCommandProvider">
-                <property name="dataBroker" ref="dataBroker" />
                 <property name="nodeListener" ref="nodeListener"/>
             </action>
         </command>
index fbc382f6b544a78deec4d2d1608298e84a9c6771..2c2a181bbe54604986539cdb269b884216072b62 100644 (file)
@@ -10,11 +10,11 @@ package org.opendaylight.openflowplugin.applications.topology.lldp;
 import com.google.common.annotations.VisibleForTesting;
 import java.util.Collection;
 import java.util.Date;
-import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -22,7 +22,6 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.DataObjectModification;
-import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
 import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
 import org.opendaylight.mdsal.binding.api.DataTreeModification;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
@@ -48,19 +47,20 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @Singleton
-public class LLDPLinkAger implements ConfigurationListener, ClusteredDataTreeChangeListener<Link>, AutoCloseable {
+public final class LLDPLinkAger implements ConfigurationListener, ClusteredDataTreeChangeListener<Link>, AutoCloseable {
     private static final Logger LOG = LoggerFactory.getLogger(LLDPLinkAger.class);
     static final String TOPOLOGY_ID = "flow:1";
     static final InstanceIdentifier<Link> II_TO_LINK = InstanceIdentifier.create(NetworkTopology.class)
             .child(Topology.class, new TopologyKey(new TopologyId(TOPOLOGY_ID))).child(Link.class);
 
     private final long linkExpirationTime;
-    private final Map<LinkDiscovered, Date> linkToDate;
-    private final Timer timer;
+    // FIXME: use Instant instead of Date
+    private final ConcurrentMap<LinkDiscovered, Date> linkToDate = new ConcurrentHashMap<>();
+    private final Timer timer = new Timer();
     private final NotificationPublishService notificationService;
     private final AutoCloseable configurationServiceRegistration;
     private final EntityOwnershipService eos;
-    private ListenerRegistration<DataTreeChangeListener> listenerRegistration;
+    private ListenerRegistration<?> listenerRegistration;
 
     /**
      * default ctor - start timer.
@@ -72,13 +72,11 @@ public class LLDPLinkAger implements ConfigurationListener, ClusteredDataTreeCha
                         final ConfigurationService configurationService,
                         final EntityOwnershipService entityOwnershipService,
                         final DataBroker dataBroker) {
-        this.linkExpirationTime = topologyLldpDiscoveryConfig.getTopologyLldpExpirationInterval().getValue().toJava();
+        linkExpirationTime = topologyLldpDiscoveryConfig.getTopologyLldpExpirationInterval().getValue().toJava();
         this.notificationService = notificationService;
-        this.configurationServiceRegistration = configurationService.registerListener(this);
-        this.eos = entityOwnershipService;
-        linkToDate = new ConcurrentHashMap<>();
-        timer = new Timer();
-        final DataTreeIdentifier dtiToNodeConnector = DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
+        configurationServiceRegistration = configurationService.registerListener(this);
+        eos = entityOwnershipService;
+        final DataTreeIdentifier<Link> dtiToNodeConnector = DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
                 II_TO_LINK);
         try {
             listenerRegistration = dataBroker.registerDataTreeChangeListener(dtiToNodeConnector, LLDPLinkAger.this);
@@ -110,7 +108,7 @@ public class LLDPLinkAger implements ConfigurationListener, ClusteredDataTreeCha
 
     @Override
     public void onDataTreeChanged(@NonNull Collection<DataTreeModification<Link>> changes) {
-        for (DataTreeModification modification : changes) {
+        for (DataTreeModification<Link> modification : changes) {
             switch (modification.getRootNode().getModificationType()) {
                 case WRITE:
                     break;
@@ -153,8 +151,8 @@ public class LLDPLinkAger implements ConfigurationListener, ClusteredDataTreeCha
         return linkToDate.containsKey(linkDiscovered);
     }
 
-    private void processLinkDeleted(DataObjectModification rootNode) {
-        Link link = (Link) rootNode.getDataBefore();
+    private void processLinkDeleted(DataObjectModification<Link> rootNode) {
+        Link link = rootNode.getDataBefore();
         LOG.trace("Removing link {} from linkToDate cache", link);
         LinkDiscovered linkDiscovered = LLDPDiscoveryUtils.toLLDPLinkDiscovered(link);
         linkToDate.remove(linkDiscovered);
index 9a0a335677389189df918917af40ad39e4ec2f39..4628f02b1e28ea7e0869a5ba9667efeaa8645a4f 100644 (file)
@@ -37,17 +37,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.lldp.discovery.config.rev160511.TopologyLldpDiscoveryConfigBuilder;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.Uint32;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Test for {@link LLDPLinkAger}.
  */
 @RunWith(MockitoJUnitRunner.class)
 public class LLDPLinkAgerTest {
-
-    private static final Logger LOG = LoggerFactory.getLogger(LLDPLinkAgerTest.class);
-
     private static final Uint32 LLDP_INTERVAL = Uint32.valueOf(5);
     private static final Uint32 LINK_EXPIRATION_TIME = Uint32.TEN;
 
index 299f7e4ba5f9b39c195a70c775c01807bf5d7d2a..e17b8cbaa196e54e188e55dbb73154e0c58970be 100644 (file)
@@ -18,17 +18,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.No
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Test for {@link LLDPDiscoveryUtils}.
  */
 @RunWith(MockitoJUnitRunner.class)
 public class LLDPDiscoveryUtilsTest {
-
-    private static final Logger LOG = LoggerFactory.getLogger(LLDPDiscoveryUtilsTest.class);
-
     @Test
     public void testLldpToNodeConnectorRefLLDP() {
         byte[] packetLLDP = {
index ffa66b02248330a4d37e148c08971e1b4af46aa9..d004c601b4fe61dd9aec23ce4ff342126dbfeb33 100644 (file)
@@ -13,7 +13,7 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>odlparent-lite</artifactId>
-    <version>9.0.13</version>
+    <version>10.0.0</version>
     <relativePath/>
   </parent>
 
index 434f19099713d356669c6245c4c064e9782ae991..65ef1e2e12925882676dc739828589b8e77501c0 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>karaf4-parent</artifactId>
-    <version>9.0.13</version>
+    <version>10.0.0</version>
   </parent>
   <groupId>org.opendaylight.openflowplugin</groupId>
   <artifactId>openflowplugin-karaf</artifactId>
index 24936ac2dd0e9803241d8ba2c0db940df27049da..ac3964183aba71d22f960ae36b3d3a7173658658 100644 (file)
         <developerConnection>scm:git:ssh://git.opendaylight.org:29418/openflowplugin.git</developerConnection>
     </scm>
     <dependencies>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.core</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.openflowplugin</groupId>
             <artifactId>test-common</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-api</artifactId>
             <groupId>org.opendaylight.openflowplugin.model</groupId>
             <artifactId>model-flow-service</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.opendaylight.openflowplugin.model</groupId>
-            <artifactId>model-flow-base</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.openflowplugin.model</groupId>
-            <artifactId>model-inventory</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.karaf.shell</groupId>
             <artifactId>org.apache.karaf.shell.console</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>commons-lang</groupId>
-            <artifactId>commons-lang</artifactId>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.framework</artifactId>
         </dependency>
-
     </dependencies>
 
     <build>
index 611766b2e9a6bdba14699c372e6d606e9a52ecf4..678985ba7a2dc2ca04cfc9d29b1e3010700f0e16 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>feature-repo-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index c57c0a92350daa30d916a9fc921f858106d65129..30920784ecb08a94e8b9590c389d3ca657d0650d 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index 62a730551eaa7a2648211216f079beba5f0eb867..540d54b5e7bab0f648ce2752b58536816b9b5518 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index a11de5237fa87bc18287ffa8cb7f912327edacd1..e90ac9dca15f160affc220c91c49eb4c9a2f01b3 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index 5c8a4e35c245def0205fc30a69dde8d97f0f751c..6d1050ec6f08eb335f691baa0c9e6f48f40939fb 100644 (file)
@@ -3,7 +3,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
     <modelVersion>4.0.0</modelVersion>
index 13452259deb9b7e4760b40e51511ec140dad3ee0..e1e0d7ad28cb4f8745d4d7b3b7ea0ff449530961 100644 (file)
@@ -18,7 +18,7 @@ import org.opendaylight.yangtools.yang.common.Uint64;
  *
  * @author msunal
  */
-public class NxmHeader {
+public final class NxmHeader {
 
     // Full 4 or 8 byte header as big integer
     private final Uint64 header;
@@ -41,21 +41,21 @@ public class NxmHeader {
      * @see NxmHeader#NxmHeader(long)
      */
     public NxmHeader(final Uint64 header) {
-        this.headerAsLong = header.longValue();
+        headerAsLong = header.longValue();
         if (isExperimenter(header)) {
-            this.experimenterId = (int) this.headerAsLong;
-            this.shortHeader = this.headerAsLong >>> 32;
+            experimenterId = (int) headerAsLong;
+            shortHeader = headerAsLong >>> 32;
         } else {
-            this.shortHeader = this.headerAsLong;
-            this.experimenterId = -1;
+            shortHeader = headerAsLong;
+            experimenterId = -1;
         }
 
         this.header = header;
         try {
-            this.oxmClass = Math.toIntExact(extractSub(this.shortHeader, 16, 16));
-            this.nxmField = Math.toIntExact(extractSub(this.shortHeader, 7, 9));
-            this.hasMask = extractSub(this.shortHeader, 1, 8) == 1;
-            this.length = Math.toIntExact(extractSub(this.shortHeader, 8, 0));
+            oxmClass = Math.toIntExact(extractSub(shortHeader, 16, 16));
+            nxmField = Math.toIntExact(extractSub(shortHeader, 7, 9));
+            hasMask = extractSub(shortHeader, 1, 8) == 1;
+            length = Math.toIntExact(extractSub(shortHeader, 8, 0));
         } catch (ArithmeticException e) {
             throw new IllegalArgumentException(e);
         }
@@ -105,14 +105,14 @@ public class NxmHeader {
         this.nxmField = nxmField;
         this.hasMask = hasMask;
         this.length = length;
-        this.shortHeader = (long) oxmClass << 16 | nxmField << 9 | (hasMask ? 1 : 0) << 8 | length;
+        shortHeader = (long) oxmClass << 16 | nxmField << 9 | (hasMask ? 1 : 0) << 8 | length;
         this.experimenterId = experimenterId;
         if (isExperimenter()) {
-            this.header = Uint64.fromLongBits((this.shortHeader << 32) + experimenterId);
+            header = Uint64.fromLongBits((shortHeader << 32) + experimenterId);
         } else {
-            this.header = Uint64.valueOf(this.shortHeader);
+            header = Uint64.valueOf(shortHeader);
         }
-        this.headerAsLong = this.header.longValue();
+        headerAsLong = header.longValue();
     }
 
     private static long extractSub(final long value, final int nrBits, final int offset) {
index a49d8d960cf43da4f41623c96f8b0a2975b6e605..078bbd431cce57cbd91890d437c1bce0fe981e74 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index eb115d2fe61043737475e2962d08db3eccbf318a..3db0a23119acdd98563f49f941a83e7622b5b248 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>feature-repo-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index b9a9423e04a91fcd637409188b1c68a4b5b7771a..bec0f3177ab944cb292e699dc7d6e259c7b83734 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
             <classifier>features</classifier>
             <type>xml</type>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>odl-openflowplugin-app-reconciliation-framework</artifactId>
+            <version>${project.version}</version>
+            <classifier>features</classifier>
+            <type>xml</type>
+        </dependency>
+
         <dependency>
             <groupId>org.opendaylight.openflowplugin.applications</groupId>
             <artifactId>arbitratorreconciliation-impl</artifactId>
             <version>${project.version}</version>
         </dependency>
-
     </dependencies>
-
 </project>
index adc8f95c5723e4dd1d74e1c1c14609552f08cb16..076bfa1c16f46ccd1f4277ed5f039e462320b9f6 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index e932b6f9e1810c317e2578696beef00ef128706d..d45f655a09608bebb8708f750bf6378d856b1617 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index 91e8aa5d3b18b5df3d31ac77f3dcd0b4b0798a57..41cdffe43d47c4ec0c0694b3a4c92e2ecebd7a15 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index 4d7505aad2c2352765bce19447f5e50c975104c4..4107a3deddb55dbdd30de20c38ecba68a8b2886c 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index f676f7403e44f0d7c0d325b6c4ae4bdd6716fcd5..2e031d1a203c57526ab08c49ab0ae39d7a23bc17 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index 5018186b66013e9857fd30d1169d8dfd69b7c089..4e2c8b399d2fa9f2b7bc0f22351373956b1aea04 100644 (file)
@@ -4,7 +4,7 @@
 <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>single-feature-parent</artifactId>
-    <version>9.0.13</version>
+    <version>10.0.0</version>
     <relativePath/>
 </parent>
 
index 6bf7e1df32d99c956d5d4d6a0ab7bbd8071f62ac..4ec5bb9efa998131e32150f43269d443248c36f9 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index d18c0bba3711bc328a64d855472c95001ea8f3e6..80586f410ef26380a797639a3f2514270449e909 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index 650a751985133bc35b27d86a0c4c49e70f7dc7dd..de94e97cbae3c9b0391d957e6585460d3356d577 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index 29b4173b74173c2804e1ab4ebc442c266b632650..8752eaf0a4ecb7734b0e8a847d9168cebab0061a 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index e6d88becf161b165ce9dfc7fd9e7335c803dfc9e..1227d71ab99823e35681ddc4e7b1b58e9c5c2bc3 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index efa972673e502aae98d472d463fce81e87897f70..75669063985a32f792b0f483f82c84e4897cac08 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index 4644b88dd802f945e5413b334bf32bbcdd00930c..532ce6dfaa4c8e008ab8e236d3d993858b1345a9 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
@@ -21,7 +21,7 @@
             <dependency>
                 <groupId>org.opendaylight.netconf</groupId>
                 <artifactId>netconf-artifacts</artifactId>
-                <version>2.0.14</version>
+                <version>3.0.0</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
index 01e322b4fcdd184fbf1623439472746286e16b50..d0c839524252caf5c9e94f85231c3df537e68700 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index 6dfc6625d08798fd4adf5d32a57830e1b23e782c..f980f9ecc58fa4eb5346c74221b827b9bcb261e6 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
     <name>OpenDaylight :: Openflow Plugin :: Libraries</name>
 
     <dependencies>
+        <dependency>
+            <groupId>org.opendaylight.odlparent</groupId>
+            <artifactId>odl-apache-commons-lang3</artifactId>
+            <type>xml</type>
+            <classifier>features</classifier>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.odlparent</groupId>
             <artifactId>odl-guava</artifactId>
index f819fecba3e5cb9e8052ff1de25b9d663cccb93a..3c3d621afb9de1c779eb3975718e792605d6e3ab 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-openflowplugin-libraries">
     <feature name="odl-openflowplugin-libraries">
-        <feature version="[9,10)">odl-guava</feature>
+        <feature version="[10,11)">odl-apache-commons-lang3</feature>
+        <feature version="[10,11)">odl-guava</feature>
     </feature>
 </features>
index 1e17c28c63c6f058185fb9bbb38db5b10d43edb7..fa3901f7db6990879d9dfc8a2be4fcbd75c1ba99 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
@@ -21,7 +21,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>8.0.11</version>
+                <version>9.0.1</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
@@ -30,7 +30,7 @@
             <dependency>
                 <groupId>org.opendaylight.controller</groupId>
                 <artifactId>controller-artifacts</artifactId>
-                <version>4.0.10</version>
+                <version>5.0.1</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
 
     <dependencies>
         <!-- feature dependencies -->
+        <dependency>
+            <groupId>org.opendaylight.mdsal.model</groupId>
+            <artifactId>odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</artifactId>
+            <classifier>features</classifier>
+            <type>xml</type>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal.model</groupId>
             <artifactId>odl-mdsal-model-odl-l2-types</artifactId>
index 021d737cbffa75e79f68eaa83e3c2ec9c28aa51e..1193e93769bf9c8c66f50db0282ecf14882a67c1 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <features name="odl-openflowplugin-nsf-model-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-openflowplugin-nsf-model" version="${project.version}">
-        <feature version="[8,9)">odl-mdsal-model-odl-l2-types</feature>
+        <feature version="[9,10)">odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</feature>
+        <feature version="[9,10)">odl-mdsal-model-odl-l2-types</feature>
     </feature>
 </features>
index faeee7da886afbb6419747676b6ce1494cf451c9..cb371bc27dedaf4bebe1451d1cf9a2198fb948f2 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
             <dependency>
                 <groupId>org.opendaylight.controller</groupId>
                 <artifactId>controller-artifacts</artifactId>
-                <version>4.0.10</version>
+                <version>5.0.1</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
             <dependency>
                 <groupId>org.opendaylight.infrautils</groupId>
                 <artifactId>infrautils-artifacts</artifactId>
-                <version>2.0.13</version>
+                <version>3.0.0</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
index a2b463ebf617a4a26c383dceafa4189ad636982f..83cff02e6cf46171bfadedb25e4787fd8438ef5f 100644 (file)
@@ -2,7 +2,7 @@
 <features name="openflowplugin-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-openflowplugin-southbound" version="${project.version}">
         <configfile finalname="etc/org.opendaylight.openflowplugin.cfg">mvn:org.opendaylight.openflowplugin/openflowplugin-blueprint-config/${project.version}/cfg/config</configfile>
-        <feature version="[4,5)">odl-mdsal-broker</feature>
-        <feature version="[2,3)">odl-infrautils-diagstatus</feature>
+        <feature version="[5,6)">odl-mdsal-broker</feature>
+        <feature version="[3,4)">odl-infrautils-diagstatus</feature>
     </feature>
 </features>
index 517e87c038b3f95f6af048692853d0b82a637dfb..c223c19d774d06ea9efca66aaee0cf0eca26ce3d 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index 9ede9d9b3656398e922916cc4e25cc9974cd88a9..3faf57cdb25f6d52dd296c732089d10873ca7838 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index e012172a1b1dacf11a9e97ccd4b60a3106f0ed30..b2d56304e0d32d30cbe60f6a25d3b608935aa26e 100644 (file)
@@ -14,141 +14,141 @@ module opendaylight-group-types {
     typedef group-id {
         type uint32;
     }
-    
+
     typedef bucket-id {
-       type uint32;
+        type uint32;
     }
-    
-    typedef group-types {        
+
+    typedef group-types {
         type enumeration {
             enum group-all;
             enum group-select;
             enum group-indirect;
             enum group-ff;
-        }        
+        }
     }
-    
-    typedef group-capabilities { 
+
+    typedef group-capabilities {
         type enumeration {
             enum select-weight;
             enum select-liveness;
             enum chaining;
             enum chaining-checks;
-        }   
+        }
     }
-    
+
     identity group-type {
-       description "Base identity for all the available group types"; 
+        description "Base identity for all the available group types";
     }
-    
+
     identity group-all {
-       base group-type;
-       description "All (multicast/broadcast) group";
+        base group-type;
+        description "All (multicast/broadcast) group";
     }
-    
+
     identity group-select {
-       base group-type;
-       description "Select group";
+        base group-type;
+        description "Select group";
     }
-    
+
     identity group-indirect {
-       base group-type;
-       description "Indirect group";
+        base group-type;
+        description "Indirect group";
     }
-    
+
     identity group-ff {
-       base group-type;
-       description "Fast failover group";
+        base group-type;
+        description "Fast failover group";
     }
-    
+
     identity group-capability {
-       description "Base identity for all the supported group capabilities";
+        description "Base identity for all the supported group capabilities";
     }
-    
+
     identity select-weight{
-       base group-capability;
-       description "Support weight for select groups";
+        base group-capability;
+        description "Support weight for select groups";
     }
 
     identity select-liveness{
-       base group-capability;
-       description "Support liveness for select groups";
+        base group-capability;
+        description "Support liveness for select groups";
     }
 
     identity chaining{
-       base group-capability;
-       description "Support chaining groups";
+        base group-capability;
+        description "Support chaining groups";
     }
 
     identity chaining-checks{
-       base group-capability;
-       description "Check chaining for loops and delete";
+        base group-capability;
+        description "Check chaining for loops and delete";
     }
-    
+
     typedef group-ref {
         type instance-identifier;
     }
-    
+
     grouping group {
-        
+
         leaf group-type {
             type group-types;
         }
-        
+
         leaf group-id {
             type group-id;
         }
-        
+
         leaf group-name {
             type string;
         }
-        
+
         leaf container-name {
-            type string; 
+            type string;
         }
-        
+
         leaf barrier {
-            type boolean; 
-        }       
-        
+            type boolean;
+        }
+
         container buckets {
             list bucket {
                 key "bucket-id";
                 leaf bucket-id {
                     type bucket-id;
                 }
-                
+
                 leaf weight {
                     type uint16;
                 }
-                
+
                 leaf watch_port {
                     type uint32;
                 }
-                
+
                 leaf watch_group {
                     type uint32;
                 }
-                
+
                 uses action:action-list;
             }
         }
     }
-    
+
     grouping group-statistics {
-            
+
         leaf group-id {
             type group-id;
         }
-        
+
         leaf ref-count {
             type yang:counter32;
         }
-        
+
         leaf packet-count {
             type yang:counter64;
-        } 
-        
+        }
+
         leaf byte-count {
             type yang:counter64;
         }
@@ -161,86 +161,88 @@ module opendaylight-group-types {
                 type yang:counter32;
             }
         }
-        
+
         container buckets {
             list bucket-counter {
                 key "bucket-id";
                 leaf bucket-id {
                     type bucket-id;
                 }
-                
+
                 leaf packet-count {
                     type yang:counter64;
-                } 
-        
+                }
+
                 leaf byte-count {
                     type yang:counter64;
                 }
             }
-        }       
+        }
     }
 
     grouping group-features {
-    
-       leaf-list group-types-supported {
-               type identityref {
-                       base group-type;
-               }
-               }
-            
-       leaf-list group-capabilities-supported {
-               type identityref {
-                       base group-capability;
-               }
-               }
+
+        leaf-list group-types-supported {
+            type identityref {
+                base group-type;
+            }
+        }
+
+        leaf-list group-capabilities-supported {
+            type identityref {
+                base group-capability;
+            }
+        }
 
         leaf-list max-groups {
             type uint32;
             description "Maximum number of groups for each type";
             max-elements 4;
+            ordered-by user;
         }
-            
+
         leaf-list actions {
             type uint32;
             description "Bitmap number OFPAT_* that are supported";
             max-elements 4;
+            ordered-by user;
         }
     }
-    
+
     grouping group-statistics-request {
         list group-stats {
-            key "group-id";         
+            key "group-id";
             leaf group-id {
                 type group-id;
-            }           
+            }
         }
     }
-    
+
 
     grouping group-statistics-reply {
-       
+
         list group-stats {
             key "group-id";
             uses group-statistics;
         }
     }
-    
+
     grouping group-desc-stats-reply {
-       
+
         list group-desc-stats {
-            key "group-id";         
+            key "group-id";
             uses group;
         }
     }
-    
+
     grouping group-features-reply {
-       uses group-features;
+        uses group-features;
     }
-    
+
     grouping groups {
         list group {
-            key "group-id";                  
-        
+            key "group-id";
+
             uses group;
         }
 
index f67159bfb564c134ec9c9b674ccb5b5b993b1650..da483697776c09a37aaa1ba5ff4ea72b185f5005 100644 (file)
@@ -11,7 +11,7 @@ module opendaylight-table-types {
     }
 
     typedef table-id {
-       type uint8;
+        type uint8;
     }
 
     typedef table-ref {
@@ -204,7 +204,7 @@ module opendaylight-table-types {
 
     grouping set-field-match {
         list set-field-match {
-           key "match-type";
+        key "match-type";
             leaf match-type {
                 type identityref {
                     base match-field;
@@ -234,6 +234,7 @@ module opendaylight-table-types {
                 container tables {
                     leaf-list table-ids {
                         type uint8;
+                        ordered-by user;
                     }
                 }
             }
@@ -242,6 +243,7 @@ module opendaylight-table-types {
                 container tables-miss {
                     leaf-list table-ids {
                         type uint8;
+                        ordered-by user;
                     }
                 }
             }
@@ -271,19 +273,19 @@ module opendaylight-table-types {
             }
 
             case match {
-                       container match-setfield {
-                   uses set-field-match;
-                       }
+                container match-setfield {
+                    uses set-field-match;
+                }
             }
 
             case wildcards {
-                       container wildcard-setfield {
+                container wildcard-setfield {
                     uses set-field-match;
                 }
             }
 
             case write-setfield {
-                       container write-setfield {
+                container write-setfield {
                     uses set-field-match;
                 }
             }
index 38b938a60ede55e1d6e7330ab5fed296939223da..405aaafe8a545f059023bd59c36064c7f2d1ab77 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>odlparent-lite</artifactId>
-    <version>9.0.13</version>
+    <version>10.0.0</version>
     <relativePath/>
   </parent>
 
index 8edcf6ad84992a8dfae5048579eaf007392bec20..0b4944b1f33979bf83e46b999b04ddd029504d49 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>feature-repo-parent</artifactId>
-    <version>9.0.13</version>
+    <version>10.0.0</version>
     <relativePath/>
   </parent>
 
index 4c68a78a2532e47036bab2ef8be015e03249ad55..5432968bcb7c3e770a349016daa0888e115b57f0 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
             <dependency>
                 <groupId>org.opendaylight.infrautils</groupId>
                 <artifactId>infrautils-artifacts</artifactId>
-                <version>2.0.13</version>
+                <version>3.0.0</version>
+                <scope>import</scope>
+                <type>pom</type>
+            </dependency>
+
+            <!-- YANG Tools -->
+            <dependency>
+                <groupId>org.opendaylight.yangtools</groupId>
+                <artifactId>yangtools-artifacts</artifactId>
+                <version>8.0.2</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
@@ -42,7 +51,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>8.0.11</version>
+                <version>9.0.1</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
@@ -58,8 +67,8 @@
             <classifier>features</classifier>
         </dependency>
         <dependency>
-            <groupId>org.opendaylight.odlparent</groupId>
-            <artifactId>odl-netty-4</artifactId>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>odl-yangtools-netty</artifactId>
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
index 6b9bc7758655599aafb77d3a57949526130936ee..041b124d84d465dfbb7ab6d28a5e1b16706aa6f2 100644 (file)
@@ -4,8 +4,9 @@
     <feature name='odl-openflowjava-protocol' version='${project.version}'>
         <configfile finalname="etc/opendaylight/datastore/initial/config/default-openflow-connection-config.xml">mvn:org.opendaylight.openflowplugin.openflowjava/openflowjava-blueprint-config/${project.version}/xml/config</configfile>
         <configfile finalname="etc/opendaylight/datastore/initial/config/legacy-openflow-connection-config.xml">mvn:org.opendaylight.openflowplugin.openflowjava/openflowjava-blueprint-config/${project.version}/xml/legacyConfig</configfile>
-        <feature version="[9,10)">odl-netty-4</feature>
-        <feature version="[8,9)">odl-mdsal-model-rfc6991</feature>
-        <feature version="[2,3)">odl-infrautils-diagstatus</feature>
+        <feature version="[8,9)">odl-yangtools-netty</feature>
+        <feature version="[9,10)">odl-mdsal-model-rfc6991</feature>
+        <feature version="[9,10)">odl-mdsal-model-rfc6991</feature>
+        <feature version="[3,4)">odl-infrautils-diagstatus</feature>
     </feature>
 </features>
index bf71f34509a721d646619a26d458da3fe05de4bb..45ab4d2a89ee1a179b10a86063b79acb59191ec4 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>odlparent-lite</artifactId>
-    <version>9.0.13</version>
+    <version>10.0.0</version>
     <relativePath/>
   </parent>
 
index 7e42a2b9bf2d95837cb22ca16cb83c4ea961b1e6..5c2b59c35176c290c4f0ff121c1089fe1265cba8 100644 (file)
 
                     leaf-list version-bitmap {
                         type boolean;
+                        ordered-by user;
                     }
                 }
             }
                             }
                             leaf-list max_groups {
                                 type uint32;
+                                ordered-by user;
+                                // FIXME: min-elements = max-elements = 4
                             }
                             leaf-list actions-bitmap {
                                 type oft:action-type;
+                                ordered-by user;
+                                // FIXME: min-elements = max-elements = 4
                             }
                         }
                     }
                     uses meter-mod;
                 }
             } /* Controller/switch message */
-}
\ No newline at end of file
+}
index 6c729cee56ecb91fce56864b6832e50c748f5e74..5fe9e0fe2f742666ce240fad6d66c22dc4378054 100644 (file)
@@ -5,12 +5,10 @@
  * 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.openflowjava.protocol.api.connection;
 
 import static org.junit.Assert.assertEquals;
 
-import com.google.common.collect.Lists;
 import java.util.List;
 import org.junit.Test;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.config.rev140630.KeystoreType;
@@ -22,14 +20,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.config.rev140630.P
  * @author michal.polkorab
  */
 public class TlsConfigurationImplTest {
-
     /**
      * Test correct TlsConfigurationImpl creation.
      */
     @Test
     public void test() {
-        List<String> cipherSuites = Lists.newArrayList("TLS_RSA_WITH_AES_128_CBC_SHA",
-                "TLS_RSA_WITH_AES_128_CBC_SHA256");
+        List<String> cipherSuites = List.of("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256");
         TlsConfigurationImpl config = new TlsConfigurationImpl(KeystoreType.JKS,
                 "user/dir", PathType.CLASSPATH, KeystoreType.PKCS12, "/var/lib", PathType.PATH, cipherSuites);
         assertEquals("Wrong keystore location", "/var/lib", config.getTlsKeystore());
index eed268f4ef0930fb3d700242cdc21b9f986e4b6f..dbcc6ad094e5f5270598cd88755852ece028cecf 100644 (file)
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common-netty</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-transport-classes-epoll</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>io.netty</groupId>
             <artifactId>netty-transport-native-epoll</artifactId>
-            <!-- Explicitly bring in the linux classifier, test may fail on 32-bit linux -->
-            <!--
-                FIXME: I don't think this is a good idea. We should be platform-agnostic
-                       for build, so this works on Mac and others as well.
-                       x86-64 Linux is tested in CSIT, where this library is present
-             -->
             <classifier>linux-x86_64</classifier>
+            <scope>test</scope>
         </dependency>
     </dependencies>
 </project>
index c06803c47b3f0a2bbc4ff5360fae58a385a66128..94df5fd9f8a46f9ff80d1d4ff3248339b7909ac9 100644 (file)
@@ -88,8 +88,7 @@ public class TcpChannelInitializer extends ProtocolChannelInitializer<SocketChan
                 List<String> suitesList = getTlsConfiguration().getCipherSuites();
                 if (suitesList != null && !suitesList.isEmpty()) {
                     LOG.debug("Requested Cipher Suites are: {}", suitesList);
-                    String[] suites = suitesList.toArray(new String[suitesList.size()]);
-                    engine.setEnabledCipherSuites(suites);
+                    engine.setEnabledCipherSuites(suitesList.toArray(new String[0]));
                     LOG.debug("Cipher suites enabled in SSLEngine are: {}",
                             Arrays.toString(engine.getEnabledCipherSuites()));
                 }
index db77d1a7478bc80f890857fd936704d446b687fb..27ba9cdd933171a983c8eea96f2c1be7ab797c29 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.openflowjava.protocol.impl.core.connection;
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Objects.requireNonNull;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import io.netty.util.concurrent.Future;
@@ -83,6 +84,8 @@ abstract class AbstractOutboundQueueManager<T extends OutboundQueueHandler, O ex
     // Passed to executor to request triggering of flush
     protected final Runnable flushRunnable = this::flush;
 
+    @SuppressFBWarnings(value = "MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR",
+        justification = "Circular dependency on outbound queue")
     AbstractOutboundQueueManager(final ConnectionAdapterImpl parent, final InetSocketAddress address, final T handler) {
         this.parent = requireNonNull(parent);
         this.handler = requireNonNull(handler);
index 09783ab7594e43ab61283d42d8770e99fcc0fd67..9df2e9b10853cb07ccf0c366a15bdc9c0ed09f90 100644 (file)
@@ -14,8 +14,9 @@ import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import io.netty.util.concurrent.Future;
 import io.netty.util.concurrent.GenericFutureListener;
+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.RpcError.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
@@ -30,7 +31,7 @@ abstract class AbstractRpcListener<T> implements GenericFutureListener<Future<Vo
         ChannelOutboundQueue.MessageHolder<Object> {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractRpcListener.class);
     private static final String APPLICATION_TAG = "OPENFLOW_LIBRARY";
-    private static final String TAG = "OPENFLOW";
+    private static final ErrorTag TAG = new ErrorTag("OPENFLOW");
     private final SettableFuture<RpcResult<T>> result = SettableFuture.create();
     private final String failureInfo;
     private Object message;
index caf897d08be31e9927b34fae0876730e0014ca94..8dbe69a71d53dc5fee0b9621c972d71343e72b5d 100644 (file)
@@ -9,9 +9,11 @@ package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
 
 import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
 
+import com.google.common.collect.ImmutableSet;
 import io.netty.buffer.ByteBuf;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowRemovedReason;
@@ -79,48 +81,48 @@ public class GetAsyncReplyMessageFactory implements OFDeserializer<GetAsyncOutpu
         return inMasks;
     }
 
-    private static List<PacketInReason> decodePacketInReasons(long input) {
-        List<PacketInReason> reasons = new ArrayList<>();
+    private static Set<PacketInReason> decodePacketInReasons(long input) {
+        final var builder = ImmutableSet.<PacketInReason>builder();
         if ((input & 1 << 0) != 0) {
-            reasons.add(PacketInReason.OFPRNOMATCH);
+            builder.add(PacketInReason.OFPRNOMATCH);
         }
         if ((input & 1 << 1) != 0) {
-            reasons.add(PacketInReason.OFPRACTION);
+            builder.add(PacketInReason.OFPRACTION);
         }
         if ((input & 1 << 2) != 0) {
-            reasons.add(PacketInReason.OFPRINVALIDTTL);
+            builder.add(PacketInReason.OFPRINVALIDTTL);
         }
-        return reasons;
+        return builder.build();
     }
 
-    private static List<PortReason> decodePortReasons(long input) {
-        List<PortReason> reasons = new ArrayList<>();
+    private static Set<PortReason> decodePortReasons(long input) {
+        final var builder = ImmutableSet.<PortReason>builder();
         if ((input & 1 << 0) != 0) {
-            reasons.add(PortReason.OFPPRADD);
+            builder.add(PortReason.OFPPRADD);
         }
         if ((input & 1 << 1) != 0) {
-            reasons.add(PortReason.OFPPRDELETE);
+            builder.add(PortReason.OFPPRDELETE);
         }
         if ((input & 1 << 2) != 0) {
-            reasons.add(PortReason.OFPPRMODIFY);
+            builder.add(PortReason.OFPPRMODIFY);
         }
-        return reasons;
+        return builder.build();
     }
 
-    private static List<FlowRemovedReason> decodeFlowRemovedReasons(long input) {
-        List<FlowRemovedReason> reasons = new ArrayList<>();
+    private static Set<FlowRemovedReason> decodeFlowRemovedReasons(long input) {
+        final var builder = ImmutableSet.<FlowRemovedReason>builder();
         if ((input & 1 << 0) != 0) {
-            reasons.add(FlowRemovedReason.OFPRRIDLETIMEOUT);
+            builder.add(FlowRemovedReason.OFPRRIDLETIMEOUT);
         }
         if ((input & 1 << 1) != 0) {
-            reasons.add(FlowRemovedReason.OFPRRHARDTIMEOUT);
+            builder.add(FlowRemovedReason.OFPRRHARDTIMEOUT);
         }
         if ((input & 1 << 2) != 0) {
-            reasons.add(FlowRemovedReason.OFPRRDELETE);
+            builder.add(FlowRemovedReason.OFPRRDELETE);
         }
         if ((input & 1 << 3) != 0) {
-            reasons.add(FlowRemovedReason.OFPRRGROUPDELETE);
+            builder.add(FlowRemovedReason.OFPRRGROUPDELETE);
         }
-        return reasons;
+        return builder.build();
     }
 }
index 6ce1f45fa04c51fcaf145d8c2587896dcdd945cd..6ef0132c3ac8de43fa8a50f4b5f35f2b65da7cf1 100644 (file)
@@ -732,12 +732,12 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
         MultipartReplyGroupFeaturesBuilder featuresBuilder = new MultipartReplyGroupFeaturesBuilder();
         featuresBuilder.setTypes(createGroupType(rawMessage.readUnsignedInt()));
         featuresBuilder.setCapabilities(createCapabilities(rawMessage.readUnsignedInt()));
-        List<Uint32> maxGroupsList = new ArrayList<>();
+        List<Uint32> maxGroupsList = new ArrayList<>(GROUP_TYPES);
         for (int i = 0; i < GROUP_TYPES; i++) {
             maxGroupsList.add(Uint32.valueOf(rawMessage.readUnsignedInt()));
         }
         featuresBuilder.setMaxGroups(maxGroupsList);
-        List<ActionType> actionBitmaps = new ArrayList<>();
+        List<ActionType> actionBitmaps = new ArrayList<>(GROUP_TYPES);
         for (int i = 0; i < GROUP_TYPES; i++) {
             actionBitmaps.add(createActionBitmap(rawMessage.readUnsignedInt()));
         }
index 264a91bf6ea2307cd00e0893e561db0b698f5d84..b84dd58a1809d17ed39a1b33da212f9dd3cfb31c 100644 (file)
@@ -9,9 +9,11 @@ package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
 
 import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
 
+import com.google.common.collect.ImmutableSet;
 import io.netty.buffer.ByteBuf;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowRemovedReason;
@@ -32,7 +34,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
  * @author giuseppex.petralia@intel.com
  */
 public class SetAsyncInputMessageFactory implements OFDeserializer<SetAsyncInput> {
-
     private static final byte SEPARATE_ROLES = 2;
 
     @Override
@@ -47,7 +48,7 @@ public class SetAsyncInputMessageFactory implements OFDeserializer<SetAsyncInput
     }
 
     private static List<PacketInMask> decodePacketInMask(ByteBuf input) {
-        List<PacketInMask> inMasks = new ArrayList<>();
+        List<PacketInMask> inMasks = new ArrayList<>(SEPARATE_ROLES);
         PacketInMaskBuilder maskBuilder;
         for (int i = 0; i < SEPARATE_ROLES; i++) {
             maskBuilder = new PacketInMaskBuilder();
@@ -57,22 +58,22 @@ public class SetAsyncInputMessageFactory implements OFDeserializer<SetAsyncInput
         return inMasks;
     }
 
-    private static List<PacketInReason> decodePacketInReasons(long input) {
-        List<PacketInReason> reasons = new ArrayList<>();
+    private static Set<PacketInReason> decodePacketInReasons(long input) {
+        final var builder = ImmutableSet.<PacketInReason>builder();
         if ((input & 1 << 0) != 0) {
-            reasons.add(PacketInReason.OFPRNOMATCH);
+            builder.add(PacketInReason.OFPRNOMATCH);
         }
         if ((input & 1 << 1) != 0) {
-            reasons.add(PacketInReason.OFPRACTION);
+            builder.add(PacketInReason.OFPRACTION);
         }
         if ((input & 1 << 2) != 0) {
-            reasons.add(PacketInReason.OFPRINVALIDTTL);
+            builder.add(PacketInReason.OFPRINVALIDTTL);
         }
-        return reasons;
+        return builder.build();
     }
 
     private static List<PortStatusMask> decodePortStatusMask(ByteBuf input) {
-        List<PortStatusMask> inMasks = new ArrayList<>();
+        List<PortStatusMask> inMasks = new ArrayList<>(SEPARATE_ROLES);
         PortStatusMaskBuilder maskBuilder;
         for (int i = 0; i < SEPARATE_ROLES; i++) {
             maskBuilder = new PortStatusMaskBuilder();
@@ -82,22 +83,22 @@ public class SetAsyncInputMessageFactory implements OFDeserializer<SetAsyncInput
         return inMasks;
     }
 
-    private static List<PortReason> decodePortReasons(long input) {
-        List<PortReason> reasons = new ArrayList<>();
+    private static Set<PortReason> decodePortReasons(long input) {
+        final var builder = ImmutableSet.<PortReason>builder();
         if ((input & 1 << 0) != 0) {
-            reasons.add(PortReason.OFPPRADD);
+            builder.add(PortReason.OFPPRADD);
         }
         if ((input & 1 << 1) != 0) {
-            reasons.add(PortReason.OFPPRDELETE);
+            builder.add(PortReason.OFPPRDELETE);
         }
         if ((input & 1 << 2) != 0) {
-            reasons.add(PortReason.OFPPRMODIFY);
+            builder.add(PortReason.OFPPRMODIFY);
         }
-        return reasons;
+        return builder.build();
     }
 
     private static List<FlowRemovedMask> decodeFlowRemovedMask(ByteBuf input) {
-        List<FlowRemovedMask> inMasks = new ArrayList<>();
+        List<FlowRemovedMask> inMasks = new ArrayList<>(SEPARATE_ROLES);
         FlowRemovedMaskBuilder maskBuilder;
         for (int i = 0; i < SEPARATE_ROLES; i++) {
             maskBuilder = new FlowRemovedMaskBuilder();
@@ -107,20 +108,20 @@ public class SetAsyncInputMessageFactory implements OFDeserializer<SetAsyncInput
         return inMasks;
     }
 
-    private static List<FlowRemovedReason> decodeFlowRemovedReasons(long input) {
-        List<FlowRemovedReason> reasons = new ArrayList<>();
+    private static Set<FlowRemovedReason> decodeFlowRemovedReasons(long input) {
+        final var builder = ImmutableSet.<FlowRemovedReason>builder();
         if ((input & 1 << 0) != 0) {
-            reasons.add(FlowRemovedReason.OFPRRIDLETIMEOUT);
+            builder.add(FlowRemovedReason.OFPRRIDLETIMEOUT);
         }
         if ((input & 1 << 1) != 0) {
-            reasons.add(FlowRemovedReason.OFPRRHARDTIMEOUT);
+            builder.add(FlowRemovedReason.OFPRRHARDTIMEOUT);
         }
         if ((input & 1 << 2) != 0) {
-            reasons.add(FlowRemovedReason.OFPRRDELETE);
+            builder.add(FlowRemovedReason.OFPRRDELETE);
         }
         if ((input & 1 << 3) != 0) {
-            reasons.add(FlowRemovedReason.OFPRRGROUPDELETE);
+            builder.add(FlowRemovedReason.OFPRRGROUPDELETE);
         }
-        return reasons;
+        return builder.build();
     }
 }
index bdc1b0731c4e8af06aa66b1ca0f5c8fab34e8601..b5dfc76a4fbe1e3a52652ef0b2ed4a8cdc49bccd 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
 
 import io.netty.buffer.ByteBuf;
+import java.util.Collection;
 import java.util.List;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
@@ -59,7 +60,7 @@ public class GetAsyncReplyMessageFactory implements OFSerializer<GetAsyncOutput>
         }
     }
 
-    private static void serializeReasons(final List<? extends Enumeration> reasons, final ByteBuf outBuffer) {
+    private static void serializeReasons(final Collection<? extends Enumeration> reasons, final ByteBuf outBuffer) {
         if (reasons != null) {
             int bitmap = 0;
             for (Enumeration reason : reasons) {
index ffee4e9ff35389d1d455382e06d32ed2618c0192..064ea27adb62b9c0bea7ce52ea3ca6c47905650b 100644 (file)
@@ -9,6 +9,7 @@
 package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
 
 import io.netty.buffer.ByteBuf;
+import java.util.Collection;
 import java.util.List;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
@@ -62,7 +63,7 @@ public class SetAsyncInputMessageFactory implements OFSerializer<SetAsyncInput>
         }
     }
 
-    private static void serializeReasons(final List<? extends Enumeration> reasons, final ByteBuf outBuffer) {
+    private static void serializeReasons(final Collection<? extends Enumeration> reasons, final ByteBuf outBuffer) {
         if (reasons != null) {
             int bitmap = 0;
             for (Enumeration reason : reasons) {
index 26079c3855f56355c25074836e33d5df686bbee5..c1449d370533190660c3591e6423d93fddab5191 100644 (file)
@@ -5,12 +5,11 @@
  * 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.openflowjava.protocol.impl.core;
 
 import static org.junit.Assert.assertNotNull;
 
-import com.google.common.collect.Lists;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -47,7 +46,7 @@ public class PublishingChannelInitializerFactoryTest {
         factory = new ChannelInitializerFactory();
         tlsConfiguration = new TlsConfigurationImpl(KeystoreType.JKS, "/exemplary-ctlTrustStore",
                 PathType.CLASSPATH, KeystoreType.JKS, "/exemplary-ctlKeystore", PathType.CLASSPATH,
-                Lists.newArrayList("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256"));
+                List.of("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256"));
         factory.setDeserializationFactory(deserializationFactory);
         factory.setSerializationFactory(serializationFactory);
         factory.setSwitchConnectionHandler(switchConnectionHandler);
index b1aa5013a7095a02929ea39c1081c71ea13375f2..3a488d30fa0990750b66fa012aa2c0df0c8197f8 100644 (file)
@@ -5,7 +5,6 @@
  * 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.openflowjava.protocol.impl.core;
 
 import static org.junit.Assert.assertEquals;
@@ -16,7 +15,6 @@ import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import com.google.common.collect.Lists;
 import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelPipeline;
 import io.netty.channel.group.DefaultChannelGroup;
@@ -25,6 +23,7 @@ import io.netty.handler.ssl.SslHandler;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.UnknownHostException;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -91,7 +90,7 @@ public class PublishingChannelInitializerTest {
 
         tlsConfiguration = new TlsConfigurationImpl(KeystoreType.JKS, "/selfSignedSwitch", PathType.CLASSPATH,
                 KeystoreType.JKS, "/selfSignedController", PathType.CLASSPATH,
-                Lists.newArrayList("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256"));
+                List.of("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256"));
     }
 
 
index 751b5c455b8fb584bdd36a629707a5a1c943366f..cf00ef7a168901cad547a2b5f71fe55e28e73f18 100644 (file)
@@ -5,12 +5,11 @@
  * 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.openflowjava.protocol.impl.core;
 
 import static org.junit.Assert.assertNotNull;
 
-import com.google.common.collect.Lists;
+import java.util.List;
 import javax.net.ssl.SSLContext;
 import org.junit.Before;
 import org.junit.Test;
@@ -36,7 +35,7 @@ public class SslContextFactoryTest {
     public void setUp() {
         tlsConfiguration = new TlsConfigurationImpl(KeystoreType.JKS, "/exemplary-ctlTrustStore",
                 PathType.CLASSPATH, KeystoreType.JKS, "/exemplary-ctlKeystore", PathType.CLASSPATH,
-                Lists.newArrayList("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256")) ;
+                List.of("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256"));
         sslContextFactory = new SslContextFactory(tlsConfiguration);
     }
 
index 027edfc55fd047c41d7f88603281660738668f37..21acd56900143cbfb6ea70a64044a1ee21eea4cc 100755 (executable)
@@ -7,10 +7,10 @@
  */
 package org.opendaylight.openflowjava.protocol.impl.core.connection;
 
-import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
+import java.util.List;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -101,7 +101,7 @@ public class SwitchConnectionProviderImpl02Test {
             tlsConfiguration = new TlsConfigurationImpl(KeystoreType.JKS,
                     "/selfSignedSwitch", PathType.CLASSPATH, KeystoreType.JKS,
                     "/selfSignedController", PathType.CLASSPATH,
-                    Lists.newArrayList("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256")) ;
+                    List.of("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256"));
         }
         config = new ConnectionConfigurationImpl(startupAddress, 0, tlsConfiguration, SWITCH_IDLE_TIMEOUT, true, false,
                 CHANNEL_OUTBOUND_QUEUE_SIZE);
index e7178c746c542ff090ecc2848888fdcc6d3b5b93..fee78164daae887f0450475eeebc2db27b0f46e5 100644 (file)
@@ -8,10 +8,10 @@
 
 package org.opendaylight.openflowjava.protocol.impl.core.connection;
 
-import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
+import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
@@ -70,7 +70,7 @@ public class SwitchConnectionProviderImplTest {
             tlsConfiguration = new TlsConfigurationImpl(KeystoreType.JKS,
                     "/selfSignedSwitch", PathType.CLASSPATH, KeystoreType.JKS,
                     "/selfSignedController", PathType.CLASSPATH,
-                    Lists.newArrayList("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256")) ;
+                    List.of("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256"));
         }
         config = new ConnectionConfigurationImpl(startupAddress, 0, tlsConfiguration, SWITCH_IDLE_TIMEOUT, true,
                 false, CHANNEL_OUTBOUND_QUEUE_SIZE);
index f61805431f1ebccad165badc9452cf53fa1d0415..361b7a6781baa4ba218273bfe04281c119ee7b07 100644 (file)
@@ -8,8 +8,8 @@
 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
 
 import io.netty.buffer.ByteBuf;
-import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -60,65 +60,42 @@ public class GetAsyncReplyMessageFactoryTest {
         GetAsyncOutput builtByFactory = BufferHelper.deserialize(asyncFactory, bb);
 
         BufferHelper.checkHeaderV13(builtByFactory);
-        Assert.assertEquals("Wrong packetInMask",createPacketInMask(), builtByFactory.getPacketInMask());
-        Assert.assertEquals("Wrong portStatusMask",createPortStatusMask(), builtByFactory.getPortStatusMask());
-        Assert.assertEquals("Wrong flowRemovedMask",createFlowRemovedMask(), builtByFactory.getFlowRemovedMask());
+        Assert.assertEquals("Wrong packetInMask", createPacketInMask(), builtByFactory.getPacketInMask());
+        Assert.assertEquals("Wrong portStatusMask", createPortStatusMask(), builtByFactory.getPortStatusMask());
+        Assert.assertEquals("Wrong flowRemovedMask", createFlowRemovedMask(), builtByFactory.getFlowRemovedMask());
     }
 
     private static List<PacketInMask> createPacketInMask() {
-        final List<PacketInMask> inMasks = new ArrayList<>();
-        PacketInMaskBuilder maskBuilder;
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        maskBuilder = new PacketInMaskBuilder();
-        List<PacketInReason> reasons = new ArrayList<>();
-        reasons.add(PacketInReason.OFPRNOMATCH);
-        reasons.add(PacketInReason.OFPRACTION);
-        reasons.add(PacketInReason.OFPRINVALIDTTL);
-        maskBuilder.setMask(reasons);
-        inMasks.add(maskBuilder.build());
-        // OFPCR_ROLE_SLAVE
-        maskBuilder = new PacketInMaskBuilder();
-        reasons = new ArrayList<>();
-        maskBuilder.setMask(reasons);
-        inMasks.add(maskBuilder.build());
-        return inMasks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new PacketInMaskBuilder()
+                .setMask(Set.of(PacketInReason.OFPRNOMATCH, PacketInReason.OFPRACTION, PacketInReason.OFPRINVALIDTTL))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new PacketInMaskBuilder().setMask(Set.of()).build());
     }
 
     private static List<PortStatusMask> createPortStatusMask() {
-        final List<PortStatusMask> inMasks = new ArrayList<>();
-        PortStatusMaskBuilder maskBuilder;
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        maskBuilder = new PortStatusMaskBuilder();
-        List<PortReason> reasons = new ArrayList<>();
-        reasons.add(PortReason.OFPPRADD);
-        reasons.add(PortReason.OFPPRDELETE);
-        reasons.add(PortReason.OFPPRMODIFY);
-        inMasks.add(maskBuilder.setMask(reasons).build());
-        // OFPCR_ROLE_SLAVE
-        maskBuilder = new PortStatusMaskBuilder();
-        reasons = new ArrayList<>();
-        maskBuilder.setMask(reasons);
-        inMasks.add(maskBuilder.build());
-        return inMasks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new PortStatusMaskBuilder()
+                .setMask(Set.of(PortReason.OFPPRADD, PortReason.OFPPRDELETE, PortReason.OFPPRMODIFY))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new PortStatusMaskBuilder().setMask(Set.of()).build());
     }
 
     private static List<FlowRemovedMask> createFlowRemovedMask() {
-        final List<FlowRemovedMask> inMasks = new ArrayList<>();
-        FlowRemovedMaskBuilder maskBuilder;
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        maskBuilder = new FlowRemovedMaskBuilder();
-        List<FlowRemovedReason> reasons = new ArrayList<>();
-        reasons.add(FlowRemovedReason.OFPRRIDLETIMEOUT);
-        reasons.add(FlowRemovedReason.OFPRRHARDTIMEOUT);
-        reasons.add(FlowRemovedReason.OFPRRDELETE);
-        reasons.add(FlowRemovedReason.OFPRRGROUPDELETE);
-        maskBuilder.setMask(reasons);
-        inMasks.add(maskBuilder.build());
-        // OFPCR_ROLE_SLAVE
-        maskBuilder = new FlowRemovedMaskBuilder();
-        reasons = new ArrayList<>();
-        maskBuilder.setMask(reasons);
-        inMasks.add(maskBuilder.build());
-        return inMasks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new FlowRemovedMaskBuilder()
+                .setMask(Set.of(
+                    FlowRemovedReason.OFPRRIDLETIMEOUT,
+                    FlowRemovedReason.OFPRRHARDTIMEOUT,
+                    FlowRemovedReason.OFPRRDELETE,
+                    FlowRemovedReason.OFPRRGROUPDELETE))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new FlowRemovedMaskBuilder().setMask(Set.of()).build());
     }
 }
index 95e4b8b78b5f367b7d545d78c208bcad68559348..7b86b2ef155e6ae005be2e3d007a9e1bd52033bb 100644 (file)
@@ -8,8 +8,8 @@
 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
 
 import io.netty.buffer.ByteBuf;
-import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -70,61 +70,36 @@ public class SetAsyncInputMessageFactoryTest {
     }
 
     private static List<PacketInMask> createPacketInMask() {
-        final List<PacketInMask> masks = new ArrayList<>();
-        PacketInMaskBuilder builder;
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        builder = new PacketInMaskBuilder();
-        List<PacketInReason> packetInReasonList = new ArrayList<>();
-        packetInReasonList.add(PacketInReason.OFPRNOMATCH);
-        packetInReasonList.add(PacketInReason.OFPRACTION);
-        packetInReasonList.add(PacketInReason.OFPRINVALIDTTL);
-        builder.setMask(packetInReasonList);
-        masks.add(builder.build());
-        // OFPCR_ROLE_SLAVE
-        builder = new PacketInMaskBuilder();
-        packetInReasonList = new ArrayList<>();
-        builder.setMask(packetInReasonList);
-        masks.add(builder.build());
-        return masks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new PacketInMaskBuilder()
+                .setMask(Set.of(PacketInReason.OFPRNOMATCH, PacketInReason.OFPRACTION, PacketInReason.OFPRINVALIDTTL))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new PacketInMaskBuilder().setMask(Set.of()).build());
     }
 
     private static List<PortStatusMask> createPortStatusMask() {
-        final List<PortStatusMask> masks = new ArrayList<>();
-        PortStatusMaskBuilder builder;
-        builder = new PortStatusMaskBuilder();
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        List<PortReason> portReasonList = new ArrayList<>();
-        portReasonList.add(PortReason.OFPPRADD);
-        portReasonList.add(PortReason.OFPPRDELETE);
-        portReasonList.add(PortReason.OFPPRMODIFY);
-        builder.setMask(portReasonList);
-        masks.add(builder.build());
-        // OFPCR_ROLE_SLAVE
-        builder = new PortStatusMaskBuilder();
-        portReasonList = new ArrayList<>();
-        builder.setMask(portReasonList);
-        masks.add(builder.build());
-        return masks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new PortStatusMaskBuilder()
+                .setMask(Set.of(PortReason.OFPPRADD, PortReason.OFPPRDELETE, PortReason.OFPPRMODIFY))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new PortStatusMaskBuilder().setMask(Set.of()).build());
     }
 
     private static List<FlowRemovedMask> createFlowRemowedMask() {
-        final List<FlowRemovedMask> masks = new ArrayList<>();
-        FlowRemovedMaskBuilder builder;
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        builder = new FlowRemovedMaskBuilder();
-        List<FlowRemovedReason> flowRemovedReasonList = new ArrayList<>();
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRIDLETIMEOUT);
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRHARDTIMEOUT);
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRDELETE);
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRGROUPDELETE);
-        builder.setMask(flowRemovedReasonList);
-        masks.add(builder.build());
-        // OFPCR_ROLE_SLAVE
-        builder = new FlowRemovedMaskBuilder();
-        flowRemovedReasonList = new ArrayList<>();
-        builder.setMask(flowRemovedReasonList);
-        masks.add(builder.build());
-        return masks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new FlowRemovedMaskBuilder()
+                .setMask(Set.of(
+                    FlowRemovedReason.OFPRRIDLETIMEOUT,
+                    FlowRemovedReason.OFPRRHARDTIMEOUT,
+                    FlowRemovedReason.OFPRRDELETE,
+                    FlowRemovedReason.OFPRRGROUPDELETE))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new FlowRemovedMaskBuilder().setMask(Set.of()).build());
     }
-
 }
index eefc3d959847f905763c39e0605a45a63d5f8617..2bf6c90b569ff0fd80fa89c9431efac5b758f4c0 100644 (file)
@@ -88,8 +88,7 @@ public class OF13SetFieldActionSerializerTest {
         registry.registerSerializer(key, serializerMock);
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
         ser.serialize(actionBuilder.build(), out);
-        Mockito.verify(serializerMock, Mockito.times(1)).serialize(Mockito.anyObject(),
-            Mockito.anyObject());
+        Mockito.verify(serializerMock, Mockito.times(1)).serialize(Mockito.any(), Mockito.any());
         int lenght = out.readableBytes();
         Assert.assertEquals("Wrong - bad field code", ActionConstants.SET_FIELD_CODE, out.readUnsignedShort());
         Assert.assertEquals("Wrong - bad lenght", lenght, out.readUnsignedShort());
index a0a6de17bb6d481128636099340d69baee2d0819..e82e86f6a253ae613d2a394e366873d3126a6a26 100644 (file)
@@ -9,8 +9,8 @@ package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.UnpooledByteBufAllocator;
-import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -69,61 +69,37 @@ public class GetAsyncReplyMessageFactoryTest {
     }
 
     private static List<PacketInMask> createPacketInMask() {
-        final List<PacketInMask> masks = new ArrayList<>();
-        PacketInMaskBuilder builder;
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        builder = new PacketInMaskBuilder();
-        List<PacketInReason> packetInReasonList = new ArrayList<>();
-        packetInReasonList.add(PacketInReason.OFPRNOMATCH);
-        packetInReasonList.add(PacketInReason.OFPRACTION);
-        packetInReasonList.add(PacketInReason.OFPRINVALIDTTL);
-        builder.setMask(packetInReasonList);
-        masks.add(builder.build());
-        // OFPCR_ROLE_SLAVE
-        builder = new PacketInMaskBuilder();
-        packetInReasonList = new ArrayList<>();
-        builder.setMask(packetInReasonList);
-        masks.add(builder.build());
-        return masks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new PacketInMaskBuilder()
+                .setMask(Set.of(PacketInReason.OFPRNOMATCH, PacketInReason.OFPRACTION, PacketInReason.OFPRINVALIDTTL))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new PacketInMaskBuilder().setMask(Set.of()).build());
     }
 
     private static List<PortStatusMask> createPortStatusMask() {
-        final List<PortStatusMask> masks = new ArrayList<>();
-        PortStatusMaskBuilder builder;
-        builder = new PortStatusMaskBuilder();
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        List<PortReason> portReasonList = new ArrayList<>();
-        portReasonList.add(PortReason.OFPPRADD);
-        portReasonList.add(PortReason.OFPPRDELETE);
-        portReasonList.add(PortReason.OFPPRMODIFY);
-        builder.setMask(portReasonList);
-        masks.add(builder.build());
-        // OFPCR_ROLE_SLAVE
-        builder = new PortStatusMaskBuilder();
-        portReasonList = new ArrayList<>();
-        builder.setMask(portReasonList);
-        masks.add(builder.build());
-        return masks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new PortStatusMaskBuilder()
+                .setMask(Set.of(PortReason.OFPPRADD, PortReason.OFPPRDELETE, PortReason.OFPPRMODIFY))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new PortStatusMaskBuilder().setMask(Set.of()).build());
     }
 
     private static List<FlowRemovedMask> createFlowRemowedMask() {
-        final List<FlowRemovedMask> masks = new ArrayList<>();
-        FlowRemovedMaskBuilder builder;
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        builder = new FlowRemovedMaskBuilder();
-        List<FlowRemovedReason> flowRemovedReasonList = new ArrayList<>();
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRIDLETIMEOUT);
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRHARDTIMEOUT);
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRDELETE);
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRGROUPDELETE);
-        builder.setMask(flowRemovedReasonList);
-        masks.add(builder.build());
-        // OFPCR_ROLE_SLAVE
-        builder = new FlowRemovedMaskBuilder();
-        flowRemovedReasonList = new ArrayList<>();
-        builder.setMask(flowRemovedReasonList);
-        masks.add(builder.build());
-        return masks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new FlowRemovedMaskBuilder()
+                .setMask(Set.of(
+                    FlowRemovedReason.OFPRRIDLETIMEOUT,
+                    FlowRemovedReason.OFPRRHARDTIMEOUT,
+                    FlowRemovedReason.OFPRRDELETE,
+                    FlowRemovedReason.OFPRRGROUPDELETE))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new FlowRemovedMaskBuilder().setMask(Set.of()).build());
     }
 
     @Test
index 604646058516cc26a3fdaa11438bd3d9e8fcb057..2504a38949e3da65cce0f68fc23666edd6919921 100644 (file)
@@ -9,8 +9,8 @@ package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.UnpooledByteBufAllocator;
-import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -80,61 +80,37 @@ public class SetAsyncInputMessageFactoryTest {
     }
 
     private static List<PacketInMask> createPacketInMask() {
-        final List<PacketInMask> masks = new ArrayList<>();
-        PacketInMaskBuilder builder;
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        builder = new PacketInMaskBuilder();
-        List<PacketInReason> packetInReasonList = new ArrayList<>();
-        packetInReasonList.add(PacketInReason.OFPRNOMATCH);
-        packetInReasonList.add(PacketInReason.OFPRACTION);
-        packetInReasonList.add(PacketInReason.OFPRINVALIDTTL);
-        builder.setMask(packetInReasonList);
-        masks.add(builder.build());
-        // OFPCR_ROLE_SLAVE
-        builder = new PacketInMaskBuilder();
-        packetInReasonList = new ArrayList<>();
-        builder.setMask(packetInReasonList);
-        masks.add(builder.build());
-        return masks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new PacketInMaskBuilder()
+                .setMask(Set.of(PacketInReason.OFPRNOMATCH, PacketInReason.OFPRACTION, PacketInReason.OFPRINVALIDTTL))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new PacketInMaskBuilder().setMask(Set.of()).build());
     }
 
     private static List<PortStatusMask> createPortStatusMask() {
-        final List<PortStatusMask> masks = new ArrayList<>();
-        PortStatusMaskBuilder builder;
-        builder = new PortStatusMaskBuilder();
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        List<PortReason> portReasonList = new ArrayList<>();
-        portReasonList.add(PortReason.OFPPRADD);
-        portReasonList.add(PortReason.OFPPRDELETE);
-        portReasonList.add(PortReason.OFPPRMODIFY);
-        builder.setMask(portReasonList);
-        masks.add(builder.build());
-        // OFPCR_ROLE_SLAVE
-        builder = new PortStatusMaskBuilder();
-        portReasonList = new ArrayList<>();
-        builder.setMask(portReasonList);
-        masks.add(builder.build());
-        return masks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new PortStatusMaskBuilder()
+                .setMask(Set.of(PortReason.OFPPRADD, PortReason.OFPPRDELETE, PortReason.OFPPRMODIFY))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new PortStatusMaskBuilder().setMask(Set.of()).build());
     }
 
     private static List<FlowRemovedMask> createFlowRemowedMask() {
-        final List<FlowRemovedMask> masks = new ArrayList<>();
-        FlowRemovedMaskBuilder builder;
-        // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
-        builder = new FlowRemovedMaskBuilder();
-        List<FlowRemovedReason> flowRemovedReasonList = new ArrayList<>();
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRIDLETIMEOUT);
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRHARDTIMEOUT);
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRDELETE);
-        flowRemovedReasonList.add(FlowRemovedReason.OFPRRGROUPDELETE);
-        builder.setMask(flowRemovedReasonList);
-        masks.add(builder.build());
-        // OFPCR_ROLE_SLAVE
-        builder = new FlowRemovedMaskBuilder();
-        flowRemovedReasonList = new ArrayList<>();
-        builder.setMask(flowRemovedReasonList);
-        masks.add(builder.build());
-        return masks;
+        return List.of(
+            // OFPCR_ROLE_EQUAL or OFPCR_ROLE_MASTER
+            new FlowRemovedMaskBuilder()
+                .setMask(Set.of(
+                    FlowRemovedReason.OFPRRIDLETIMEOUT,
+                    FlowRemovedReason.OFPRRHARDTIMEOUT,
+                    FlowRemovedReason.OFPRRDELETE,
+                    FlowRemovedReason.OFPRRGROUPDELETE))
+                .build(),
+            // OFPCR_ROLE_SLAVE
+            new FlowRemovedMaskBuilder().setMask(Set.of()).build());
     }
 
     /**
index efaab0c15a665027653a78e9a1cff077e4a71bf4..fde9d56876c2b434826305ef3f29d7ca31d70652 100644 (file)
@@ -92,7 +92,7 @@ public class IntegrationTest {
             tlsConfiguration = new TlsConfigurationImpl(KeystoreType.JKS,
                     "/selfSignedSwitch", PathType.CLASSPATH, KeystoreType.JKS,
                     "/selfSignedController", PathType.CLASSPATH,
-                    new ArrayList<String>());
+                    List.of());
         }
         connConfig = new ConnectionConfigurationImpl(startupAddress, 0, tlsConfiguration,
                 SWITCH_IDLE_TIMEOUT, true, false, CHANNEL_OUTBOUND_QUEUE_SIZE);
index 3e742fcfb326a9bd90b0ea3bf36a5cf2020e0f67..6794bae3396bfdc483948d85bad7f22c0e188145 100644 (file)
@@ -112,6 +112,7 @@ module openflow-switch-connection-config {
             leaf-list cipher-suites {
                 description "combination of cryptographic algorithms used by TLS connection";
                 type string;
+                ordered-by user;
             }
         }
 
index 4c00e421d3c77e6f8cb59d0c197909a9b869b67a..37aac3072444d78034c821f4ace7f058b3cb27b0 100644 (file)
@@ -11,6 +11,7 @@ import java.util.List;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
+import org.opendaylight.yangtools.yang.common.ErrorTag;
 import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.common.Uint64;
@@ -68,9 +69,7 @@ public final class OFConstants {
     public static final int SIGNUM_UNSIGNED = 1;
 
     /** RpcError application tag. */
-    public static final String APPLICATION_TAG = "OPENFLOW_PLUGIN";
-    /** RpcError tag - timeout. */
-    public static final String ERROR_TAG_TIMEOUT = "TIMOUT";
+    public static final ErrorTag APPLICATION_TAG = new ErrorTag("OPENFLOW_PLUGIN");
 
     /** Persistent ID of OpenFlowPlugin configuration file. */
     public static final String CONFIG_FILE_ID = "org.opendaylight.openflowplugin";
index 4e213fc9c924099340eae7f59720a8368e0ead60..bea91fa89c9ea02b7df5b88de7e6239b9790fab9 100644 (file)
     <dependencies>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>osgi.core</artifactId>
+            <artifactId>org.osgi.framework</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.cm</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.openflowplugin</groupId>
             <groupId>${project.groupId}.openflowjava</groupId>
             <artifactId>openflow-protocol-impl</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.openflowplugin</groupId>
             <artifactId>openflowplugin-common</artifactId>
index 1724b6a5a4c020b350c4e33066c1fed20a5cd350..39403cf0471a3b7b1c47f642417bd19026cfe743 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.openflowplugin.impl.common;
 
-import java.util.ArrayList;
+import com.google.common.collect.ImmutableSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -344,38 +344,41 @@ public final class MultipartReplyTranslatorUtil {
             .reply.body.MultipartReplyGroupFeatures translateGroupFeatures(final MultipartReply msg) {
         final MultipartReplyGroupFeatures replyBody = ((MultipartReplyGroupFeaturesCase) msg.getMultipartReplyBody())
             .getMultipartReplyGroupFeatures();
-        final List<Class<? extends GroupType>> supportedGroups = new ArrayList<>();
-        if (replyBody.getTypes().getOFPGTALL()) {
+
+        final var replyTypes = replyBody.getTypes();
+        final var supportedGroups = ImmutableSet.<Class<? extends GroupType>>builder();
+        if (replyTypes.getOFPGTALL()) {
             supportedGroups.add(GroupAll.class);
         }
-        if (replyBody.getTypes().getOFPGTSELECT()) {
+        if (replyTypes.getOFPGTSELECT()) {
             supportedGroups.add(GroupSelect.class);
         }
-        if (replyBody.getTypes().getOFPGTINDIRECT()) {
+        if (replyTypes.getOFPGTINDIRECT()) {
             supportedGroups.add(GroupIndirect.class);
         }
-        if (replyBody.getTypes().getOFPGTFF()) {
+        if (replyTypes.getOFPGTFF()) {
             supportedGroups.add(GroupFf.class);
         }
 
-        List<Class<? extends GroupCapability>> supportedCapabilities = new ArrayList<>();
-        if (replyBody.getCapabilities().getOFPGFCCHAINING()) {
+        final var replyCapabilities = replyBody.getCapabilities();
+        final var supportedCapabilities = ImmutableSet.<Class<? extends GroupCapability>>builder();
+        if (replyCapabilities.getOFPGFCCHAINING()) {
             supportedCapabilities.add(Chaining.class);
         }
-        if (replyBody.getCapabilities().getOFPGFCCHAININGCHECKS()) {
+        if (replyCapabilities.getOFPGFCCHAININGCHECKS()) {
             supportedCapabilities.add(ChainingChecks.class);
         }
-        if (replyBody.getCapabilities().getOFPGFCSELECTLIVENESS()) {
+        if (replyCapabilities.getOFPGFCSELECTLIVENESS()) {
             supportedCapabilities.add(SelectLiveness.class);
         }
-        if (replyBody.getCapabilities().getOFPGFCSELECTWEIGHT()) {
+        if (replyCapabilities.getOFPGFCSELECTWEIGHT()) {
             supportedCapabilities.add(SelectWeight.class);
         }
 
         return new MultipartReplyGroupFeaturesBuilder()
-            .setGroupTypesSupported(supportedGroups)
+            .setGroupTypesSupported(supportedGroups.build())
             .setMaxGroups(replyBody.getMaxGroups())
-            .setGroupCapabilitiesSupported(supportedCapabilities)
+            .setGroupCapabilitiesSupported(supportedCapabilities.build())
             .setActions(GroupUtil.extractGroupActionsSupportBitmap(replyBody.getActionsBitmap()))
             .build();
     }
@@ -419,25 +422,27 @@ public final class MultipartReplyTranslatorUtil {
         MultipartReplyMeterFeaturesCase caseBody = (MultipartReplyMeterFeaturesCase) msg.getMultipartReplyBody();
         MultipartReplyMeterFeatures replyBody = caseBody.getMultipartReplyMeterFeatures();
 
-        final List<Class<? extends MeterCapability>> supportedCapabilities = new ArrayList<>();
-        if (replyBody.getCapabilities().getOFPMFBURST()) {
+        final var replyCapabilities = replyBody.getCapabilities();
+        final var supportedCapabilities = ImmutableSet.<Class<? extends MeterCapability>>builder();
+        if (replyCapabilities.getOFPMFBURST()) {
             supportedCapabilities.add(MeterBurst.class);
         }
-        if (replyBody.getCapabilities().getOFPMFKBPS()) {
+        if (replyCapabilities.getOFPMFKBPS()) {
             supportedCapabilities.add(MeterKbps.class);
         }
-        if (replyBody.getCapabilities().getOFPMFPKTPS()) {
+        if (replyCapabilities.getOFPMFPKTPS()) {
             supportedCapabilities.add(MeterPktps.class);
         }
-        if (replyBody.getCapabilities().getOFPMFSTATS()) {
+        if (replyCapabilities.getOFPMFSTATS()) {
             supportedCapabilities.add(MeterStats.class);
         }
 
-        final List<Class<? extends MeterBand>> supportedMeterBand = new ArrayList<>();
-        if (replyBody.getBandTypes().getOFPMBTDROP()) {
+        final var replyMeterBand = replyBody.getBandTypes();
+        final var supportedMeterBand = ImmutableSet.<Class<? extends MeterBand>>builder();
+        if (replyMeterBand.getOFPMBTDROP()) {
             supportedMeterBand.add(MeterBandDrop.class);
         }
-        if (replyBody.getBandTypes().getOFPMBTDSCPREMARK()) {
+        if (replyMeterBand.getOFPMBTDSCPREMARK()) {
             supportedMeterBand.add(MeterBandDscpRemark.class);
         }
 
@@ -445,8 +450,8 @@ public final class MultipartReplyTranslatorUtil {
             .setMaxBands(replyBody.getMaxBands())
             .setMaxColor(replyBody.getMaxColor())
             .setMaxMeter(new Counter32(replyBody.getMaxMeter()))
-            .setMeterCapabilitiesSupported(supportedCapabilities)
-            .setMeterBandSupported(supportedMeterBand)
+            .setMeterCapabilitiesSupported(supportedCapabilities.build())
+            .setMeterBandSupported(supportedMeterBand.build())
             .build();
     }
 
index aeeb684a2c86db7beebaf7873218319b79551b2e..046c0046ffb82fbd0393cdfe5c9a056b3add2c3b 100644 (file)
@@ -7,8 +7,7 @@
  */
 package org.opendaylight.openflowplugin.impl.device;
 
-import java.util.ArrayList;
-import java.util.List;
+import com.google.common.collect.ImmutableSet;
 import org.opendaylight.openflowplugin.api.openflow.md.core.sal.BuildSwitchFeatures;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FeatureCapability;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowFeatureCapabilityArpMatchIp;
@@ -44,36 +43,41 @@ public final class BuildSwitchCapabilitiesOF10 implements BuildSwitchFeatures {
 
     @Override
     public SwitchFeatures build(final GetFeaturesOutput features) {
-        List<Class<? extends FeatureCapability>> capabilities = new ArrayList<>();
-        if (features.getCapabilitiesV10().getOFPCARPMATCHIP()) {
-            capabilities.add(FlowFeatureCapabilityArpMatchIp.class);
+        final var capabilities = features.getCapabilitiesV10();
+        if (capabilities == null) {
+            return null;
         }
-        if (features.getCapabilitiesV10().getOFPCFLOWSTATS()) {
-            capabilities.add(FlowFeatureCapabilityFlowStats.class);
+
+        final var builder = ImmutableSet.<Class<? extends FeatureCapability>>builder();
+        if (capabilities.getOFPCARPMATCHIP()) {
+            builder.add(FlowFeatureCapabilityArpMatchIp.class);
+        }
+        if (capabilities.getOFPCFLOWSTATS()) {
+            builder.add(FlowFeatureCapabilityFlowStats.class);
         }
-        if (features.getCapabilitiesV10().getOFPCIPREASM()) {
-            capabilities.add(FlowFeatureCapabilityIpReasm.class);
+        if (capabilities.getOFPCIPREASM()) {
+            builder.add(FlowFeatureCapabilityIpReasm.class);
         }
-        if (features.getCapabilitiesV10().getOFPCPORTSTATS()) {
-            capabilities.add(FlowFeatureCapabilityPortStats.class);
+        if (capabilities.getOFPCPORTSTATS()) {
+            builder.add(FlowFeatureCapabilityPortStats.class);
         }
-        if (features.getCapabilitiesV10().getOFPCQUEUESTATS()) {
-            capabilities.add(FlowFeatureCapabilityQueueStats.class);
+        if (capabilities.getOFPCQUEUESTATS()) {
+            builder.add(FlowFeatureCapabilityQueueStats.class);
         }
-        if (features.getCapabilitiesV10().getOFPCRESERVED()) {
-            capabilities.add(FlowFeatureCapabilityReserved.class);
+        if (capabilities.getOFPCRESERVED()) {
+            builder.add(FlowFeatureCapabilityReserved.class);
         }
-        if (features.getCapabilitiesV10().getOFPCSTP()) {
-            capabilities.add(FlowFeatureCapabilityStp.class);
+        if (capabilities.getOFPCSTP()) {
+            builder.add(FlowFeatureCapabilityStp.class);
         }
-        if (features.getCapabilitiesV10().getOFPCTABLESTATS()) {
-            capabilities.add(FlowFeatureCapabilityTableStats.class);
+        if (capabilities.getOFPCTABLESTATS()) {
+            builder.add(FlowFeatureCapabilityTableStats.class);
         }
 
         return new SwitchFeaturesBuilder()
             .setMaxBuffers(features.getBuffers())
             .setMaxTables(features.getTables())
-            .setCapabilities(capabilities)
+            .setCapabilities(builder.build())
             .build();
     }
 }
index c7c370523c62ee8e2815a285b437947817b92443..b502cd2d9d7204b0bc3c9b236d79bf3ae446993a 100644 (file)
@@ -7,8 +7,7 @@
  */
 package org.opendaylight.openflowplugin.impl.device;
 
-import java.util.ArrayList;
-import java.util.List;
+import com.google.common.collect.ImmutableSet;
 import org.opendaylight.openflowplugin.api.openflow.md.core.sal.BuildSwitchFeatures;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FeatureCapability;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowFeatureCapabilityFlowStats;
@@ -43,33 +42,38 @@ public final class BuildSwitchCapabilitiesOF13 implements BuildSwitchFeatures {
 
     @Override
     public SwitchFeatures build(final GetFeaturesOutput features) {
-        List<Class<? extends FeatureCapability>> capabilities = new ArrayList<>();
-        if (features.getCapabilities().getOFPCFLOWSTATS()) {
-            capabilities.add(FlowFeatureCapabilityFlowStats.class);
+        final var capabilities = features.getCapabilities();
+        if (capabilities == null) {
+            return null;
         }
-        if (features.getCapabilities().getOFPCGROUPSTATS()) {
-            capabilities.add(FlowFeatureCapabilityGroupStats.class);
+
+        final var builder = ImmutableSet.<Class<? extends FeatureCapability>>builder();
+        if (capabilities.getOFPCFLOWSTATS()) {
+            builder.add(FlowFeatureCapabilityFlowStats.class);
+        }
+        if (capabilities.getOFPCGROUPSTATS()) {
+            builder.add(FlowFeatureCapabilityGroupStats.class);
         }
-        if (features.getCapabilities().getOFPCIPREASM()) {
-            capabilities.add(FlowFeatureCapabilityIpReasm.class);
+        if (capabilities.getOFPCIPREASM()) {
+            builder.add(FlowFeatureCapabilityIpReasm.class);
         }
-        if (features.getCapabilities().getOFPCPORTBLOCKED()) {
-            capabilities.add(FlowFeatureCapabilityPortBlocked.class);
+        if (capabilities.getOFPCPORTBLOCKED()) {
+            builder.add(FlowFeatureCapabilityPortBlocked.class);
         }
-        if (features.getCapabilities().getOFPCPORTSTATS()) {
-            capabilities.add(FlowFeatureCapabilityPortStats.class);
+        if (capabilities.getOFPCPORTSTATS()) {
+            builder.add(FlowFeatureCapabilityPortStats.class);
         }
-        if (features.getCapabilities().getOFPCQUEUESTATS()) {
-            capabilities.add(FlowFeatureCapabilityQueueStats.class);
+        if (capabilities.getOFPCQUEUESTATS()) {
+            builder.add(FlowFeatureCapabilityQueueStats.class);
         }
-        if (features.getCapabilities().getOFPCTABLESTATS()) {
-            capabilities.add(FlowFeatureCapabilityTableStats.class);
+        if (capabilities.getOFPCTABLESTATS()) {
+            builder.add(FlowFeatureCapabilityTableStats.class);
         }
 
         return new SwitchFeaturesBuilder()
             .setMaxBuffers(features.getBuffers())
             .setMaxTables(features.getTables())
-            .setCapabilities(capabilities)
+            .setCapabilities(builder.build())
             .build();
     }
 }
index e71780330b7f382db9292fe7db5194e56880f477..93932451fb5b113fd9d68c24ff16f92501284f84 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.openflowplugin.impl.device;
 import static org.opendaylight.openflowplugin.api.OFConstants.OFP_VERSION_1_0;
 import static org.opendaylight.openflowplugin.api.OFConstants.OFP_VERSION_1_3;
 
-import java.util.HashMap;
 import java.util.Map;
 import org.opendaylight.openflowplugin.api.openflow.md.core.sal.BuildSwitchFeatures;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.flow.node.SwitchFeatures;
@@ -20,25 +19,14 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public final class SwitchFeaturesUtil {
-
     private static final Logger LOG = LoggerFactory.getLogger(SwitchFeaturesUtil.class);
 
-    private static SwitchFeaturesUtil instance = new SwitchFeaturesUtil();
-    private final Map<Uint8, BuildSwitchFeatures> swFeaturesBuilders;
+    private static final Map<Uint8, BuildSwitchFeatures> SWITCH_FEATURES_BUILDERS = Map.of(
+        OFP_VERSION_1_0, BuildSwitchCapabilitiesOF10.getInstance(),
+        OFP_VERSION_1_3, BuildSwitchCapabilitiesOF13.getInstance());
 
     private SwitchFeaturesUtil() {
-        swFeaturesBuilders = new HashMap<>();
-        swFeaturesBuilders.put(OFP_VERSION_1_0, BuildSwitchCapabilitiesOF10.getInstance());
-        swFeaturesBuilders.put(OFP_VERSION_1_3, BuildSwitchCapabilitiesOF13.getInstance());
-    }
-
-    /**
-     * Get singleton instance.
-     *
-     * @return instance
-     */
-    public static SwitchFeaturesUtil getInstance() {
-        return instance;
+        // Hidden on purpose
     }
 
     /**
@@ -48,18 +36,14 @@ public final class SwitchFeaturesUtil {
      *        {@link org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput}
      * @return switch features
      */
-    public SwitchFeatures buildSwitchFeatures(final GetFeaturesOutput features) {
-        if (swFeaturesBuilders.containsKey(features.getVersion())) {
-            LOG.debug("map contains version {}", features.getVersion());
-            try {
-                return swFeaturesBuilders.get(features.getVersion()).build(features);
-            } catch (NullPointerException e) {
-                LOG.warn("error while building switch features: {}", e.getMessage());
-                LOG.debug("error while building switch features.. ", e);
-            }
-        } else {
-            LOG.warn("unknown version: {}", features.getVersion());
+    public static SwitchFeatures buildSwitchFeatures(final GetFeaturesOutput features) {
+        final var version = features.getVersion();
+        final var builder = SWITCH_FEATURES_BUILDERS.get(version);
+        if (builder != null) {
+            LOG.debug("map contains version {}", version);
+            return builder.build(features);
         }
+        LOG.warn("unknown version: {}", version);
         return null;
     }
 }
index 811a88889a1e0fb7c239c179af495de3deea0fec..5f2b1c266448de24910218840b29a92a90129538 100644 (file)
@@ -12,7 +12,6 @@ import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -131,8 +130,6 @@ public class OF10DeviceInitializer extends AbstractDeviceInitializer {
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-            justification = "https://github.com/spotbugs/spotbugs/issues/811")
     private static void makeEmptyFlowCapableNode(final TxFacade txFacade, final DeviceInfo deviceInfo) {
         try {
             txFacade.writeToTransaction(LogicalDatastoreType.OPERATIONAL,
index 73bb3fe0c65294220f07549411ba8972f2ad70c1..24574fb594ada1b41515a7594aa67afbae360068 100644 (file)
@@ -66,7 +66,7 @@ import org.opendaylight.yangtools.yang.common.Uint8;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class ContextChainHolderImpl implements ContextChainHolder, MasterChecker {
+public final class ContextChainHolderImpl implements ContextChainHolder, MasterChecker {
     private static final Logger LOG = LoggerFactory.getLogger(ContextChainHolderImpl.class);
     private static final Logger OF_EVENT_LOG = LoggerFactory.getLogger("OfEventLog");
 
@@ -105,7 +105,7 @@ public class ContextChainHolderImpl implements ContextChainHolder, MasterChecker
         this.ownershipChangeListener.setMasterChecker(this);
         this.entityOwnershipService = entityOwnershipService;
         this.config = config;
-        this.eosListenerRegistration = Objects
+        eosListenerRegistration = Objects
                 .requireNonNull(entityOwnershipService.registerListener(ASYNC_SERVICE_ENTITY_TYPE, this));
     }
 
@@ -361,7 +361,7 @@ public class ContextChainHolderImpl implements ContextChainHolder, MasterChecker
                         LOG.warn("Seems like device is still owned by other controller instance. Skip deleting {} "
                                 + "node from operational datastore.", entityName);
                     }
-                } catch (TimeoutException | ExecutionException | NullPointerException | InterruptedException e) {
+                } catch (TimeoutException | ExecutionException | InterruptedException e) {
                     LOG.warn("Not able to remove device {} from operational DS. ", entityName, e);
                 }
             }, config.getDeviceDatastoreRemovalDelay().getValue().toJava(), TimeUnit.MILLISECONDS);
index 80f2d9006f300c40b169dded7c76f4737cf21650..9f51e39f3bbbabff6031a827527150fdcf1c5e82 100644 (file)
@@ -9,9 +9,9 @@ package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 
 import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
 
+import com.google.common.collect.ImmutableSet;
 import io.netty.buffer.ByteBuf;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
@@ -33,67 +33,53 @@ public class MultipartReplyGroupFeaturesDeserializer implements OFDeserializer<M
 
     @Override
     public MultipartReplyBody deserialize(final ByteBuf message) {
-        final MultipartReplyGroupFeaturesBuilder builder = new MultipartReplyGroupFeaturesBuilder();
-
-        return builder
+        return new MultipartReplyGroupFeaturesBuilder()
             .setGroupTypesSupported(readGroupTypes(message))
             .setGroupCapabilitiesSupported(readGroupCapabilities(message))
             .setMaxGroups(IntStream.range(0, GROUP_TYPES)
                 .mapToObj(i -> readUint32(message))
-                .collect(Collectors.toList()))
+                .collect(Collectors.toUnmodifiableList()))
             .setActions(IntStream.range(0, GROUP_TYPES)
                 .mapToObj(i -> readUint32(message))
-                .collect(Collectors.toList()))
+                .collect(Collectors.toUnmodifiableList()))
             .build();
     }
 
-    private static List<Class<? extends GroupCapability>> readGroupCapabilities(final ByteBuf message) {
-        final List<Class<? extends GroupCapability>> groupCapabilities = new ArrayList<>();
+    private static Set<Class<? extends GroupCapability>> readGroupCapabilities(final ByteBuf message) {
         final long capabilitiesMask = message.readUnsignedInt();
 
-        final boolean gcSelectWeight = (capabilitiesMask & 1 << 0) != 0;
-        final boolean gcSelectLiveness = (capabilitiesMask & 1 << 1) != 0;
-        final boolean gcChaining = (capabilitiesMask & 1 << 2) != 0;
-        final boolean gcChainingChecks = (capabilitiesMask & 1 << 3) != 0;
-
-        if (gcSelectWeight) {
-            groupCapabilities.add(SelectWeight.class);
+        final var builder = ImmutableSet.<Class<? extends GroupCapability>>builder();
+        if ((capabilitiesMask & 1 << 0) != 0) {
+            builder.add(SelectWeight.class);
         }
-        if (gcSelectLiveness) {
-            groupCapabilities.add(SelectLiveness.class);
+        if ((capabilitiesMask & 1 << 1) != 0) {
+            builder.add(SelectLiveness.class);
         }
-        if (gcChaining) {
-            groupCapabilities.add(Chaining.class);
+        if ((capabilitiesMask & 1 << 2) != 0) {
+            builder.add(Chaining.class);
         }
-        if (gcChainingChecks) {
-            groupCapabilities.add(ChainingChecks.class);
+        if ((capabilitiesMask & 1 << 3) != 0) {
+            builder.add(ChainingChecks.class);
         }
-
-        return groupCapabilities;
+        return builder.build();
     }
 
-    private static List<Class<? extends GroupType>> readGroupTypes(final ByteBuf message) {
-        final List<Class<? extends GroupType>> groupTypes = new ArrayList<>();
+    private static Set<Class<? extends GroupType>> readGroupTypes(final ByteBuf message) {
         final long typesMask = message.readUnsignedInt();
 
-        final boolean gtAll = (typesMask & 1 << 0) != 0;
-        final boolean gtSelect = (typesMask & 1 << 1) != 0;
-        final boolean gtIndirect = (typesMask & 1 << 2) != 0;
-        final boolean gtFF = (typesMask & 1 << 3) != 0;
-
-        if (gtAll) {
-            groupTypes.add(GroupAll.class);
+        final var builder = ImmutableSet.<Class<? extends GroupType>>builder();
+        if ((typesMask & 1 << 0) != 0) {
+            builder.add(GroupAll.class);
         }
-        if (gtSelect) {
-            groupTypes.add(GroupSelect.class);
+        if ((typesMask & 1 << 1) != 0) {
+            builder.add(GroupSelect.class);
         }
-        if (gtIndirect) {
-            groupTypes.add(GroupIndirect.class);
+        if ((typesMask & 1 << 2) != 0) {
+            builder.add(GroupIndirect.class);
         }
-        if (gtFF) {
-            groupTypes.add(GroupFf.class);
+        if ((typesMask & 1 << 3) != 0) {
+            builder.add(GroupFf.class);
         }
-
-        return groupTypes;
+        return builder.build();
     }
 }
index 2465a7505cf445c095d846614c854a42afb74cb0..4c24be8396c31a1b4f019e646ec9cad92ffe9178 100644 (file)
@@ -10,9 +10,9 @@ package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
 import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
 import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
 
+import com.google.common.collect.ImmutableSet;
 import io.netty.buffer.ByteBuf;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Set;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.multipart.reply.multipart.reply.body.MultipartReplyMeterFeaturesBuilder;
@@ -39,45 +39,36 @@ public class MultipartReplyMeterFeaturesDeserializer implements OFDeserializer<M
                 .build();
     }
 
-    private static List<Class<? extends MeterBand>> readMeterBands(final ByteBuf message) {
-        final List<Class<? extends MeterBand>> bandTypes = new ArrayList<>();
+    private static Set<Class<? extends MeterBand>> readMeterBands(final ByteBuf message) {
         final long typesMask = message.readUnsignedInt();
-        final boolean mbtDrop = (typesMask & 1) != 0;
-        final boolean mbtDscpRemark = (typesMask & 1 << 1) != 0;
 
-        if (mbtDrop) {
+        final var bandTypes = ImmutableSet.<Class<? extends MeterBand>>builder();
+        if ((typesMask & 1) != 0) {
             bandTypes.add(MeterBandDrop.class);
         }
-        if (mbtDscpRemark) {
+        if ((typesMask & 1 << 1) != 0) {
             bandTypes.add(MeterBandDscpRemark.class);
         }
-
-        return bandTypes;
+        return bandTypes.build();
     }
 
-    private static List<Class<? extends MeterCapability>> readMeterCapabilities(final ByteBuf message) {
-        final List<Class<? extends MeterCapability>> meterCapabilities = new ArrayList<>();
+    private static Set<Class<? extends MeterCapability>> readMeterCapabilities(final ByteBuf message) {
         final long capabilitiesMask = message.readUnsignedInt();
 
-        final boolean mfKbps = (capabilitiesMask & 1) != 0;
-        final boolean mfPktps = (capabilitiesMask & 1 << 1) != 0;
-        final boolean mfBurst = (capabilitiesMask & 1 << 2) != 0;
-        final boolean mfStats = (capabilitiesMask & 1 << 3) != 0;
-
-        if (mfKbps) {
+        final var meterCapabilities = ImmutableSet.<Class<? extends MeterCapability>>builder();
+        if ((capabilitiesMask & 1) != 0) {
             meterCapabilities.add(MeterKbps.class);
         }
-        if (mfPktps) {
+        if ((capabilitiesMask & 1 << 1) != 0) {
             meterCapabilities.add(MeterPktps.class);
         }
-        if (mfBurst) {
+        if ((capabilitiesMask & 1 << 2) != 0) {
             meterCapabilities.add(MeterBurst.class);
         }
-        if (mfStats) {
+        if ((capabilitiesMask & 1 << 3) != 0) {
             meterCapabilities.add(MeterStats.class);
         }
 
-        return meterCapabilities;
+        return meterCapabilities.build();
     }
-
 }
index 082591d1bbdeeed759dcb6627a7c732ef118ff7e..f46310ea328c3c675cbc87fc368a1f5c7d507e00 100644 (file)
@@ -13,7 +13,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
 import org.opendaylight.openflowplugin.api.openflow.device.handlers.MultiMsgCollector;
 import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.EventIdentifier;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -45,7 +45,7 @@ public abstract class AbstractMultipartRequestCallback<T extends OfHeader> exten
 
             setResult(RpcResultBuilder
                     .<List<T>>failed()
-                    .withError(RpcError.ErrorType.APPLICATION,
+                    .withError(ErrorType.APPLICATION,
                             String.format("Unexpected response type received: %s.", result.getClass()))
                     .build());
         } else {
index 038612c609436c6c9ef7576f227af6c1083746e4..3ddc8dd25c899dac5386bfad7f6e7f694d3ffa18 100755 (executable)
@@ -8,6 +8,7 @@
 package org.opendaylight.openflowplugin.impl.services;
 
 import com.google.common.util.concurrent.Service;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Collections;
 import java.util.List;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
@@ -26,7 +27,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Fl
 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.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -34,15 +35,19 @@ import org.slf4j.LoggerFactory;
 public abstract class AbstractMultipartRequestOnTheFlyCallback<T extends OfHeader>
                                                         extends AbstractMultipartRequestCallback<T> {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractMultipartRequestOnTheFlyCallback.class);
+
     private final DeviceInfo deviceInfo;
     private final EventIdentifier doneEventIdentifier;
     private final TxFacade txFacade;
     private final MultipartWriterProvider statisticsWriterProvider;
     private final DeviceRegistry deviceRegistry;
-    private volatile Service.State gatheringState = Service.State.NEW;
     private final ConvertorExecutor convertorExecutor;
 
-    public AbstractMultipartRequestOnTheFlyCallback(final RequestContext<List<T>> context, Class<?> requestType,
+    private volatile Service.State gatheringState = Service.State.NEW;
+
+    @SuppressFBWarnings(value = "MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR",
+        justification = "getMultipartType() should be okay to call")
+    public AbstractMultipartRequestOnTheFlyCallback(final RequestContext<List<T>> context, final Class<?> requestType,
                                                     final DeviceContext deviceContext,
                                                     final EventIdentifier eventIdentifier,
                                                     final MultipartWriterProvider statisticsWriterProvider,
@@ -75,7 +80,7 @@ public abstract class AbstractMultipartRequestOnTheFlyCallback<T extends OfHeade
 
         if (!isMultipart(result)) {
             LOG.warn("Unexpected response type received: {}.", result.getClass());
-            setResult(RpcResultBuilder.<List<T>>failed().withError(RpcError.ErrorType.APPLICATION,
+            setResult(RpcResultBuilder.<List<T>>failed().withError(ErrorType.APPLICATION,
                     String.format("Unexpected response type received: %s.", result.getClass())).build());
             endCollecting(false);
         } else {
@@ -100,7 +105,7 @@ public abstract class AbstractMultipartRequestOnTheFlyCallback<T extends OfHeade
                         });
             } catch (final Exception ex) {
                 LOG.warn("Unexpected exception occurred while translating response: {}.", result.getClass(), ex);
-                setResult(RpcResultBuilder.<List<T>>failed().withError(RpcError.ErrorType.APPLICATION,
+                setResult(RpcResultBuilder.<List<T>>failed().withError(ErrorType.APPLICATION,
                         String.format("Unexpected exception occurred while translating response: %s. %s",
                                       result.getClass(),
                                       ex)).build());
index 0181afee89fbb6c0292fd472ed99fd89f902f84d..4544e933f9bb983a7c0b7cc943d5a265ebb615c2 100644 (file)
@@ -20,7 +20,7 @@ import org.opendaylight.openflowplugin.impl.services.util.RequestContextUtil;
 import org.opendaylight.openflowplugin.impl.statistics.ofpspecific.EventsTimeCounter;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.Error;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 
@@ -65,16 +65,16 @@ public abstract class AbstractRequestCallback<T> implements FutureCallback<OfHea
                                                      err.getTypeString(),
                                                      err.getCodeString());
 
-            builder = RpcResultBuilder.<T>failed().withError(RpcError.ErrorType.APPLICATION, errorString, throwable);
+            builder = RpcResultBuilder.<T>failed().withError(ErrorType.APPLICATION, errorString, throwable);
             spyMessage(StatisticsGroup.TO_SWITCH_SUBMIT_FAILURE);
         } else {
             if (throwable != null) {
                 builder = RpcResultBuilder.<T>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, throwable.getMessage(), throwable);
+                        .withError(ErrorType.APPLICATION, throwable.getMessage(), throwable);
             } else {
                 Throwable deviceReadFailedThrowable = new Throwable("Failed to read from device.");
                 builder = RpcResultBuilder.<T>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, deviceReadFailedThrowable.getMessage(),
+                        .withError(ErrorType.APPLICATION, deviceReadFailedThrowable.getMessage(),
                                 deviceReadFailedThrowable);
             }
             spyMessage(StatisticsGroup.TO_SWITCH_SUBMIT_ERROR);
index d5a99fa8aa59a9b58717d628231001d3c45871a2..d916cd35685e042feb322354a4ade970bd050f7d 100644 (file)
@@ -29,7 +29,8 @@ import org.opendaylight.openflowplugin.impl.services.util.RequestContextUtil;
 import org.opendaylight.openflowplugin.impl.services.util.ServiceException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
 import org.opendaylight.yangtools.yang.binding.DataContainer;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorTag;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint32;
@@ -70,11 +71,11 @@ public abstract class AbstractService<I, O> {
         this.eventIdentifier = eventIdentifier;
     }
 
-    public Uint8 getVersion() {
+    public final Uint8 getVersion() {
         return version;
     }
 
-    public Uint64 getDatapathId() {
+    public final Uint64 getDatapathId() {
         return datapathId;
     }
 
@@ -129,7 +130,7 @@ public abstract class AbstractService<I, O> {
             getMessageSpy().spyMessage(AbstractService.class, MessageSpy.StatisticsGroup.TO_SWITCH_DISREGARDED);
             return Futures.immediateFuture(RpcResultBuilder
                     .<O>failed()
-                    .withError(RpcError.ErrorType.APPLICATION, "", "Request quota exceeded")
+                    .withError(ErrorType.APPLICATION, ErrorTag.ACCESS_DENIED, "Request quota exceeded")
                     .build());
         }
 
index 3093bc4302a5b0214b18d4efe56899dffa88816c..0f696787f7b0ce8f077a3a54a1ff2891975a8783 100644 (file)
@@ -8,8 +8,9 @@
 
 package org.opendaylight.openflowplugin.impl.services.multilayer;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.base.MoreObjects;
-import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
@@ -57,7 +58,7 @@ public class MultiLayerAggregateFlowMultipartService extends AbstractAggregateFl
         super(requestContextStack, deviceContext);
         this.convertorExecutor = convertorExecutor;
         this.translatorLibrary = translatorLibrary;
-        this.data = new VersionConvertorData(getVersion());
+        data = new VersionConvertorData(getVersion());
     }
 
 
@@ -118,7 +119,7 @@ public class MultiLayerAggregateFlowMultipartService extends AbstractAggregateFl
             final GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput input) {
         return Futures.transform(handleServiceCall(input),
             result -> {
-                if (Preconditions.checkNotNull(result).isSuccessful()) {
+                if (requireNonNull(result).isSuccessful()) {
                     final MessageTranslator<MultipartReply, AggregatedFlowStatistics>
                              messageTranslator = translatorLibrary.lookupTranslator(
                                  new TranslatorKey(getVersion(),
@@ -133,8 +134,8 @@ public class MultiLayerAggregateFlowMultipartService extends AbstractAggregateFl
                                                                                           multipartReply,
                                                                                           getDeviceInfo(),
                                                                                           null))
-                                                                          .collect(Collectors
-                                                                                           .toList())))
+                                                                          .collect(Collectors.toList()))
+                                     .build())
                              .build();
                 }
 
index bebf8e4e6fe1f1fd73dcb268233cd732eab7e8b5..9077b096ed2a7725f9f2e405e9136878ffceb52b 100644 (file)
@@ -44,7 +44,7 @@ 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.MultipartRequestExperimenterCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.experimenter._case.MultipartRequestExperimenterBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.experimenter.types.rev151020.experimenter.core.message.ExperimenterMessageOfChoice;
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
index b14d770a94962c772012b620eccd362e4ae430ef..f0b3920a6e32d1b4b597c0425b2dcaf1fe5ad7a0 100644 (file)
@@ -27,6 +27,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.Flow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
 import org.opendaylight.yangtools.yang.binding.DataObject;
+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;
@@ -73,7 +74,7 @@ public final class MultiLayerFlowService<O extends DataObject> extends AbstractS
                 for (RpcResult<O> flowModResult : results) {
                     if (flowModResult == null) {
                         errors.add(RpcResultBuilder.newError(
-                                RpcError.ErrorType.PROTOCOL, OFConstants.APPLICATION_TAG,
+                                ErrorType.PROTOCOL, OFConstants.APPLICATION_TAG,
                                 "unexpected flowMod result (null) occurred"));
                     } else if (!flowModResult.isSuccessful()) {
                         errors.addAll(flowModResult.getErrors());
index 8d75d6b5d0518e027cee45f8cf9e6053e00378db..d39de7398c55e9ae9b5f0763e0efd0f81954d32a 100644 (file)
@@ -39,7 +39,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.Upd
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint32;
index 142f074d485d9098a4c8e52f8bb43464caf8a17a..bc9f7217c22beb16b0a90dfdc5b386d4af3fb793 100644 (file)
@@ -30,19 +30,19 @@ public class SalAsyncConfigServiceImpl implements SalAsyncConfigService {
 
     public SalAsyncConfigServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext) {
         setAsyncConfigService = new SingleLayerSetAsyncConfigService(requestContextStack, deviceContext);
-        this.getAsyncConfigService = new SingleLayerGetAsyncConfigService(requestContextStack, deviceContext);
+        getAsyncConfigService = new SingleLayerGetAsyncConfigService(requestContextStack, deviceContext);
     }
 
     @Override
-    public ListenableFuture<RpcResult<SetAsyncOutput>> setAsync(SetAsyncInput input) {
+    public ListenableFuture<RpcResult<SetAsyncOutput>> setAsync(final SetAsyncInput input) {
         return setAsyncConfigService.handleServiceCall(input);
     }
 
     @Override
-    public ListenableFuture<RpcResult<GetAsyncOutput>> getAsync(GetAsyncInput input) {
+    public ListenableFuture<RpcResult<GetAsyncOutput>> getAsync(final GetAsyncInput input) {
         return Futures.transform(getAsyncConfigService.handleServiceCall(input), result ->
                 result != null && result.isSuccessful()
-                        ? RpcResultBuilder.success(new GetAsyncOutputBuilder(result.getResult())).build()
+                        ? RpcResultBuilder.success(new GetAsyncOutputBuilder(result.getResult()).build()).build()
                         : RpcResultBuilder.<GetAsyncOutput>failed().build(),
                 MoreExecutors.directExecutor());
     }
index d1c223a0813d04227ba72becf9f5e56be69964fa..30b60e127c2d359552e65abd451203d9347ba096 100644 (file)
@@ -28,6 +28,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.on
 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;
@@ -47,7 +49,7 @@ public class SalBundleServiceImpl implements SalBundleService {
     }
 
     @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());
@@ -64,7 +66,7 @@ public class SalBundleServiceImpl implements SalBundleService {
     }
 
     @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();
@@ -89,13 +91,14 @@ public class SalBundleServiceImpl implements SalBundleService {
         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());
                     }
@@ -109,7 +112,7 @@ public class SalBundleServiceImpl implements SalBundleService {
             }
 
             @Override
-            public void onFailure(Throwable throwable) {
+            public void onFailure(final Throwable throwable) {
                 RpcResultBuilder<AddBundleMessagesOutput> rpcResultBuilder = RpcResultBuilder.failed();
                 result.set(rpcResultBuilder.build());
             }
index 22e627037005b04e35e7977e52f07b82903c2c59..6542234329a4d3fb7d08d9221c4d503b7c0e7a80 100644 (file)
@@ -43,6 +43,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.flow
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.flow.update.UpdatedFlow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInputBuilder;
+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;
@@ -140,7 +141,7 @@ public class SalFlowServiceImpl implements SalFlowService {
                         for (RpcResult<UpdateFlowOutput> flowModResult : results) {
                             if (flowModResult == null) {
                                 errors.add(RpcResultBuilder.newError(
-                                        RpcError.ErrorType.PROTOCOL, OFConstants.APPLICATION_TAG,
+                                        ErrorType.PROTOCOL, OFConstants.APPLICATION_TAG,
                                         "unexpected flowMod result (null) occurred"));
                             } else if (!flowModResult.isSuccessful()) {
                                 errors.addAll(flowModResult.getErrors());
index 700eb0f78396ff09c0492088b77c6acf6feedf05..96d572d6b1a89975a52fd9d4f46d02102e20de84 100644 (file)
@@ -66,7 +66,8 @@ public class SingleLayerAggregateFlowMultipartService
                                                 new AggregatedFlowStatisticsBuilder(
                                                     (MultipartReplyFlowAggregateStats) multipartReplyBody)
                                                         .build())
-                                        .collect(Collectors.toList())))
+                                        .collect(Collectors.toList()))
+                                .build())
                         .build();
             }
 
index 2783b254d3efbbe48efed4c8410a1c7522df1a40..7ab5c4daa062d1f1d892c4e6669ff37b7dd9b1ff 100644 (file)
@@ -29,7 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.M
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.experimenter.types.rev151020.multipart.reply.multipart.reply.body.MultipartReplyExperimenter;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.experimenter.types.rev151020.multipart.request.multipart.request.body.MultipartRequestExperimenterBuilder;
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
index 1fe13f456760ba0838f332ff86f03c7dd623b64d..66825f9bb24153eb53f61de4c458cf1915700ade 100644 (file)
@@ -29,7 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.Upd
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.multipart.reply.multipart.reply.body.MultipartReplyTableFeatures;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.multipart.request.multipart.request.body.MultipartRequestTableFeaturesBuilder;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint64;
index 5bdb5f598f9855338b643b43ca9be77664d74bde..05a36fc01b0ece95d86bfc98c2dcb999c115a887 100644 (file)
@@ -9,7 +9,8 @@ package org.opendaylight.openflowplugin.impl.services.util;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorTag;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
@@ -25,7 +26,7 @@ public final class RequestContextUtil {
                                                                                 final RequestContext<T> requestContext,
                                                                                 final String errorMessage) {
         RpcResultBuilder<T> rpcResultBuilder = RpcResultBuilder.<T>failed().withRpcError(RpcResultBuilder
-                .newError(RpcError.ErrorType.APPLICATION, "", errorMessage));
+                .newError(ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED, errorMessage));
         requestContext.setResult(rpcResultBuilder.build());
         closeRequestContext(requestContext);
         return requestContext.getFuture();
index 70d87626c51dafa0063b3ccafe4be389c72f825d..1e5f1b7dd3da349dcb50bf5991e614aa4e67706b 100644 (file)
@@ -32,13 +32,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.StatisticsManagerControlService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.StatisticsWorkMode;
 import org.opendaylight.yangtools.concepts.ObjectRegistration;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class StatisticsManagerImpl implements StatisticsManager, StatisticsManagerControlService {
+public final class StatisticsManagerImpl implements StatisticsManager, StatisticsManagerControlService {
 
     private static final Logger LOG = LoggerFactory.getLogger(StatisticsManagerImpl.class);
 
@@ -56,10 +56,10 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
                                  final ConvertorExecutor convertorExecutor,
                                  @NonNull final Executor executor) {
         this.config = config;
-        this.converterExecutor = convertorExecutor;
-        this.controlServiceRegistration = requireNonNull(rpcProviderRegistry
-                .registerRpcImplementation(StatisticsManagerControlService.class, this));
         this.executor = executor;
+        converterExecutor = convertorExecutor;
+        controlServiceRegistration = requireNonNull(rpcProviderRegistry)
+                .registerRpcImplementation(StatisticsManagerControlService.class, this);
     }
 
     @Override
@@ -95,8 +95,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
         }
 
         return RpcResultBuilder.<ChangeStatisticsWorkModeOutput>failed()
-                .withError(RpcError.ErrorType.APPLICATION,
-                        "Statistics work mode change is already in progress")
+                .withError(ErrorType.APPLICATION, "Statistics work mode change is already in progress")
                 .buildFuture();
     }
 
index 0314b940676f4eab683b9a88d6afa655dc742c88..12a03ea26998d0351c29e78e656e5eda54fadfb3 100644 (file)
@@ -9,8 +9,9 @@ package org.opendaylight.openflowplugin.impl.statistics.services;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
-import java.util.ArrayList;
+import com.google.common.collect.ImmutableSet;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
@@ -94,38 +95,38 @@ final class GroupFeaturesService
     }
 
     @VisibleForTesting
-    static List<Class<? extends GroupCapability>> extractSupportedCapabilities(final GroupCapabilities capabilities) {
-        List<Class<? extends GroupCapability>> supportedCapabilities = new ArrayList<>();
+    static Set<Class<? extends GroupCapability>> extractSupportedCapabilities(final GroupCapabilities capabilities) {
+        final var builder = ImmutableSet.<Class<? extends GroupCapability>>builder();
         if (capabilities.getOFPGFCCHAINING()) {
-            supportedCapabilities.add(Chaining.class);
+            builder.add(Chaining.class);
         }
         if (capabilities.getOFPGFCCHAININGCHECKS()) {
-            supportedCapabilities.add(ChainingChecks.class);
+            builder.add(ChainingChecks.class);
         }
         if (capabilities.getOFPGFCSELECTLIVENESS()) {
-            supportedCapabilities.add(SelectLiveness.class);
+            builder.add(SelectLiveness.class);
         }
         if (capabilities.getOFPGFCSELECTWEIGHT()) {
-            supportedCapabilities.add(SelectWeight.class);
+            builder.add(SelectWeight.class);
         }
-        return supportedCapabilities;
+        return builder.build();
     }
 
     @VisibleForTesting
-    static List<Class<? extends GroupType>> extractSupportedGroupTypes(final GroupTypes types) {
-        List<Class<? extends GroupType>> supportedGroups = new ArrayList<>();
+    static Set<Class<? extends GroupType>> extractSupportedGroupTypes(final GroupTypes types) {
+        final var builder = ImmutableSet.<Class<? extends GroupType>>builder();
         if (types.getOFPGTALL()) {
-            supportedGroups.add(GroupAll.class);
+            builder.add(GroupAll.class);
         }
         if (types.getOFPGTSELECT()) {
-            supportedGroups.add(GroupSelect.class);
+            builder.add(GroupSelect.class);
         }
         if (types.getOFPGTINDIRECT()) {
-            supportedGroups.add(GroupIndirect.class);
+            builder.add(GroupIndirect.class);
         }
         if (types.getOFPGTFF()) {
-            supportedGroups.add(GroupFf.class);
+            builder.add(GroupFf.class);
         }
-        return supportedGroups;
+        return builder.build();
     }
 }
index 89772e19e7b1114b6d41d985a39665f9eb8676cc..fb01bda3d4e1b24eb6edebf2d6b718b10bcbfca7 100644 (file)
@@ -9,8 +9,9 @@ package org.opendaylight.openflowplugin.impl.statistics.services;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
-import java.util.ArrayList;
+import com.google.common.collect.ImmutableSet;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
@@ -91,22 +92,21 @@ final class MeterFeaturesService
     }
 
     @VisibleForTesting
-    protected static List<Class<? extends MeterBand>> extractSupportedMeterBand(
+    protected static Set<Class<? extends MeterBand>> extractSupportedMeterBand(
             final MultipartReplyMeterFeatures replyBody, final MeterBandTypeBitmap bandTypes) {
-        List<Class<? extends MeterBand>> supportedMeterBand = new ArrayList<>();
+        final var supportedMeterBand = ImmutableSet.<Class<? extends MeterBand>>builder();
         if (bandTypes.getOFPMBTDROP()) {
             supportedMeterBand.add(MeterBandDrop.class);
         }
         if (replyBody.getBandTypes().getOFPMBTDSCPREMARK()) {
             supportedMeterBand.add(MeterBandDscpRemark.class);
         }
-        return supportedMeterBand;
+        return supportedMeterBand.build();
     }
 
     @VisibleForTesting
-    protected static List<Class<? extends MeterCapability>> extractMeterCapabilities(final MeterFlags capabilities) {
-        List<Class<? extends MeterCapability>> supportedCapabilities = new ArrayList<>();
-
+    protected static Set<Class<? extends MeterCapability>> extractMeterCapabilities(final MeterFlags capabilities) {
+        final var supportedCapabilities = ImmutableSet.<Class<? extends MeterCapability>>builder();
         if (capabilities.getOFPMFBURST()) {
             supportedCapabilities.add(MeterBurst.class);
         }
@@ -119,6 +119,6 @@ final class MeterFeaturesService
         if (capabilities.getOFPMFSTATS()) {
             supportedCapabilities.add(MeterStats.class);
         }
-        return supportedCapabilities;
+        return supportedCapabilities.build();
     }
 }
index d8faf06d5f501c650f7977d2aeaeade0ec715a89..5b4ef7879ef0046e20b7bf93f767f3dea570ecfa 100644 (file)
@@ -21,7 +21,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511
 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetQueueStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.OpendaylightDirectStatisticsService;
 import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 
@@ -84,7 +84,7 @@ public class OpendaylightDirectStatisticsServiceImpl implements OpendaylightDire
 
     private static <T extends DataObject> ListenableFuture<RpcResult<T>> missingImplementation(Class service) {
         return RpcResultBuilder.<T>failed().withError(
-                RpcError.ErrorType.APPLICATION,
+                ErrorType.APPLICATION,
                 String.format("No implementation found for direct statistics service %s.", service.getCanonicalName()))
                 .buildFuture();
     }
index f506ddfe8f73af429a36ba133f6af8014a5abb3b..0d9f471e981c76e7f6f77af50820ae9f89e49344 100644 (file)
@@ -35,8 +35,7 @@ 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.flow._case.MultipartRequestFlowBuilder;
 import org.opendaylight.yangtools.yang.common.Uint32;
 
-public class FlowDirectStatisticsService extends AbstractFlowDirectStatisticsService<MultipartReply> {
-
+public final class FlowDirectStatisticsService extends AbstractFlowDirectStatisticsService<MultipartReply> {
     private final FlowStatsResponseConvertorData data;
 
     public FlowDirectStatisticsService(final RequestContextStack requestContextStack,
index 30269830feaeeb080f3b8ab81854aef36107a87d..3b25b34056634db8f6239a8651534f71e0227170 100644 (file)
@@ -32,8 +32,7 @@ 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.group._case.MultipartRequestGroupBuilder;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 
-public class GroupDirectStatisticsService extends AbstractGroupDirectStatisticsService<MultipartReply> {
-
+public final class GroupDirectStatisticsService extends AbstractGroupDirectStatisticsService<MultipartReply> {
     private final VersionConvertorData data;
 
     public GroupDirectStatisticsService(final RequestContextStack requestContextStack,
index 0848ba4b337167f5a5fd0cc9e7b0a07d4180bc27..d4a4e9dd7ceadc4bfab8074e75362067cc119a94 100644 (file)
@@ -134,11 +134,8 @@ public final class DeviceInitializationUtil {
      * @return switch features
      */
     public static SwitchFeatures getSwitchFeatures(final ConnectionContext connectionContext) {
-        return SwitchFeaturesUtil
-                .getInstance()
-                .buildSwitchFeatures(new GetFeaturesOutputBuilder(connectionContext
-                        .getFeatures())
-                        .build());
+        return SwitchFeaturesUtil.buildSwitchFeatures(new GetFeaturesOutputBuilder(connectionContext.getFeatures())
+            .build());
     }
 
     private static @Nullable InetSocketAddress getRemoteAddress(final ConnectionContext connectionContext,
index 870437bb23109295d35b5b2580f29be7c4687679..07fdccf01bab7e7e947e00e99bd6946037e0246b 100644 (file)
@@ -7,8 +7,10 @@
  */
 package org.opendaylight.openflowplugin.impl.device;
 
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
 import org.junit.After;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Capabilities;
@@ -22,10 +24,7 @@ import org.opendaylight.yangtools.yang.common.Uint8;
  * @author jsebin
  */
 public class SwitchFeaturesUtilTest {
-
     private GetFeaturesOutputBuilder featuresOutputBuilder;
-    private SwitchFeaturesUtil swUtil;
-
 
     /**
      * Initialization of
@@ -36,13 +35,11 @@ public class SwitchFeaturesUtilTest {
     @Before
     public void setUp() {
         featuresOutputBuilder = new GetFeaturesOutputBuilder();
-        swUtil = SwitchFeaturesUtil.getInstance();
     }
 
     @After
     public void tearDown() {
         featuresOutputBuilder = null;
-        swUtil = null;
     }
 
     /**
@@ -56,7 +53,7 @@ public class SwitchFeaturesUtilTest {
         CapabilitiesV10 capabilities = new CapabilitiesV10(true, false, true, false, true, false, true, false);
         featuresOutputBuilder.setCapabilitiesV10(capabilities).setVersion(Uint8.ONE);
 
-        Assert.assertNotNull(swUtil.buildSwitchFeatures(featuresOutputBuilder.build()));
+        assertNotNull(SwitchFeaturesUtil.buildSwitchFeatures(featuresOutputBuilder.build()));
     }
 
     /**
@@ -70,7 +67,7 @@ public class SwitchFeaturesUtilTest {
         Capabilities capabilities = new Capabilities(true, false, true, false, true, false, true);
         featuresOutputBuilder.setCapabilities(capabilities).setCapabilitiesV10(null).setVersion(Uint8.valueOf(4));
 
-        Assert.assertNotNull(swUtil.buildSwitchFeatures(featuresOutputBuilder.build()));
+        assertNotNull(SwitchFeaturesUtil.buildSwitchFeatures(featuresOutputBuilder.build()));
     }
 
     /**
@@ -84,7 +81,7 @@ public class SwitchFeaturesUtilTest {
         CapabilitiesV10 capabilities = new CapabilitiesV10(true, false, true, false, true, false, true, null);
         featuresOutputBuilder.setCapabilitiesV10(capabilities).setCapabilities(null).setVersion(Uint8.ONE);
 
-        Assert.assertNull(swUtil.buildSwitchFeatures(featuresOutputBuilder.build()));
+        assertNull(SwitchFeaturesUtil.buildSwitchFeatures(featuresOutputBuilder.build()));
     }
 
     /**
@@ -98,7 +95,7 @@ public class SwitchFeaturesUtilTest {
         CapabilitiesV10 capabilities = new CapabilitiesV10(true, false, true, false, true, false, true, false);
         featuresOutputBuilder.setCapabilitiesV10(capabilities).setCapabilities(null).setVersion(Uint8.valueOf(4));
 
-        Assert.assertNull(swUtil.buildSwitchFeatures(featuresOutputBuilder.build()));
+        assertNull(SwitchFeaturesUtil.buildSwitchFeatures(featuresOutputBuilder.build()));
     }
 
     /**
@@ -111,6 +108,6 @@ public class SwitchFeaturesUtilTest {
         CapabilitiesV10 capabilities = new CapabilitiesV10(true, false, true, false, true, false, true, false);
         featuresOutputBuilder.setCapabilitiesV10(capabilities).setCapabilities(null).setVersion(Uint8.ZERO);
 
-        Assert.assertNull(swUtil.buildSwitchFeatures(featuresOutputBuilder.build()));
+        assertNull(SwitchFeaturesUtil.buildSwitchFeatures(featuresOutputBuilder.build()));
     }
 }
index 5610f5e2a02468c6df8e4065af6dac5c35743e43..d6d77acab551f00a86a3fececfdff527b268a983 100644 (file)
@@ -156,7 +156,7 @@ public class TransactionChainManagerTest {
     public void testOnTransactionChainSuccessful() {
         txChainManager.onTransactionChainSuccessful(transactionChain);
         // NOOP
-        Mockito.verifyZeroInteractions(transactionChain);
+        Mockito.verifyNoInteractions(transactionChain);
     }
 
     @Test
index 4d47dd6c4b812cf9f03e6a19c5cdd47d65b7fa8c..22a929b83565438ee6547cf96afc039dee85ce0b 100644 (file)
@@ -15,6 +15,7 @@ import io.netty.buffer.ByteBuf;
 import io.netty.buffer.UnpooledByteBufAllocator;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.openflowjava.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.multipart.reply.multipart.reply.body.MultipartReplyGroupFeatures;
@@ -75,14 +76,8 @@ public class MultipartReplyGroupFeaturesDeserializerTest extends AbstractMultipa
         assertTrue(reply.getActions().containsAll(ACTIONS_LIST));
         assertTrue(reply.getMaxGroups().containsAll(MAX_GROUPS_LIST));
 
-        assertEquals(GROUP_TYPES_SUPPORTED.size(), reply.getGroupTypesSupported().size());
-        assertEquals(GroupAll.class, reply.getGroupTypesSupported().get(0));
-        assertEquals(GroupSelect.class, reply.getGroupTypesSupported().get(1));
-        assertEquals(GroupIndirect.class, reply.getGroupTypesSupported().get(2));
-
-        assertEquals(GROUP_CAPABILITIES_SUPPORTED.size(), reply.getGroupCapabilitiesSupported().size());
-        assertEquals(Chaining.class, reply.getGroupCapabilitiesSupported().get(0));
-        assertEquals(ChainingChecks.class, reply.getGroupCapabilitiesSupported().get(1));
+        assertEquals(Set.of(GroupAll.class, GroupSelect.class, GroupIndirect.class), reply.getGroupTypesSupported());
+        assertEquals(Set.of(Chaining.class, ChainingChecks.class), reply.getGroupCapabilitiesSupported());
 
         assertEquals(0, buffer.readableBytes());
     }
index b033ceecef6aa765d90e9dd843b3f6f7f7cb4a28..761935b2ff3be8615a863f6f262bb9ef3038c2ae 100644 (file)
@@ -67,6 +67,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
+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;
@@ -172,7 +173,7 @@ public class MultipartRequestOnTheFlyCallbackTest {
         multipartRequestOnTheFlyCallback.onSuccess(mockedHelloMessage);
 
         final RpcResult<List<MultipartReply>> expectedRpcResult =
-                RpcResultBuilder.<List<MultipartReply>>failed().withError(RpcError.ErrorType.APPLICATION,
+                RpcResultBuilder.<List<MultipartReply>>failed().withError(ErrorType.APPLICATION,
                         String.format("Unexpected response type received: %s.", mockedHelloMessage.getClass())).build();
         final RpcResult<List<MultipartReply>> actualResult = dummyRequestContext.getFuture().get();
         assertNotNull(actualResult.getErrors());
@@ -182,7 +183,7 @@ public class MultipartRequestOnTheFlyCallbackTest {
         assertEquals(actualError.getMessage(),
                      String.format("Unexpected response type received: %s.",
                      mockedHelloMessage.getClass()));
-        assertEquals(actualError.getErrorType(),RpcError.ErrorType.APPLICATION);
+        assertEquals(actualError.getErrorType(), ErrorType.APPLICATION);
         assertEquals(expectedRpcResult.getResult(), actualResult.getResult());
         assertEquals(expectedRpcResult.isSuccessful(), actualResult.isSuccessful());
 
index 0d98ca8e6e4f1fa64bf11d09c5fb535ce5ca4041..2c9d5e802d4a5868f9b76b12c4b4fd480fc6188c 100644 (file)
@@ -43,7 +43,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint16;
@@ -129,7 +129,7 @@ public class FlatBatchFlowAdaptersTest {
     @Test
     public void testCreateBatchFlowChainingFunction_failures() {
         final RpcResult<BatchFlowOutputListGrouping> input = RpcResultBuilder.<BatchFlowOutputListGrouping>failed()
-                .withError(RpcError.ErrorType.APPLICATION, "ut-flowError")
+                .withError(ErrorType.APPLICATION, "ut-flowError")
                 .withResult(new AddFlowsBatchOutputBuilder()
                         .setBatchFailedFlowsOutput(BindingMap.ordered(
                                 createBatchFailedFlowsOutput(Uint16.ZERO, "f1"),
index ec7e2f0014e30333e5c41a3da86443f1fd8f11d0..4a68ba3f4fb3a3e221446c6571e9b7f0702aae26 100644 (file)
@@ -41,7 +41,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint16;
@@ -141,7 +141,7 @@ public class FlatBatchGroupAdaptersTest {
     @Test
     public void testCreateBatchGroupChainingFunction_failures() {
         final RpcResult<BatchGroupOutputListGrouping> input = RpcResultBuilder.<BatchGroupOutputListGrouping>failed()
-                .withError(RpcError.ErrorType.APPLICATION, "ut-groupError")
+                .withError(ErrorType.APPLICATION, "ut-groupError")
                 .withResult(new AddGroupsBatchOutputBuilder()
                         .setBatchFailedGroupsOutput(BindingMap.ordered(
                                 createBatchFailedGroupsOutput(Uint16.ZERO, Uint32.ONE),
index ee5790e716db0811375e712f25bc10415b5f9245..d20702aecf6c6f7caa63235122e6d02859e02ad5 100644 (file)
@@ -41,7 +41,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.ba
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.remove.meters.batch.input.BatchRemoveMeters;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint16;
@@ -142,7 +142,7 @@ public class FlatBatchMeterAdaptersTest {
     @Test
     public void testCreateBatchMeterChainingFunction_failures() {
         final RpcResult<BatchMeterOutputListGrouping> input = RpcResultBuilder.<BatchMeterOutputListGrouping>failed()
-                .withError(RpcError.ErrorType.APPLICATION, "ut-meterError")
+                .withError(ErrorType.APPLICATION, "ut-meterError")
                 .withResult(new AddMetersBatchOutputBuilder()
                         .setBatchFailedMetersOutput(BindingMap.ordered(
                                 createBatchFailedMetersOutput(Uint16.ZERO, Uint32.ONE),
index 31f41faf81168ce9e69e6deb03f5010b9347a3f7..64bf758e652c1a2d3c69f89eb4a1c4c2cbb9c3a4 100644 (file)
@@ -92,7 +92,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.ba
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.batch.meter.input.update.grouping.UpdatedBatchedMeterBuilder;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint16;
@@ -295,7 +295,7 @@ public class SalFlatBatchServiceImplTest {
                                                 .setFlowId(new FlowId("123"))
                                                 .build()))
                                 .build())
-                        .withError(RpcError.ErrorType.APPLICATION, "ut-firstFlowAddError")
+                        .withError(ErrorType.APPLICATION, "ut-firstFlowAddError")
                         .buildFuture());
         Mockito.when(salFlowsBatchService.updateFlowsBatch(ArgumentMatchers.any()))
                 .thenReturn(RpcResultBuilder.success(new UpdateFlowsBatchOutputBuilder().build()).buildFuture());
@@ -467,7 +467,7 @@ public class SalFlatBatchServiceImplTest {
                 FlatBatchUtil.createEmptyRpcBatchResultFuture(true);
         final ListenableFuture<RpcResult<ProcessFlatBatchOutput>> failedChainOutput =
                 RpcResultBuilder.<ProcessFlatBatchOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "ut-chainError")
+                        .withError(ErrorType.APPLICATION, "ut-chainError")
                         .withResult(createFlatBatchOutput(createFlowBatchFailure(Uint16.ZERO, "f1"),
                                     createFlowBatchFailure(Uint16.ONE, "f2")))
                         .buildFuture();
@@ -576,7 +576,7 @@ public class SalFlatBatchServiceImplTest {
                                                 .setFlowId(new FlowId("f2"))
                                                 .build()))
                                 .build())
-                        .withError(RpcError.ErrorType.APPLICATION, "ut-addFlowBatchError")
+                        .withError(ErrorType.APPLICATION, "ut-addFlowBatchError")
                         .buildFuture());
 
         final Future<RpcResult<ProcessFlatBatchOutput>> rpcResultFuture =
index 09f6c43b3bb7255537a247cc14a790ea2a6a8101..5825acd5a007d9803b9866cade4a94779ef297da 100644 (file)
@@ -62,7 +62,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint16;
@@ -151,7 +151,7 @@ public class SalFlowsBatchServiceImplTest {
     public void testRemoveFlowsBatch_failed() throws Exception {
         Mockito.when(salFlowService.removeFlow(ArgumentMatchers.any()))
                 .thenReturn(RpcResultBuilder.<RemoveFlowOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "flow-remove-fail-1")
+                        .withError(ErrorType.APPLICATION, "flow-remove-fail-1")
                         .buildFuture());
 
         final BatchRemoveFlows batchFlow1 = createEmptyBatchRemoveFlow(FLOW_ID_VALUE_1, 42);
@@ -246,7 +246,7 @@ public class SalFlowsBatchServiceImplTest {
     public void testAddFlowsBatch_failed() throws Exception {
         Mockito.when(salFlowService.addFlow(ArgumentMatchers.any()))
                 .thenReturn(RpcResultBuilder
-                        .<AddFlowOutput>failed().withError(RpcError.ErrorType.APPLICATION, "ut-groupAddError")
+                        .<AddFlowOutput>failed().withError(ErrorType.APPLICATION, "ut-groupAddError")
                         .buildFuture());
 
         final AddFlowsBatchInput input = new AddFlowsBatchInputBuilder()
@@ -314,7 +314,7 @@ public class SalFlowsBatchServiceImplTest {
     public void testUpdateFlowsBatch_failure() throws Exception {
         Mockito.when(salFlowService.updateFlow(ArgumentMatchers.any()))
                 .thenReturn(RpcResultBuilder.<UpdateFlowOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "ut-flowUpdateError")
+                        .withError(ErrorType.APPLICATION, "ut-flowUpdateError")
                         .buildFuture());
 
         final UpdateFlowsBatchInput input = new UpdateFlowsBatchInputBuilder()
index 07787f78bbabb776fe1d8dea41023beb0f064a7a..a1bcdf19c9a596ecc2630aa5458093637bd65873 100644 (file)
@@ -62,7 +62,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint32;
@@ -139,7 +139,7 @@ public class SalGroupsBatchServiceImplTest {
     public void testUpdateGroupsBatch_failure() throws Exception {
         Mockito.when(salGroupService.updateGroup(Mockito.any()))
                 .thenReturn(RpcResultBuilder.<UpdateGroupOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "ur-groupUpdateError")
+                        .withError(ErrorType.APPLICATION, "ur-groupUpdateError")
                         .buildFuture());
 
         final UpdateGroupsBatchInput input = new UpdateGroupsBatchInputBuilder()
@@ -207,7 +207,7 @@ public class SalGroupsBatchServiceImplTest {
     public void testAddGroupsBatch_failure() throws Exception {
         Mockito.when(salGroupService.addGroup(Mockito.any()))
                 .thenReturn(RpcResultBuilder.<AddGroupOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "ut-groupAddError")
+                        .withError(ErrorType.APPLICATION, "ut-groupAddError")
                         .buildFuture());
 
         final AddGroupsBatchInput input = new AddGroupsBatchInputBuilder()
@@ -273,7 +273,7 @@ public class SalGroupsBatchServiceImplTest {
     public void testRemoveGroupsBatch_failure() throws Exception {
         Mockito.when(salGroupService.removeGroup(Mockito.any()))
                 .thenReturn(RpcResultBuilder.<RemoveGroupOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "ut-groupRemoveError")
+                        .withError(ErrorType.APPLICATION, "ut-groupRemoveError")
                         .buildFuture());
 
         final RemoveGroupsBatchInput input = new RemoveGroupsBatchInputBuilder()
index 216f381a39ec124aac9265afc853a883a218d46e..1789fcc355ab98d61fba7632b568832cd88b65b2 100644 (file)
@@ -64,7 +64,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.up
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.update.meters.batch.input.BatchUpdateMetersBuilder;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint32;
@@ -140,7 +140,7 @@ public class SalMetersBatchServiceImplTest {
     public void testUpdateMetersBatch_failure() throws Exception {
         Mockito.when(salMeterService.updateMeter(Mockito.any()))
                 .thenReturn(RpcResultBuilder.<UpdateMeterOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "ur-groupUpdateError")
+                        .withError(ErrorType.APPLICATION, "ur-groupUpdateError")
                         .buildFuture());
 
         final UpdateMetersBatchInput input = new UpdateMetersBatchInputBuilder()
@@ -208,7 +208,7 @@ public class SalMetersBatchServiceImplTest {
     public void testAddMetersBatch_failure() throws Exception {
         Mockito.when(salMeterService.addMeter(Mockito.any()))
                 .thenReturn(RpcResultBuilder.<AddMeterOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "ut-groupAddError")
+                        .withError(ErrorType.APPLICATION, "ut-groupAddError")
                         .buildFuture());
 
         final AddMetersBatchInput input = new AddMetersBatchInputBuilder()
@@ -274,7 +274,7 @@ public class SalMetersBatchServiceImplTest {
     public void testRemoveMetersBatch_failure() throws Exception {
         Mockito.when(salMeterService.removeMeter(Mockito.any()))
                 .thenReturn(RpcResultBuilder.<RemoveMeterOutput>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "ut-groupRemoveError")
+                        .withError(ErrorType.APPLICATION, "ut-groupRemoveError")
                         .buildFuture());
 
         final RemoveMetersBatchInput input = new RemoveMetersBatchInputBuilder()
index 299c8ef62b86bc63e367980a4669b593c830eb0a..96a73c6d4b06d3bb5502233749f1868489edb5c6 100644 (file)
@@ -62,7 +62,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev16032
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.output.BatchFailureKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint16;
@@ -380,14 +380,14 @@ public class FlatBatchUtilTest {
                 = new ProcessFlatBatchOutputBuilder().setBatchFailure(BindingMap.of(batchFailure_1)).build();
 
         final RpcResult<ProcessFlatBatchOutput> rpcResultFailed = RpcResultBuilder.<ProcessFlatBatchOutput>failed()
-                .withError(RpcError.ErrorType.APPLICATION, "ut-rpcError")
+                .withError(ErrorType.APPLICATION, "ut-rpcError")
                 .withResult(output).build();
 
         final RpcResult<ProcessFlatBatchOutput> rpcResultFailed_1 = RpcResultBuilder.<ProcessFlatBatchOutput>failed()
-                .withError(RpcError.ErrorType.APPLICATION, "ut-rpcError")
+                .withError(ErrorType.APPLICATION, "ut-rpcError")
                 .withResult(output_1).build();
         final RpcResult<ProcessFlatBatchOutput> rpcResultSuccess = RpcResultBuilder.<ProcessFlatBatchOutput>success()
-                .withResult(new ProcessFlatBatchOutputBuilder().setBatchFailure(Map.of())).build();
+                .withResult(new ProcessFlatBatchOutputBuilder().setBatchFailure(Map.of()).build()).build();
 
         final RpcResult<ProcessFlatBatchOutput> rpcResult1
                 = FlatBatchUtil.mergeRpcResults().apply(Lists.newArrayList(rpcResultFailed, rpcResultSuccess));
index abc4aab24c4ac8dff587be06a465bcfcf268e714..384d9664a4bea8314d389d196538e6ba48388ed6 100644 (file)
@@ -34,7 +34,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint16;
@@ -68,7 +68,7 @@ public class FlowUtilTest {
         final RpcResult<List<BatchFailedFlowsOutput>> summary = function.apply(Lists.newArrayList(
                 RpcResultBuilder.success("a").build(),
                 RpcResultBuilder.<String>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "action-failed reason")
+                        .withError(ErrorType.APPLICATION, "action-failed reason")
                         .build()));
 
         Assert.assertFalse(summary.isSuccessful());
@@ -137,7 +137,7 @@ public class FlowUtilTest {
 
     private static RpcResult<List<BatchFailedFlowsOutput>> createBatchOutcomeWithError() {
         return RpcResultBuilder.<List<BatchFailedFlowsOutput>>failed()
-                .withError(RpcError.ErrorType.APPLICATION, "ut-flowAddFail")
+                .withError(ErrorType.APPLICATION, "ut-flowAddFail")
                 .withResult(Collections.singletonList(new BatchFailedFlowsOutputBuilder()
                         .setFlowId(DUMMY_FLOW_ID)
                         .setBatchOrder(Uint16.ZERO)
@@ -225,7 +225,7 @@ public class FlowUtilTest {
 
     private static RpcResult<SendBarrierOutput> createBarrierFailureOutcome() {
         return RpcResultBuilder.<SendBarrierOutput>failed()
-                .withError(RpcError.ErrorType.APPLICATION, "ut-barrier-error")
+                .withError(ErrorType.APPLICATION, "ut-barrier-error")
                 .build();
     }
 
index ec1d6d7deabb10a8de19c3e12b73523de162ff41..e242331c9fe310c9bd67a9c2b6efccb754b2f5f2 100644 (file)
@@ -33,7 +33,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ActionType;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint16;
@@ -71,7 +71,7 @@ public class GroupUtilTest {
         final RpcResult<List<BatchFailedGroupsOutput>> summary = function.apply(Lists.newArrayList(
                 RpcResultBuilder.success("a").build(),
                 RpcResultBuilder.<String>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "action-failed reason")
+                        .withError(ErrorType.APPLICATION, "action-failed reason")
                         .build()));
 
         Assert.assertFalse(summary.isSuccessful());
@@ -136,8 +136,8 @@ public class GroupUtilTest {
 
     private static RpcResult<List<BatchFailedGroupsOutput>> createBatchOutcomeWithError() {
         return RpcResultBuilder.<List<BatchFailedGroupsOutput>>failed()
-                .withError(RpcError.ErrorType.APPLICATION, "ut-flowAddFail")
-                .withResult(Collections.singletonList(new BatchFailedGroupsOutputBuilder()
+                .withError(ErrorType.APPLICATION, "ut-flowAddFail")
+                .withResult(List.of(new BatchFailedGroupsOutputBuilder()
                         .setBatchOrder(Uint16.ZERO)
                         .setGroupId(DUMMY_GROUP_ID)
                         .build()))
@@ -230,7 +230,7 @@ public class GroupUtilTest {
 
     private static RpcResult<SendBarrierOutput> createBarrierFailureOutcome() {
         return RpcResultBuilder.<SendBarrierOutput>failed()
-                .withError(RpcError.ErrorType.APPLICATION, "ut-barrier-error")
+                .withError(ErrorType.APPLICATION, "ut-barrier-error")
                 .build();
     }
 
index 8adbad1e0c0e5eba4a7890571c739f7ba3f243f4..2008329b5fe7628899b7f76398f15b84d7f2648c 100644 (file)
@@ -32,7 +32,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.ba
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meters.service.rev160316.batch.meter.output.list.grouping.BatchFailedMetersOutputKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.common.Uint16;
@@ -69,7 +69,7 @@ public class MeterUtilTest {
         final RpcResult<List<BatchFailedMetersOutput>> output = function.apply(Lists.newArrayList(
                 RpcResultBuilder.success("a").build(),
                 RpcResultBuilder.<String>failed()
-                        .withError(RpcError.ErrorType.APPLICATION, "ut-meter-error")
+                        .withError(ErrorType.APPLICATION, "ut-meter-error")
                         .build()));
 
         Assert.assertFalse(output.isSuccessful());
@@ -136,8 +136,8 @@ public class MeterUtilTest {
 
     private static RpcResult<List<BatchFailedMetersOutput>> createBatchOutcomeWithError() {
         return RpcResultBuilder.<List<BatchFailedMetersOutput>>failed()
-                .withError(RpcError.ErrorType.APPLICATION, "ut-flowAddFail")
-                .withResult(Collections.singletonList(new BatchFailedMetersOutputBuilder()
+                .withError(ErrorType.APPLICATION, "ut-flowAddFail")
+                .withResult(List.of(new BatchFailedMetersOutputBuilder()
                         .setBatchOrder(Uint16.ZERO)
                         .setMeterId(DUMMY_METER_ID)
                         .build()))
@@ -224,7 +224,7 @@ public class MeterUtilTest {
 
     private static RpcResult<SendBarrierOutput> createBarrierFailureOutcome() {
         return RpcResultBuilder.<SendBarrierOutput>failed()
-                .withError(RpcError.ErrorType.APPLICATION, "ut-barrier-error")
+                .withError(ErrorType.APPLICATION, "ut-barrier-error")
                 .build();
     }
 
index 5ab27a60d484c9e551a94f2b20a81312451d17eb..397f86149c6537564d716d9414b62ee89331381a 100644 (file)
@@ -13,7 +13,6 @@ import com.google.common.collect.Ordering;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor;
@@ -242,7 +241,7 @@ public class TableFeaturesConvertor extends Convertor<
             final org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features
                 .TableProperties tableProperties) {
         if (tableProperties == null) {
-            return Collections.emptyList();
+            return List.of();
         }
 
         List<TableFeatureProperties> ofTablePropertiesList = new ArrayList<>();
@@ -314,7 +313,7 @@ public class TableFeaturesConvertor extends Convertor<
         setSetFieldTableFeatureProperty(
                 propBuilder,
                 TableFeaturesPropType.OFPTFPTAPPLYSETFIELDMISS,
-                setFieldMatch == null ? Collections.emptyMap() : setFieldMatch);
+                setFieldMatch == null ? Map.of() : setFieldMatch);
     }
 
     private static void setTableFeatureProperty(final ApplySetfield propType,
@@ -330,7 +329,7 @@ public class TableFeaturesConvertor extends Convertor<
         setSetFieldTableFeatureProperty(
                 propBuilder,
                 TableFeaturesPropType.OFPTFPTAPPLYSETFIELD,
-                setFieldMatch == null ? Collections.emptyMap() : setFieldMatch);
+                setFieldMatch == null ? Map.of() : setFieldMatch);
     }
 
     private static void setTableFeatureProperty(final WriteSetfieldMiss propType,
@@ -346,7 +345,7 @@ public class TableFeaturesConvertor extends Convertor<
         setSetFieldTableFeatureProperty(
                 propBuilder,
                 TableFeaturesPropType.OFPTFPTWRITESETFIELDMISS,
-                setFieldMatch == null ? Collections.emptyMap() : setFieldMatch);
+                setFieldMatch == null ? Map.of() : setFieldMatch);
     }
 
     private static void setTableFeatureProperty(final WriteSetfield propType,
@@ -362,7 +361,7 @@ public class TableFeaturesConvertor extends Convertor<
         setSetFieldTableFeatureProperty(
                 propBuilder,
                 TableFeaturesPropType.OFPTFPTWRITESETFIELD,
-                setFieldMatch == null ? Collections.emptyMap() : setFieldMatch);
+                setFieldMatch == null ? Map.of() : setFieldMatch);
     }
 
     private static void setTableFeatureProperty(final Wildcards propType,
@@ -377,7 +376,7 @@ public class TableFeaturesConvertor extends Convertor<
         setSetFieldTableFeatureProperty(
                 propBuilder,
                 TableFeaturesPropType.OFPTFPTWILDCARDS,
-                setFieldMatch == null ? Collections.emptyMap() : setFieldMatch);
+                setFieldMatch == null ? Map.of() : setFieldMatch);
     }
 
     private static void setTableFeatureProperty(final Match propType, final TableFeaturePropertiesBuilder propBuilder) {
@@ -391,7 +390,7 @@ public class TableFeaturesConvertor extends Convertor<
         setSetFieldTableFeatureProperty(
                 propBuilder,
                 TableFeaturesPropType.OFPTFPTMATCH,
-                setFieldMatch == null ? Collections.emptyMap() : setFieldMatch);
+                setFieldMatch == null ? Map.of() : setFieldMatch);
     }
 
     private static void setTableFeatureProperty(final ApplyActionsMiss propType,
@@ -401,7 +400,7 @@ public class TableFeaturesConvertor extends Convertor<
         setActionTableFeatureProperty(
                 propBuilder,
                 TableFeaturesPropType.OFPTFPTAPPLYACTIONSMISS,
-                applyActionsMiss == null ? Collections.emptyMap() : applyActionsMiss.nonnullAction());
+                applyActionsMiss == null ? Map.of() : applyActionsMiss.nonnullAction());
     }
 
     private static void setTableFeatureProperty(final ApplyActions propType,
@@ -411,7 +410,7 @@ public class TableFeaturesConvertor extends Convertor<
         setActionTableFeatureProperty(
                 propBuilder,
                 TableFeaturesPropType.OFPTFPTAPPLYACTIONS,
-                applyActions == null ? Collections.emptyMap() : applyActions.nonnullAction());
+                applyActions == null ? Map.of() : applyActions.nonnullAction());
     }
 
     private static void setTableFeatureProperty(final WriteActionsMiss propType,
@@ -421,7 +420,7 @@ public class TableFeaturesConvertor extends Convertor<
         setActionTableFeatureProperty(
                 propBuilder,
                 TableFeaturesPropType.OFPTFPTWRITEACTIONSMISS,
-                writeActionsMiss == null ? Collections.emptyMap() : writeActionsMiss.nonnullAction());
+                writeActionsMiss == null ? Map.of() : writeActionsMiss.nonnullAction());
     }
 
     private static void setTableFeatureProperty(final WriteActions propType,
@@ -431,7 +430,7 @@ public class TableFeaturesConvertor extends Convertor<
         setActionTableFeatureProperty(
                 propBuilder,
                 TableFeaturesPropType.OFPTFPTWRITEACTIONS,
-                writeActions == null ? Collections.emptyMap() : writeActions.nonnullAction());
+                writeActions == null ? Map.of() : writeActions.nonnullAction());
     }
 
     private static void setTableFeatureProperty(final NextTableMiss propType,
@@ -454,7 +453,7 @@ public class TableFeaturesConvertor extends Convertor<
         org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop
             .type.instructions.miss.InstructionsMiss instructions = propType.getInstructionsMiss();
         setInstructionTableFeatureProperty(propBuilder, TableFeaturesPropType.OFPTFPTINSTRUCTIONSMISS,
-                instructions == null ? Collections.emptyMap() : instructions.nonnullInstruction());
+                instructions == null ? Map.of() : instructions.nonnullInstruction());
     }
 
     private static void setTableFeatureProperty(final Instructions propType,
@@ -462,7 +461,7 @@ public class TableFeaturesConvertor extends Convertor<
         org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop
             .type.instructions.Instructions instructions = propType.getInstructions();
         setInstructionTableFeatureProperty(propBuilder, TableFeaturesPropType.OFPTFPTINSTRUCTIONS,
-                instructions == null ? Collections.emptyMap() : instructions.nonnullInstruction());
+                instructions == null ? Map.of() : instructions.nonnullInstruction());
     }
 
     private static void setInstructionTableFeatureProperty(final TableFeaturePropertiesBuilder builder,
@@ -511,9 +510,7 @@ public class TableFeaturesConvertor extends Convertor<
         List<NextTableIds> nextTableIdsList = new ArrayList<>();
 
         for (Uint8 tableId : tableIds) {
-            NextTableIdsBuilder nextTableId = new NextTableIdsBuilder();
-            nextTableId.setTableId(tableId);
-            nextTableIdsList.add(nextTableId.build());
+            nextTableIdsList.add(new NextTableIdsBuilder().setTableId(tableId).build());
         }
 
         builder.setType(type).addAugmentation(new NextTableRelatedTableFeaturePropertyBuilder()
index 1373fd329e671606e89aebb3104e434f0a26fc81..c244768ef9dfe1b0a7ad5a9ac0f5a92284e83be5 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.mdsal</groupId>
         <artifactId>binding-parent</artifactId>
-        <version>8.0.11</version>
+        <version>9.0.1</version>
         <relativePath/>
     </parent>
 
             <dependency>
                 <groupId>org.opendaylight.controller</groupId>
                 <artifactId>controller-artifacts</artifactId>
-                <version>4.0.10</version>
+                <version>5.0.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
             <dependency>
                 <groupId>org.opendaylight.infrautils</groupId>
                 <artifactId>infrautils-artifacts</artifactId>
-                <version>2.0.13</version>
+                <version>3.0.0</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index c5dd140d04e7aad34efbf693a79b8815be22c9e6..bd6af31eaefa4f47c60380fb9a479c5a9eb6c038 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>9.0.13</version>
+        <version>10.0.0</version>
         <relativePath/>
     </parent>
 
index 3007e4b6ab742666e804b1d978c651aad2af9ecc..4c0a73b2e2532a5d5cc3d8e908b0805e2d2448f6 100644 (file)
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
+            <artifactId>org.osgi.framework</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
         </dependency>
     </dependencies>