X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fstore%2Fimpl%2FStoreUtils.java;h=e1da9a738140c073fa26f4cf5d25d84d6d58c63a;hp=02c2a4fa06042e2984745183262a7d053411157a;hb=fe87aace8123cc8988acfc74c0208472359a4f55;hpb=f9a5557ea91bc6c877453583e17adf1606b58290 diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/StoreUtils.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/StoreUtils.java index 02c2a4fa06..e1da9a7381 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/StoreUtils.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/StoreUtils.java @@ -1,11 +1,14 @@ +/* + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ package org.opendaylight.controller.md.sal.dom.store.impl; -import java.util.Collections; -import java.util.Map; import java.util.Set; -import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; -import org.opendaylight.controller.md.sal.dom.store.impl.tree.StoreMetadataNode; import org.opendaylight.yangtools.concepts.Identifiable; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.AugmentationIdentifier; @@ -18,106 +21,67 @@ import com.google.common.base.Function; import com.google.common.base.Strings; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import com.google.common.primitives.UnsignedLong; public final class StoreUtils { + private static final int STRINGTREE_INDENT = 4; private final static Function, Object> EXTRACT_IDENTIFIER = new Function, Object>() { - @Override public Object apply(final Identifiable input) { return input.getIdentifier(); } }; - public static final UnsignedLong increase(final UnsignedLong original) { - return original.plus(UnsignedLong.ONE); - } - - public static final InstanceIdentifier append(final InstanceIdentifier parent, final PathArgument arg) { - - return new InstanceIdentifier(ImmutableList. builder().addAll(parent.getPath()).add(arg).build()); - } - - public static AsyncDataChangeEvent> initialChangeEvent( - final InstanceIdentifier path, final StoreMetadataNode data) { - return new InitialDataChangeEvent(path, data.getData()); + private StoreUtils() { + throw new UnsupportedOperationException("Utility class should not be instantiated"); } + /* + * Suppressing warnings here allows us to fool the compiler enough + * such that we can reuse a single function for all applicable types + * and present it in a type-safe manner to our users. + */ @SuppressWarnings({ "unchecked", "rawtypes" }) public static Function, V> identifierExtractor() { return (Function) EXTRACT_IDENTIFIER; } - private static final class InitialDataChangeEvent implements - AsyncDataChangeEvent> { - - private final ImmutableMap> payload; - private final NormalizedNode data; - - public InitialDataChangeEvent(final InstanceIdentifier path, final NormalizedNode data) { - payload = ImmutableMap.> of(path, data); - this.data = data; - } - - @Override - public Map> getCreatedData() { - return payload; - } - - @Override - public Map> getOriginalData() { - return Collections.emptyMap(); - } - - @Override - public NormalizedNode getOriginalSubtree() { - return null; - } - - @Override - public Set getRemovedPaths() { - return Collections.emptySet(); - } - - @Override - public Map> getUpdatedData() { - return payload; - } - - @Override - public NormalizedNode getUpdatedSubtree() { - return data; - } + public static final UnsignedLong increase(final UnsignedLong original) { + return original.plus(UnsignedLong.ONE); + } + public static final InstanceIdentifier append(final InstanceIdentifier parent, final PathArgument arg) { + return new InstanceIdentifier(ImmutableList. builder().addAll(parent.getPath()).add(arg).build()); } public static Set toIdentifierSet(final Iterable> children) { return FluentIterable.from(children).transform(StoreUtils. identifierExtractor()).toSet(); } - public static String toStringTree(final StoreMetadataNode metaNode) { + public static String toStringTree(final NormalizedNode node) { StringBuilder builder = new StringBuilder(); - toStringTree(builder, metaNode, 0); + toStringTree(builder, node, 0); return builder.toString(); - } - private static void toStringTree(final StringBuilder builder, final StoreMetadataNode metaNode, final int offset) { - String prefix = Strings.repeat(" ", offset); - builder.append(prefix).append(toStringTree(metaNode.getIdentifier())); - NormalizedNode dataNode = metaNode.getData(); - if (dataNode instanceof NormalizedNodeContainer) { - builder.append(" {").append("\n"); - for (StoreMetadataNode child : metaNode.getChildren()) { - toStringTree(builder, child, offset + 4); + private static void toStringTree(final StringBuilder builder, final NormalizedNode node, final int offset) { + final String prefix = Strings.repeat(" ", offset); + + builder.append(prefix).append(toStringTree(node.getIdentifier())); + if (node instanceof NormalizedNodeContainer) { + final NormalizedNodeContainer container = (NormalizedNodeContainer) node; + + builder.append(" {\n"); + for (NormalizedNode child : container.getValue()) { + toStringTree(builder, child, offset + STRINGTREE_INDENT); } - builder.append(prefix).append("}"); + + builder.append(prefix).append('}'); } else { - builder.append(" ").append(dataNode.getValue()); + builder.append(' ').append(node.getValue()); } - builder.append("\n"); + builder.append('\n'); } private static String toStringTree(final PathArgument identifier) {