*/
package org.opendaylight.yangtools.yang.data.api.schema;
-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.AugmentationSchema;
/**
+ * 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 instance of {@link AugmentationSchema}
+ * 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> {
-
-
- @Override
- public Iterable<DataContainerChild<?, ?>> getValue();
-
-
- @Override
- public Optional<DataContainerChild<?, ?>> 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();
}