Disconnect EncapsulatedValueCodec from ReflectionBasedCodec
[mdsal.git] / binding / mdsal-binding-dom-codec / src / main / java / org / opendaylight / mdsal / binding / dom / codec / impl / AugmentableCodecDataObject.java
index 7580858b8a45c86783d2934bf3216f759775bccc..ac5e97c25d51247e50d9fc79c71e6e678fd1b490 100644 (file)
@@ -9,21 +9,16 @@ package org.opendaylight.mdsal.binding.dom.codec.impl;
 
 import static java.util.Objects.requireNonNull;
 
-import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.collect.ImmutableMap;
 import java.lang.invoke.MethodHandles;
 import java.lang.invoke.VarHandle;
-import java.util.Map;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.mdsal.binding.dom.codec.util.AugmentationReader;
-import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
 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.DataObject;
+import org.opendaylight.yangtools.yang.data.api.schema.DistinctNodeContainer;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
 
 /**
  * A base class for {@link DataObject}s which are also {@link Augmentable}, backed by {@link DataObjectCodecContext}.
@@ -33,7 +28,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
  * @param <T> DataObject type
  */
 public abstract class AugmentableCodecDataObject<T extends DataObject & Augmentable<T>>
-        extends CodecDataObject<T> implements Augmentable<T>, AugmentationHolder<T> {
+        extends CodecDataObject<T> implements Augmentable<T> {
     private static final VarHandle CACHED_AUGMENTATIONS;
 
     static {
@@ -50,7 +45,7 @@ public abstract class AugmentableCodecDataObject<T extends DataObject & Augmenta
     private volatile ImmutableMap<Class<? extends Augmentation<T>>, Augmentation<T>> cachedAugmentations;
 
     protected AugmentableCodecDataObject(final DataObjectCodecContext<T, ?> context,
-            final NormalizedNodeContainer<?, ?, ?> data) {
+            final DistinctNodeContainer<?, ?> data) {
         super(context, data);
     }
 
@@ -75,9 +70,9 @@ public abstract class AugmentableCodecDataObject<T extends DataObject & Augmenta
             // the augmentation the user is requesting -- otherwise a strict receiver would end up with a cryptic
             // ClassCastException.
             if (augmentationType.isAssignableFrom(augCtx.getBindingClass())) {
-                final Optional<NormalizedNode<?, ?>> augData = codecData().getChild(augCtx.getDomPathArgument());
-                if (augData.isPresent()) {
-                    return (A) augCtx.deserialize(augData.get());
+                final NormalizedNode augData = codecData().childByArg(augCtx.getDomPathArgument());
+                if (augData != null) {
+                    return (A) augCtx.deserialize(augData);
                 }
             }
         }
@@ -90,21 +85,6 @@ public abstract class AugmentableCodecDataObject<T extends DataObject & Augmenta
         return local != null ? local : loadAugmentations();
     }
 
-    @Override
-    final int codecAugmentedHashCode() {
-        return 31 * super.codecAugmentedHashCode() + augmentations().hashCode();
-    }
-
-    @Override
-    final boolean codecAugmentedEquals(final T other) {
-        return super.codecAugmentedEquals(other) && augmentations().equals(getAllAugmentations(other));
-    }
-
-    @Override
-    final ToStringHelper codecAugmentedFillToString(final ToStringHelper helper) {
-        return super.codecAugmentedFillToString(helper).add("augmentation", augmentations().values());
-    }
-
     private ImmutableMap<Class<? extends Augmentation<T>>, Augmentation<T>> acquireAugmentations() {
         return (ImmutableMap<Class<? extends Augmentation<T>>, Augmentation<T>>) CACHED_AUGMENTATIONS.getAcquire(this);
     }
@@ -116,10 +96,4 @@ public abstract class AugmentableCodecDataObject<T extends DataObject & Augmenta
         final Object witness = CACHED_AUGMENTATIONS.compareAndExchangeRelease(this, null, ret);
         return witness == null ? ret : (ImmutableMap<Class<? extends Augmentation<T>>, Augmentation<T>>) witness;
     }
-
-    private static Map<Class<? extends Augmentation<?>>, Augmentation<?>> getAllAugmentations(
-            final Augmentable<?> dataObject) {
-        return dataObject instanceof AugmentationReader ? ((AugmentationReader) dataObject).getAugmentations(dataObject)
-                : BindingReflections.getAugmentations(dataObject);
-    }
 }