/*
* 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.yangtools.yang.data.api.schema;
import java.util.Collection;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
/**
* Data instance of <code>augment</code> associated with parent node.
*
* Augmentation is addition of subtree defined by other external YANG Model and
* is schema for subtree is described by instance of {@link AugmentationSchema}
* associated with parent node of this node.
*
* Augmentation node MUST NOT be direct child of other augmentation node.
*
*/
public interface AugmentationNode extends MixinNode, DataContainerNode<AugmentationIdentifier>,
DataContainerChild<AugmentationIdentifier, Collection<DataContainerChild<? extends PathArgument, ?>>> {
/**
* Gets identifier of augmentation node
*
* Returned identifier of augmentation node contains all possible
* direct child QNames.
*
* This is sufficient to identify instance of augmentation,
* since RFC6020 states that <code>augment</code> that augment
* statement must not add multiple nodes from same namespace
* / module
* to the target node.
*
* @return Identifier which uniquelly identifies augmentation in particular subtree.
*
*/
@Override
AugmentationIdentifier getIdentifier();
}