package org.etk.orm.plugins.bean.mapping; import org.etk.orm.plugins.bean.PropertyInfo; import org.etk.orm.plugins.bean.ValueInfo; import org.etk.orm.plugins.bean.ValueKind; public abstract class PropertyMapping<P extends PropertyInfo<V, K>, V extends ValueInfo, K extends ValueKind> { /** . */ BeanMapping owner; /** The optional parent. */ PropertyMapping parent; /** . */ final P property; public PropertyMapping(P property) { this.property = property; } public PropertyMapping getParent() { return parent; } public BeanMapping getOwner() { return owner; } public String getName() { return property.getName(); } public P getProperty() { return property; } public V getValue() { return property.getValue(); } public abstract void accept(MappingVisitor visitor); /** * Returns true if the property type is covariant, meaning that it redefines the type from an ancestor * with a subclass. * * @return true if the property is type covariant */ public abstract boolean isTypeCovariant(); }