org.javers.core.diff.custom.CustomToNativeAppenderAdapter 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.custom;
import org.javers.core.diff.NodePair;
import org.javers.core.diff.appenders.PropertyChangeAppender;
import org.javers.core.diff.changetype.PropertyChange;
import org.javers.core.metamodel.type.JaversProperty;
import org.javers.core.metamodel.type.JaversType;
import java.util.Optional;
/**
* @author bartosz walacik
*/
public class CustomToNativeAppenderAdapter implements PropertyChangeAppender {
private final CustomPropertyComparator delegate;
private final Class propertyJavaClass;
public CustomToNativeAppenderAdapter(CustomPropertyComparator delegate, Class propertyJavaClass) {
this.delegate = delegate;
this.propertyJavaClass = propertyJavaClass;
}
@Override
public boolean supports(JaversType propertyType) {
return propertyType.getBaseJavaType().equals(propertyJavaClass);
}
@Override
public C calculateChanges(NodePair pair, JaversProperty property) {
T leftValue = (T)pair.getLeftPropertyValue(property);
T rightValue = (T)pair.getRightPropertyValue(property);
return delegate.compare(leftValue, rightValue, pair.createPropertyChangeMetadata(property), property).orElse(null);
}
@Override
public int priority() {
return HIGH_PRIORITY;
}
}