X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=bgp%2Fopenconfig-state%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fprotocol%2Fbgp%2Fstate%2FPeerGroupUtil.java;h=ed6f322d70a0b8073a56c2e27b0ef9c0b7929e40;hb=ea0c792364c98451ded28448d30a2905569e788e;hp=cd236fba78f44c3da5249a5b8ff9d7b34b663586;hpb=54a2b90ebcae908b1848d023f693f27999ff30b7;p=bgpcep.git diff --git a/bgp/openconfig-state/src/main/java/org/opendaylight/protocol/bgp/state/PeerGroupUtil.java b/bgp/openconfig-state/src/main/java/org/opendaylight/protocol/bgp/state/PeerGroupUtil.java index cd236fba78..ed6f322d70 100644 --- a/bgp/openconfig-state/src/main/java/org/opendaylight/protocol/bgp/state/PeerGroupUtil.java +++ b/bgp/openconfig-state/src/main/java/org/opendaylight/protocol/bgp/state/PeerGroupUtil.java @@ -5,28 +5,30 @@ * 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.protocol.bgp.state; +import com.google.common.collect.ImmutableMap; import java.util.List; import java.util.Map; +import java.util.function.Function; import java.util.stream.Collectors; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.protocol.bgp.rib.spi.state.BGPPeerState; import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.peer.group.PeerGroup; import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.peer.group.PeerGroupBuilder; import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.PeerGroups; import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.bgp.PeerGroupsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180321.PeerGroupStateAugmentation; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180321.PeerGroupStateAugmentationBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.PeerGroupStateAugmentation; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.PeerGroupStateAugmentationBuilder; +import org.opendaylight.yangtools.yang.common.Uint32; /** * Util for create OpenConfig Peer group with corresponding openConfig state. */ public final class PeerGroupUtil { private PeerGroupUtil() { - throw new UnsupportedOperationException(); + // Hidden on purpose } /** @@ -35,8 +37,8 @@ public final class PeerGroupUtil { * @param bgpStateConsumer providing BGPPeerGroupState * @return PeerGroups containing Peer group stats */ - @Nullable - public static PeerGroups buildPeerGroups(@Nonnull final List bgpStateConsumer) { + + public static @Nullable PeerGroups buildPeerGroups(final @NonNull List bgpStateConsumer) { final Map> peerGroups = bgpStateConsumer.stream() .filter(state -> state.getGroupId() != null) .collect(Collectors.groupingBy(BGPPeerState::getGroupId)); @@ -44,10 +46,11 @@ public final class PeerGroupUtil { return null; } - final List peerGroupsList = peerGroups.entrySet().stream() - .map(entry -> buildPeerGroupState(entry.getKey(), entry.getValue())) - .collect(Collectors.toList()); - return new PeerGroupsBuilder().setPeerGroup(peerGroupsList).build(); + return new PeerGroupsBuilder() + .setPeerGroup(peerGroups.entrySet().stream() + .map(entry -> buildPeerGroupState(entry.getKey(), entry.getValue())) + .collect(ImmutableMap.toImmutableMap(PeerGroup::key, Function.identity()))) + .build(); } /** @@ -57,16 +60,16 @@ public final class PeerGroupUtil { * @param groups providing state of the group * @return PeerGroups containing Peer group stats */ - @Nonnull - public static PeerGroup buildPeerGroupState(@Nonnull final String groupId, @Nonnull List groups) { + public static @NonNull PeerGroup buildPeerGroupState(final @NonNull String groupId, + final @NonNull List groups) { final PeerGroupStateAugmentation groupState = new PeerGroupStateAugmentationBuilder() - .setTotalPrefixes(groups.stream().mapToLong(BGPPeerState::getTotalPrefixes).sum()) - .setTotalPaths(groups.stream().mapToLong(BGPPeerState::getTotalPathsCount).sum()) + .setTotalPrefixes(Uint32.saturatedOf(groups.stream().mapToLong(BGPPeerState::getTotalPrefixes).sum())) + .setTotalPaths(Uint32.saturatedOf(groups.stream().mapToLong(BGPPeerState::getTotalPathsCount).sum())) .build(); return new PeerGroupBuilder() .setPeerGroupName(groupId) .setState(new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group - .StateBuilder().addAugmentation(PeerGroupStateAugmentation.class, groupState).build()).build(); + .StateBuilder().addAugmentation(groupState).build()).build(); } }