From 8bce9e2fb18fa3ed7209c8de390a842d23a16d65 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 17 Apr 2019 16:04:28 +0200 Subject: [PATCH] Extend AugmentableExtension to handle AugmentationHolder This class seems to be a duplicate of BindingReflections' functionality, completely missing out on AugmentationHolder, which can be used as an alternative to expose augmentations. Change-Id: Iadcc4e2f4587ceeb27d6a47c42b0319705fc1e58 Signed-off-by: Robert Varga --- .../mdsal/binding/testutils/AugmentableExtension.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/AugmentableExtension.java b/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/AugmentableExtension.java index 205ef8623e..ac46b83207 100644 --- a/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/AugmentableExtension.java +++ b/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/AugmentableExtension.java @@ -15,6 +15,7 @@ import org.eclipse.xtext.xbase.lib.util.ReflectExtensions; import org.opendaylight.mdsal.binding.dom.codec.util.AugmentationReader; import org.opendaylight.yangtools.yang.binding.Augmentable; import org.opendaylight.yangtools.yang.binding.Augmentation; +import org.opendaylight.yangtools.yang.binding.AugmentationHolder; /** * Adds an {@link #getAugmentations(Augmentable)} method to {@link Augmentable}. @@ -28,14 +29,18 @@ import org.opendaylight.yangtools.yang.binding.Augmentation; * @author Michael Vorburger */ // package-local: no need to expose this, consider it an implementation detail; public API is the AssertDataObjects +// FIXME: 5.0.0: this is a duplication of BindingReflections.getAugmentations() ... but why? class AugmentableExtension { private static final ReflectExtensions REFLECT_EXTENSIONS = new ReflectExtensions(); - public ClassToInstanceMap> getAugmentations(Augmentable augmentable) { + public ClassToInstanceMap> getAugmentations(final Augmentable augmentable) { if (augmentable instanceof AugmentationReader) { AugmentationReader augmentationReader = (AugmentationReader) augmentable; return ImmutableClassToInstanceMap.copyOf(augmentationReader.getAugmentations(augmentable)); + } else if (augmentable instanceof AugmentationHolder) { + AugmentationHolder augmentationHolder = (AugmentationHolder) augmentable; + return ImmutableClassToInstanceMap.copyOf(augmentationHolder.augmentations()); } else if (Proxy.isProxyClass(augmentable.getClass())) { InvocationHandler invocationHandler = Proxy.getInvocationHandler(augmentable); // class LazyDataObject implements InvocationHandler, AugmentationReader -- 2.36.6