X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fsal-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fconnect%2Fnetconf%2Futil%2FNodeContainerProxy.java;fp=opendaylight%2Fnetconf%2Fsal-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fconnect%2Fnetconf%2Futil%2FNodeContainerProxy.java;h=23e21370260e8fbc40dd1a37998fc8b574bff9f8;hp=0000000000000000000000000000000000000000;hb=23fe9ca678ada6263fec5dd996f4025e4a32fcf5;hpb=071a641d7c12c0e6112d5ce0afe806b54f116ed2 diff --git a/opendaylight/netconf/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NodeContainerProxy.java b/opendaylight/netconf/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NodeContainerProxy.java new file mode 100644 index 0000000000..23e2137026 --- /dev/null +++ b/opendaylight/netconf/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NodeContainerProxy.java @@ -0,0 +1,152 @@ +/* + * 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.sal.connect.netconf.util; + +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition; +import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; +import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.model.api.TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.api.UsesNode; + +/** + * Simple proxy for container like schema nodes, where user provides a collection of children schema nodes + */ +public final class NodeContainerProxy implements ContainerSchemaNode { + + private final Map childNodes; + private final QName qName; + private final Set availableAugmentations; + + public NodeContainerProxy(final QName qName, final Map childNodes, final Set availableAugmentations) { + this.availableAugmentations = availableAugmentations; + this.childNodes = Preconditions.checkNotNull(childNodes, "childNodes"); + this.qName = qName; + } + + public NodeContainerProxy(final QName qName, final Collection childNodes) { + this(qName, asMap(childNodes), Collections.emptySet()); + } + + public NodeContainerProxy(final QName qName, final Collection childNodes, final Set availableAugmentations) { + this(qName, asMap(childNodes), availableAugmentations); + } + + private static Map asMap(final Collection childNodes) { + return Maps.uniqueIndex(childNodes, new Function() { + @Override + public QName apply(final DataSchemaNode input) { + return input.getQName(); + } + }); + } + + @Override + public Set> getTypeDefinitions() { + return Collections.emptySet(); + } + + @Override + public Set getChildNodes() { + return Sets.newHashSet(childNodes.values()); + } + + @Override + public Set getGroupings() { + return Collections.emptySet(); + } + + @Override + public DataSchemaNode getDataChildByName(final QName qName) { + return childNodes.get(qName); + } + + @Override + public DataSchemaNode getDataChildByName(final String s) { + throw new UnsupportedOperationException(); + } + + @Override + public Set getUses() { + return Collections.emptySet(); + } + + @Override + public boolean isPresenceContainer() { + throw new UnsupportedOperationException(); + } + + @Override + public Set getAvailableAugmentations() { + return availableAugmentations; + } + + @Override + public boolean isAugmenting() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isAddedByUses() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isConfiguration() { + throw new UnsupportedOperationException(); + } + + @Override + public ConstraintDefinition getConstraints() { + throw new UnsupportedOperationException(); + } + + @Override + public QName getQName() { + return qName; + } + + @Override + public SchemaPath getPath() { + throw new UnsupportedOperationException(); + } + + @Override + public String getDescription() { + throw new UnsupportedOperationException(); + } + + @Override + public String getReference() { + throw new UnsupportedOperationException(); + } + + @Override + public Status getStatus() { + throw new UnsupportedOperationException(); + } + + @Override + public List getUnknownSchemaNodes() { + return Collections.emptyList(); + } +} \ No newline at end of file