Rework NormalizedNode type hierarchy
[yangtools.git] / yang / yang-data-api / src / main / java / org / opendaylight / yangtools / yang / data / api / schema / DataContainerNode.java
index a9e90d566e1c1245c6aa8a503ad9897d813a7587..93e8de1f2ddd7eba48cd5017768427f06ca8e244 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -9,38 +10,30 @@ package org.opendaylight.yangtools.yang.data.api.schema;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 
 /**
+ * Abstract node which does not have value but contains valid {@link DataContainerChild} nodes. Schema of this node is
+ * described by instance of {@link org.opendaylight.yangtools.yang.model.api.DataNodeContainer}.
  *
- * Abstract node which does not have value but contains valid {@link DataContainerChild} nodes.
- *
- * Schema of this node is described by instance of {@link org.opendaylight.yangtools.yang.model.api.DataNodeContainer}.
+ * <p>
+ * <b>NOTE:</b>
+ * All implementations of this interface are assumed to be {@link OrderingAware.System}, i.e. order-independent.
  *
  * <h2>Implementation notes</h2>
  * This interface should not be implemented directly, but rather implementing one of it's subclasses
  * <ul>
- * <li>{@link ContainerNode}
- * <li>{@link MapEntryNode}
- * <li>{@link UnkeyedListEntryNode}
- * <li>{@link ChoiceNode}
- * <li>{@link AugmentationNode}
+ *   <li>{@link AugmentationNode}</li>
+ *   <li>{@link ChoiceNode}</li>
+ *   <li>{@link ContainerNode}</li>
+ *   <li>{@link MapEntryNode} and its specializations</li>
+ *   <li>{@link UnkeyedListEntryNode}</li>
  * </ul>
  *
- * @param <K> {@link PathArgument} which identifies instance of {@link DataContainerNode}
+ * @param <K> {@link PathArgument} which identifies this instance {@link DataContainerNode}
  */
-public interface DataContainerNode<K extends PathArgument> extends //
-        NormalizedNodeContainer<K, PathArgument, DataContainerChild<? extends PathArgument, ?>> {
+public interface DataContainerNode<K extends PathArgument>
+        extends DistinctNodeContainer<K, PathArgument, DataContainerChild>, OrderingAware.System {
+    @Override
+    int hashCode();
 
-    /**
-     * Returns iteration of all child nodes
-     *
-     * Order of returned child nodes may be defined by subinterfaces.
-     *
-     * <b>Implementation Notes:</b>
-     * <p>
-     * All nodes returned in this iterable, MUST also be accessible via
-     * {@link #getChild(PathArgument)} using their associated identifier.
-     *
-     * @return Iteration of all child nodes
-     */
     @Override
-    Iterable<DataContainerChild<? extends PathArgument, ?>> getValue();
+    boolean equals(Object obj);
 }