package org.etk.model.plugins.entity.binding; import org.etk.model.plugins.entity.PropertyInfo; import org.etk.model.plugins.entity.SimpleValueInfo; import org.etk.model.plugins.json.PropertyDefinitionMapping; import org.etk.orm.plugins.bean.ValueKind; public class ValueBinding<K extends ValueKind> extends PropertyBinding<PropertyInfo<SimpleValueInfo<K>, ValueKind.Single>, SimpleValueInfo<K>, ValueKind.Single> { /** . */ final PropertyDefinitionMapping<?> propertyDefinition; public ValueBinding(PropertyInfo<SimpleValueInfo<K>, ValueKind.Single> property, PropertyDefinitionMapping propertyDefinition) { super(property); // this.propertyDefinition = propertyDefinition; } public boolean isTypeCovariant() { if (parent == null) { return true; } else { ValueBinding<?> a = (ValueBinding<?>) parent; return propertyDefinition.getMetaType() != a.propertyDefinition.getMetaType(); } } public PropertyDefinitionMapping<?> getPropertyDefinition() { return propertyDefinition; } @Override public void accept(BindingVisitor visitor) { if (property.getValueKind() == ValueKind.SINGLE) { visitor.singleValueMapping((ValueBinding<ValueKind.Single>) this); } else { visitor.multiValueMapping((ValueBinding<ValueKind.Multi>) this); } } }