Split out addCompositeChild(CaseSchemaNode) 46/90346/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 9 Jun 2020 11:50:15 +0000 (13:50 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 9 Jun 2020 11:50:15 +0000 (13:50 +0200)
Choices seem to have this special case, which we should be able to
wire without an explicit cast in most cases.

Change-Id: I5a398957190ccec49b2a9072638f489bbdabd984
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ChoiceNodeDataWithSchema.java

index 47e9081227fb17fe9565d03acd59b3ddef5db6d6..bd89e1d45c6c5e896c5a1eefd2b674912938595b 100644 (file)
@@ -7,6 +7,8 @@
  */
 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;
@@ -17,22 +19,28 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 /**
  * childs - empty augment - only one element can be.
  */
-class ChoiceNodeDataWithSchema extends CompositeNodeDataWithSchema<ChoiceSchemaNode> {
+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 CaseNodeDataWithSchema addCompositeChild(final DataSchemaNode schema) {
-        CaseNodeDataWithSchema newChild = new CaseNodeDataWithSchema((CaseSchemaNode) schema);
+    CaseNodeDataWithSchema addCompositeChild(final DataSchemaNode schema) {
+        verify(schema instanceof CaseSchemaNode, "Unexpected schema %s", schema);
+        return addCompositeChild((CaseSchemaNode) schema);
+    }
+
+    CaseNodeDataWithSchema addCompositeChild(final CaseSchemaNode schema) {
+        CaseNodeDataWithSchema newChild = new CaseNodeDataWithSchema(schema);
         caseNodeDataWithSchema = newChild;
         addCompositeChild(newChild);
         return newChild;
     }
 
-    public CaseNodeDataWithSchema getCase() {
+    CaseNodeDataWithSchema getCase() {
         return caseNodeDataWithSchema;
     }