2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.groupbasedpolicy.renderer;
11 import java.util.List;
13 import javax.annotation.Nonnull;
14 import javax.annotation.Nullable;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.RendererName;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.Renderer;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.nodes.RendererNode;
19 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
21 import com.google.common.collect.ImmutableMap;
22 import com.google.common.collect.ImmutableMultimap;
23 import com.google.common.collect.ImmutableMultimap.Builder;
24 import com.google.common.collect.Maps;
26 public class RendererUtils {
28 public static @Nonnull ImmutableMultimap<InstanceIdentifier<?>, RendererName> resolveRenderersByNodes(
29 @Nullable List<Renderer> renderers) {
30 if (renderers == null) {
31 return ImmutableMultimap.of();
33 Builder<InstanceIdentifier<?>, RendererName> renderersByNodeBuilder = ImmutableMultimap.builder();
34 for (Renderer renderer : renderers) {
35 List<RendererNode> rendererNodes = renderer.getRendererNodes().getRendererNode();
36 if (rendererNodes == null) {
39 for (RendererNode rendererNode : rendererNodes) {
40 if (rendererNode.getNodePath() != null) {
41 renderersByNodeBuilder.put(rendererNode.getNodePath(), renderer.getName());
45 return renderersByNodeBuilder.build();
48 public static @Nonnull ImmutableMap<RendererName, Renderer> resolveRendererByName(
49 @Nullable List<Renderer> renderers) {
50 if (renderers == null) {
51 return ImmutableMap.of();
53 return Maps.uniqueIndex(renderers, Renderer::getName);