1 package org.opendaylight.controller.md.sal.dom.store.impl;
3 import java.util.Collections;
7 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
8 import org.opendaylight.controller.md.sal.dom.store.impl.tree.StoreMetadataNode;
9 import org.opendaylight.yangtools.concepts.Identifiable;
10 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
11 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument;
12 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
14 import com.google.common.base.Function;
15 import com.google.common.collect.FluentIterable;
16 import com.google.common.collect.ImmutableList;
17 import com.google.common.collect.ImmutableMap;
18 import com.google.common.primitives.UnsignedLong;
20 public final class StoreUtils {
22 private final static Function<Identifiable<Object>, Object> EXTRACT_IDENTIFIER = new Function<Identifiable<Object>, Object>() {
25 public Object apply(final Identifiable<Object> input) {
26 return input.getIdentifier();
30 public static final UnsignedLong increase(final UnsignedLong original) {
31 return original.plus(UnsignedLong.ONE);
34 public static final InstanceIdentifier append(final InstanceIdentifier parent, final PathArgument arg) {
36 return new InstanceIdentifier(ImmutableList.<PathArgument> builder().addAll(parent.getPath()).add(arg).build());
39 public static AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> initialChangeEvent(
40 final InstanceIdentifier path, final StoreMetadataNode data) {
41 return new InitialDataChangeEvent(path, data.getData());
44 private static final class InitialDataChangeEvent implements
45 AsyncDataChangeEvent<InstanceIdentifier, NormalizedNode<?, ?>> {
47 private final ImmutableMap<InstanceIdentifier, NormalizedNode<?, ?>> payload;
48 private final NormalizedNode<?, ?> data;
50 public InitialDataChangeEvent(final InstanceIdentifier path, final NormalizedNode<?, ?> data) {
51 payload = ImmutableMap.<InstanceIdentifier, NormalizedNode<?, ?>> of(path, data);
56 public Map<InstanceIdentifier, NormalizedNode<?, ?>> getCreatedData() {
61 public Map<InstanceIdentifier, ? extends NormalizedNode<?, ?>> getOriginalData() {
62 return Collections.emptyMap();
66 public NormalizedNode<?, ?> getOriginalSubtree() {
71 public Set<InstanceIdentifier> getRemovedPaths() {
72 return Collections.emptySet();
76 public Map<InstanceIdentifier, NormalizedNode<?, ?>> getUpdatedData() {
81 public NormalizedNode<?, ?> getUpdatedSubtree() {
87 @SuppressWarnings({ "unchecked", "rawtypes" })
88 public static <V> Function<Identifiable<V>,V> identifierExtractor() {
89 return (Function) EXTRACT_IDENTIFIER;
92 public static <V> Set<V> toIdentifierSet(final Iterable<? extends Identifiable<V>> children) {
93 return FluentIterable.from(children).transform(StoreUtils.<V>identifierExtractor()).toSet();