From 85367bcb4823cbb9e84009a09ea26f85c054a202 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 15 Jan 2024 17:02:59 +0100 Subject: [PATCH] Clean up AugmentationCodecContext Use A for Augmentation, there is just no need to mix in DataObject. JIRA: MDSAL-815 Change-Id: I8fc122a85e83878e7cda62420163ca0ed010299e Signed-off-by: Robert Varga --- .../codec/impl/AugmentationCodecContext.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationCodecContext.java index 484e192f98..2006df5a5c 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationCodecContext.java @@ -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> - extends AbstractDataObjectCodecContext implements BindingAugmentationCodecTreeNode { +final class AugmentationCodecContext> + extends AbstractDataObjectCodecContext implements BindingAugmentationCodecTreeNode { 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 prototype, + private AugmentationCodecContext(final AugmentationCodecPrototype prototype, final DataContainerAnalysis analysis) { super(prototype, analysis); @@ -47,10 +46,10 @@ final class AugmentationCodecContext> throw new LinkageError("Failed to find contructor for class " + bindingClass, e); } - proxyConstructor = ctor.asType(DATAOBJECT_TYPE); + proxyConstructor = ctor.asType(AUGMENTATION_TYPE); } - AugmentationCodecContext(final AugmentationCodecPrototype prototype) { + AugmentationCodecContext(final AugmentationCodecPrototype prototype) { this(prototype, new DataContainerAnalysis<>(prototype, CodecItemFactory.of())); } @@ -72,11 +71,11 @@ final class AugmentationCodecContext> @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); -- 2.36.6