org.javers.core.diff.appenders.ReferenceChangeAppender Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of javers-core Show documentation
Show all versions of javers-core Show documentation
JaVers - object auditing and diff framework for Java
package org.javers.core.diff.appenders;
import org.javers.core.diff.NodePair;
import org.javers.core.diff.changetype.ReferenceChange;
import org.javers.core.metamodel.object.GlobalId;
import org.javers.core.metamodel.type.JaversProperty;
import org.javers.core.metamodel.type.JaversType;
import org.javers.core.metamodel.type.ManagedType;
import java.util.Objects;
/**
* @author bartosz walacik
* @author pawel szymczyk
*/
class ReferenceChangeAppender implements PropertyChangeAppender {
@Override
public boolean supports(JaversType propertyType) {
return propertyType instanceof ManagedType;
}
@Override
public ReferenceChange calculateChanges(NodePair pair, JaversProperty property) {
GlobalId leftId = pair.getLeftReference(property);
GlobalId rightId = pair.getRightReference(property);
if (Objects.equals(leftId, rightId)) {
return null;
}
return new ReferenceChange(pair.createPropertyChangeMetadata(property), leftId, rightId,
pair.getLeftPropertyValue(property),
pair.getRightPropertyValue(property));
}
}