package org.javers.core.diff.changetype; import org.javers.common.collections.Primitives; import java.io.Serializable; import java.util.Objects; /** * Immutable wrapper for client's Primitives, Values and Id's * <br><br> * * TODO refine dehydrate approach * Value needs to be dehydrated before persisting. Dehydration is simply serialization to JSON. * * @author bartosz walacik */ public class Atomic implements Serializable { private final Object value; public Atomic(Object value) { this.value = value; } public boolean isNull() { return value == null; } /** * @return true if value is not null and is primitive, box or String */ public boolean isJsonBasicType() { if(isNull()) { return false; } return Primitives.isJsonBasicType(value); } /** * original Value */ public Object unwrap() { return value; } @Override public String toString() { return "value:"+value; } @Override public boolean equals(Object obj) { if (!(obj instanceof Atomic)) { return false; } Atomic other = (Atomic)obj; return Objects.equals(value, other.value); } @Override public int hashCode() { if (value == null) { return 0; } return value.hashCode(); } }