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<>();
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())) {
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;