Expose ReusableStreamReceiver
[yangtools.git] / yang / yang-data-api / src / main / java / org / opendaylight / yangtools / yang / data / api / schema / AugmentationNode.java
index ef9d6b9918ed5c7090e98788d245c7f48a70fbf1..460e6439067bbc5d4a10436fe6560fd45eec14c4 100644 (file)
@@ -7,32 +7,35 @@
  */
 package org.opendaylight.yangtools.yang.data.api.schema;
 
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.AugmentationIdentifier;
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument;
-
-import com.google.common.base.Optional;
-
+import java.util.Collection;
+import javax.annotation.Nonnull;
+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.AugmentationSchemaNode;
 
 /**
+ * Data instance of <code>augment</code> associated with parent node.
  *
- * Node representing Augmentation.
+ * <p>
+ * Augmentation is addition of subtree defined by other external YANG Model and is schema for subtree is described
+ * by an instance of {@link AugmentationSchemaNode} associated with parent node of this node.
  *
+ * <p>
  * Augmentation node MUST NOT be direct child of other augmentation node.
- *
  */
-public interface AugmentationNode extends //
-    MixinNode, //
-    DataContainerNode<AugmentationIdentifier>,
-    DataContainerChild<InstanceIdentifier.AugmentationIdentifier, Iterable<DataContainerChild<? extends PathArgument, ?>>> {
-
-    @Override
-    public Iterable<DataContainerChild<? extends PathArgument, ?>> getValue();
-
-
-    @Override
-    public Optional<DataContainerChild<? extends PathArgument, ?>> getChild(PathArgument child);
-
+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.
+     *
+     * <p>
+     * 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 uniquely identifies augmentation in particular subtree.
+     */
     @Override
-    public AugmentationIdentifier getIdentifier();
+    @Nonnull AugmentationIdentifier getIdentifier();
 }