Allow list elements to be interleaved
[yangtools.git] / yang / yang-data-util / src / main / java / org / opendaylight / yangtools / yang / data / util / ChoiceNodeDataWithSchema.java
index 5f183c127c92e186cc5ca5fda61996e0d0c68ed8..052343663285310cdb3fe1e4b2fc941b52e88fdb 100644 (file)
@@ -7,41 +7,49 @@
  */
 package org.opendaylight.yangtools.yang.data.util;
 
+import static com.google.common.base.Verify.verify;
+
 import java.io.IOException;
+import org.opendaylight.yangtools.rfc7952.data.api.StreamWriterMetadataExtension;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 
 /**
  * childs - empty augment - only one element can be.
  */
-class ChoiceNodeDataWithSchema extends CompositeNodeDataWithSchema {
-
+final class ChoiceNodeDataWithSchema extends CompositeNodeDataWithSchema<ChoiceSchemaNode> {
     private CaseNodeDataWithSchema caseNodeDataWithSchema;
 
     ChoiceNodeDataWithSchema(final ChoiceSchemaNode schema) {
         super(schema);
     }
 
+    // FIXME: 6.0.0: this should be impossible to hit
     @Override
-    protected CompositeNodeDataWithSchema addCompositeChild(final DataSchemaNode schema) {
-        CaseNodeDataWithSchema newChild = new CaseNodeDataWithSchema((ChoiceCaseNode) schema);
+    CaseNodeDataWithSchema addCompositeChild(final DataSchemaNode schema, final ChildReusePolicy policy) {
+        verify(schema instanceof CaseSchemaNode, "Unexpected schema %s", schema);
+        return addCompositeChild((CaseSchemaNode) schema, policy);
+    }
+
+    CaseNodeDataWithSchema addCompositeChild(final CaseSchemaNode schema, final ChildReusePolicy policy) {
+        CaseNodeDataWithSchema newChild = new CaseNodeDataWithSchema(schema);
         caseNodeDataWithSchema = newChild;
-        addCompositeChild(newChild);
+        addCompositeChild(newChild, policy);
         return newChild;
     }
 
-    public CaseNodeDataWithSchema getCase() {
+    CaseNodeDataWithSchema getCase() {
         return caseNodeDataWithSchema;
     }
 
     @Override
-    public void write(final NormalizedNodeStreamWriter writer) throws IOException {
+    public void write(final NormalizedNodeStreamWriter writer, final StreamWriterMetadataExtension metaWriter)
+            throws IOException {
         writer.nextDataSchemaNode(getSchema());
         writer.startChoiceNode(provideNodeIdentifier(), childSizeHint());
-        super.write(writer);
+        super.write(writer, metaWriter);
         writer.endNode();
     }
-
 }