Clean up AugmentationCodecContext 81/109781/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 15 Jan 2024 16:02:59 +0000 (17:02 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 15 Jan 2024 17:16:34 +0000 (18:16 +0100)
Use A for Augmentation<?>, there is just no need to mix in DataObject.

JIRA: MDSAL-815
Change-Id: I8fc122a85e83878e7cda62420163ca0ed010299e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationCodecContext.java

index 484e192f98bc32460ad3ce8d53dd7dc1db087672..2006df5a5cb2aed0a44502d34781d9f63bc000d5 100644 (file)
@@ -17,23 +17,22 @@ import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingAugmentationCodecTreeNode;
 import org.opendaylight.mdsal.binding.runtime.api.AugmentRuntimeType;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
-import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.DataObjectStep;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
-final class AugmentationCodecContext<D extends DataObject & Augmentation<?>>
-        extends AbstractDataObjectCodecContext<D, AugmentRuntimeType> implements BindingAugmentationCodecTreeNode<D> {
+final class AugmentationCodecContext<A extends Augmentation<?>>
+        extends AbstractDataObjectCodecContext<A, AugmentRuntimeType> implements BindingAugmentationCodecTreeNode<A> {
     private static final MethodType CONSTRUCTOR_TYPE = MethodType.methodType(void.class,
         AbstractDataObjectCodecContext.class, DataContainerNode.class);
-    private static final MethodType DATAOBJECT_TYPE = MethodType.methodType(DataObject.class,
+    private static final MethodType AUGMENTATION_TYPE = MethodType.methodType(Augmentation.class,
         AugmentationCodecContext.class, DataContainerNode.class);
 
     private final MethodHandle proxyConstructor;
 
-    private AugmentationCodecContext(final AugmentationCodecPrototype<D> prototype,
+    private AugmentationCodecContext(final AugmentationCodecPrototype<A> prototype,
             final DataContainerAnalysis<AugmentRuntimeType> analysis) {
         super(prototype, analysis);
 
@@ -47,10 +46,10 @@ final class AugmentationCodecContext<D extends DataObject & Augmentation<?>>
             throw new LinkageError("Failed to find contructor for class " + bindingClass, e);
         }
 
-        proxyConstructor = ctor.asType(DATAOBJECT_TYPE);
+        proxyConstructor = ctor.asType(AUGMENTATION_TYPE);
     }
 
-    AugmentationCodecContext(final AugmentationCodecPrototype<D> prototype) {
+    AugmentationCodecContext(final AugmentationCodecPrototype<A> prototype) {
         this(prototype, new DataContainerAnalysis<>(prototype, CodecItemFactory.of()));
     }
 
@@ -72,11 +71,11 @@ final class AugmentationCodecContext<D extends DataObject & Augmentation<?>>
 
     @SuppressWarnings("checkstyle:illegalCatch")
     @Override
-    public D filterFrom(final DataContainerNode parentData) {
+    public A filterFrom(final DataContainerNode parentData) {
         for (var childArg : ((AugmentationCodecPrototype<?>) prototype()).getChildArgs()) {
             if (parentData.childByArg(childArg) != null) {
                 try {
-                    return (D) proxyConstructor.invokeExact(this, parentData);
+                    return (A) proxyConstructor.invokeExact(this, parentData);
                 } catch (final Throwable e) {
                     Throwables.throwIfUnchecked(e);
                     throw new IllegalStateException(e);