Rename CaseNodeCodecContext.Prototype 81/106381/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 5 Jun 2023 08:05:39 +0000 (10:05 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 5 Jun 2023 11:19:32 +0000 (13:19 +0200)
Split this class out into CaseCodecPrototype top-level class.

Change-Id: I9b94a07f5b78bdec684d17ed0831e67a06cf0c0e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseCodecPrototype.java [new file with mode: 0644]
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseNodeCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ChoiceNodeCodecContext.java

diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseCodecPrototype.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseCodecPrototype.java
new file mode 100644 (file)
index 0000000..6759c00
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2023 PANTHEON.tech, s.r.o. 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
+ */
+package org.opendaylight.mdsal.binding.dom.codec.impl;
+
+import org.opendaylight.mdsal.binding.dom.codec.impl.NodeCodecContext.CodecContextFactory;
+import org.opendaylight.mdsal.binding.runtime.api.CaseRuntimeType;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+
+final class CaseCodecPrototype extends DataObjectCodecPrototype<CaseRuntimeType> {
+    CaseCodecPrototype(final Class<?> cls, final CaseRuntimeType type, final CodecContextFactory factory) {
+        super(cls, NodeIdentifier.create(type.statement().argument()), type, factory);
+    }
+
+    @Override
+    DataContainerCodecContext<?, CaseRuntimeType> createInstance() {
+        return new CaseNodeCodecContext<>(this);
+    }
+}
\ No newline at end of file
index 69c94c6a93f07c14bf7356a07da27cb973a6e146..6d15c2077049ac5a35240168560e87b5684503b1 100644 (file)
@@ -14,23 +14,11 @@ import org.opendaylight.mdsal.binding.runtime.api.CaseRuntimeType;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
 final class CaseNodeCodecContext<D extends DataObject> extends DataObjectCodecContext<D, CaseRuntimeType> {
-    static final class Prototype extends DataObjectCodecPrototype<CaseRuntimeType> {
-        Prototype(final Class<?> cls, final CaseRuntimeType type, final CodecContextFactory factory) {
-            super(cls, NodeIdentifier.create(type.statement().argument()), type, factory);
-        }
-
-        @Override
-        DataContainerCodecContext<?, CaseRuntimeType> createInstance() {
-            return new CaseNodeCodecContext<>(this);
-        }
-    }
-
-    private CaseNodeCodecContext(final Prototype prototype) {
+    CaseNodeCodecContext(final CaseCodecPrototype prototype) {
         super(prototype, CodecItemFactory.of(prototype.getBindingClass()));
     }
 
index 90038cac5ce8759b2e2fd75612683bd705586929..ceeefcaea26e2fdecaefbf537f6ecdc1630ddd8c 100644 (file)
@@ -117,20 +117,19 @@ final class ChoiceNodeCodecContext<D extends DataObject> extends DataContainerCo
         final var factory = prototype.getFactory();
         final var localCases = new HashSet<JavaTypeName>();
         for (var caseType : choiceType.validCaseChildren()) {
-            final var caseProto = new CaseNodeCodecContext.Prototype(loadCase(factory.getRuntimeContext(), caseType),
-                caseType, factory);
+            @SuppressWarnings("unchecked")
+            final var caseClass = (Class<? extends DataObject>) loadCase(factory.getRuntimeContext(), caseType);
+            final var caseProto = new CaseCodecPrototype(caseClass, caseType, factory);
 
             localCases.add(caseType.getIdentifier());
-            byClassBuilder.put(caseProto.getBindingClass(), caseProto);
+            byClassBuilder.put(caseClass, caseProto);
 
             // Updates collection of case children
-            @SuppressWarnings("unchecked")
-            final var cazeCls = (Class<? extends DataObject>) caseProto.getBindingClass();
-            for (var cazeChild : getChildrenClasses(cazeCls)) {
+            for (var cazeChild : getChildrenClasses(caseClass)) {
                 childToCase.put(cazeChild, caseProto);
             }
             // Updates collection of YANG instance identifier to case
-            for (var stmt : caseProto.getType().statement().effectiveSubstatements()) {
+            for (var stmt : caseType.statement().effectiveSubstatements()) {
                 if (stmt instanceof DataSchemaNode cazeChild) {
                     byYangCaseChildBuilder.put(NodeIdentifier.create(cazeChild.getQName()), caseProto);
                 }