import java.util.Map;
import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
import org.opendaylight.yangtools.yang.binding.Augmentation;
-import org.opendaylight.yangtools.yang.binding.AugmentationHolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final AugmentationFieldGetter DUMMY = new AugmentationFieldGetter() {
@Override
- protected Map<Class<? extends Augmentation<?>>, Augmentation<?>> getAugmentations(final Object input) {
+ Map<Class<? extends Augmentation<?>>, Augmentation<?>> getAugmentations(final Object input) {
return Collections.emptyMap();
}
};
- private static final AugmentationFieldGetter AUGMENTATION_HOLDER_GETTER = new AugmentationFieldGetter() {
- @Override
- @SuppressWarnings({"unchecked", "rawtypes"})
- protected Map<Class<? extends Augmentation<?>>, Augmentation<?>> getAugmentations(final Object input) {
- return (Map) ((AugmentationHolder<?>) input).augmentations();
- }
- };
-
private static final LoadingCache<Class<?>, AugmentationFieldGetter> AUGMENTATION_GETTERS =
CacheBuilder.newBuilder().weakKeys().build(new AugmentationGetterLoader());
* @param input Input Data object, from which augmentations should be extracted
* @return Map of Augmentation class to augmentation
*/
- protected abstract Map<Class<? extends Augmentation<?>>, Augmentation<?>> getAugmentations(Object input);
+ abstract Map<Class<? extends Augmentation<?>>, Augmentation<?>> getAugmentations(Object input);
- public static AugmentationFieldGetter getGetter(final Class<? extends Object> clz) {
- if (AugmentationHolder.class.isAssignableFrom(clz)) {
- return AUGMENTATION_HOLDER_GETTER;
- }
+ static AugmentationFieldGetter getGetter(final Class<? extends Object> clz) {
return AUGMENTATION_GETTERS.getUnchecked(clz);
}
@Override
@SuppressWarnings("checkstyle:illegalCatch")
- protected Map<Class<? extends Augmentation<?>>, Augmentation<?>> getAugmentations(final Object input) {
+ Map<Class<? extends Augmentation<?>>, Augmentation<?>> getAugmentations(final Object input) {
try {
return (Map<Class<? extends Augmentation<?>>, Augmentation<?>>) fieldGetter.invokeExact(input);
} catch (Throwable e) {
import org.opendaylight.yangtools.yang.binding.Action;
import org.opendaylight.yangtools.yang.binding.Augmentable;
import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.AugmentationHolder;
import org.opendaylight.yangtools.yang.binding.BaseIdentity;
import org.opendaylight.yangtools.yang.binding.ChildOf;
import org.opendaylight.yangtools.yang.binding.DataContainer;
* @return Map of augmentations if read was successful, otherwise empty map.
*/
public static Map<Class<? extends Augmentation<?>>, Augmentation<?>> getAugmentations(final Augmentable<?> input) {
+ if (input instanceof AugmentationHolder) {
+ return ((AugmentationHolder) input).augmentations();
+ }
return AugmentationFieldGetter.getGetter(input.getClass()).getAugmentations(input);
}
import java.util.Map;
import org.junit.Test;
import org.opendaylight.yangtools.yang.binding.Augmentation;
-import org.opendaylight.yangtools.yang.binding.AugmentationHolder;
public class AugmentationFieldGetterTest {
@Test
public void getGetterTest() throws Exception {
- assertNotNull(getGetter(AugmentationHolder.class));
- assertTrue(getGetter(AugmentationHolder.class)
- .getAugmentations(mock(AugmentationHolder.class)).isEmpty());
assertTrue(getGetter(Object.class).getAugmentations(null).isEmpty());
assertTrue(getGetter(TestAugmentationWrongTypeClass.class).getAugmentations(null).isEmpty());