package org.javers.core.diff.appenders;
import org.javers.core.diff.NodePair;
import org.javers.core.diff.changetype.PropertyChange;
import org.javers.core.metamodel.property.Property;
import org.javers.core.metamodel.type.JaversType;
/**
* Property-scope comparator,
* follows Chain-of-responsibility pattern.
* <br/><br/>
*
* Implementation should calculate diff between two property values
*
* @author bartosz walacik
*/
public interface PropertyChangeAppender <T extends PropertyChange> {
int HIGH_PRIORITY = 1;
int LOW_PRIORITY = 2;
/**
* Checks if given property type is supported
*/
boolean supports(JaversType propertyType);
T calculateChanges(NodePair pair, Property supportedProperty);
int priority();
}