From: Robert Varga Date: Wed, 17 Apr 2019 14:04:28 +0000 (+0200) Subject: Extend AugmentableExtension to handle AugmentationHolder X-Git-Tag: v3.0.9~20 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=00b2088c45f03820a9394360713774c90581eaac;p=mdsal.git 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 --- 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