Fix license header violations in binding-data-codec
[yangtools.git] / code-generator / binding-data-codec / src / main / java / org / opendaylight / yangtools / binding / data / codec / impl / LazyDataObject.java
index b92acca00784e382c8db2aba813c8701e800b54d..eb7e126a6dad1277f2a49c9911c44d2c2a09cf42 100644 (file)
@@ -37,6 +37,7 @@ class LazyDataObject<D extends DataObject> implements InvocationHandler, Augment
     private static final String EQUALS = "equals";
     private static final String GET_AUGMENTATION = "getAugmentation";
     private static final String HASHCODE = "hashCode";
+    private static final String AUGMENTATIONS = "augmentations";
     private static final Object NULL_VALUE = new Object();
 
     private final ConcurrentHashMap<Method, Object> cachedData = new ConcurrentHashMap<>();
@@ -62,6 +63,8 @@ class LazyDataObject<D extends DataObject> implements InvocationHandler, Augment
                 return bindingToString();
             } else if (HASHCODE.equals(name)) {
                 return bindingHashCode();
+            } else if (AUGMENTATIONS.equals(name)) {
+                return getAugmentationsImpl();
             }
             return getBindingData(method);
         } else if (GET_AUGMENTATION.equals(method.getName())) {
@@ -104,10 +107,10 @@ class LazyDataObject<D extends DataObject> implements InvocationHandler, Augment
         int result = 1;
         for (final Method m : context.getHashCodeAndEqualsMethods()) {
             final Object value = getBindingData(m);
-            result += prime * result + ((value == null) ? 0 : value.hashCode());
+            result = prime * result + ((value == null) ? 0 : value.hashCode());
         }
-        if (Augmentation.class.isAssignableFrom(context.getBindingClass())) {
-            result += prime * result + (getAugmentations(this).hashCode());
+        if (Augmentable.class.isAssignableFrom(context.getBindingClass())) {
+            result = prime * result + (getAugmentationsImpl().hashCode());
         }
         cachedHashcode = result;
         return result;