use of org.qi4j.runtime.association.NamedAssociationModel in project qi4j-sdk by Qi4j.
the class EntityStateInstance method namedAssociationFor.
@Override
@SuppressWarnings("unchecked")
public <T> NamedAssociation<T> namedAssociationFor(AccessibleObject accessor) {
Map<AccessibleObject, Object> state = state();
NamedAssociation<T> namedAssociation = (NamedAssociation<T>) state.get(accessor);
if (namedAssociation == null) {
NamedAssociationModel associationModel = stateModel.getNamedAssociation(accessor);
namedAssociation = new NamedAssociationInstance<>(entityState instanceof BuilderEntityState ? associationModel.getBuilderInfo() : associationModel, entityFunction, entityState.namedAssociationValueOf(associationModel.qualifiedName()));
state.put(accessor, namedAssociation);
}
return namedAssociation;
}
use of org.qi4j.runtime.association.NamedAssociationModel in project qi4j-sdk by Qi4j.
the class EntityAssemblyImpl method newNamedAssociationModel.
public NamedAssociationModel newNamedAssociationModel(AccessibleObject accessor, Iterable<Class<? extends Constraint<?, ?>>> constraintClasses) {
Iterable<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn(accessor);
boolean optional = first(filter(isType(Optional.class), annotations)) != null;
// Constraints for entities in NamedAssociation
ValueConstraintsModel valueConstraintsModel = constraintsFor(annotations, GenericAssociationInfo.associationTypeOf(accessor), ((Member) accessor).getName(), optional, constraintClasses, accessor);
ValueConstraintsInstance valueConstraintsInstance = null;
if (valueConstraintsModel.isConstrained()) {
valueConstraintsInstance = valueConstraintsModel.newInstance();
}
// Constraints for the NamedAssociation itself
valueConstraintsModel = constraintsFor(annotations, NamedAssociation.class, ((Member) accessor).getName(), optional, constraintClasses, accessor);
ValueConstraintsInstance namedValueConstraintsInstance = null;
if (valueConstraintsModel.isConstrained()) {
namedValueConstraintsInstance = valueConstraintsModel.newInstance();
}
MetaInfo metaInfo = namedAssociationDeclarations.metaInfoFor(accessor);
NamedAssociationModel associationModel = new NamedAssociationModel(accessor, valueConstraintsInstance, namedValueConstraintsInstance, metaInfo);
return associationModel;
}
use of org.qi4j.runtime.association.NamedAssociationModel in project qi4j-sdk by Qi4j.
the class ValueAssemblyImpl method newNamedAssociationModel.
public NamedAssociationModel newNamedAssociationModel(AccessibleObject accessor, Iterable<Class<? extends Constraint<?, ?>>> constraintClasses) {
Iterable<Annotation> annotations = Annotations.findAccessorAndTypeAnnotationsIn(accessor);
boolean optional = first(filter(isType(Optional.class), annotations)) != null;
// Constraints for entities in NamedAssociation
ValueConstraintsModel valueConstraintsModel = constraintsFor(annotations, GenericAssociationInfo.associationTypeOf(accessor), ((Member) accessor).getName(), optional, constraintClasses, accessor);
ValueConstraintsInstance valueConstraintsInstance = null;
if (valueConstraintsModel.isConstrained()) {
valueConstraintsInstance = valueConstraintsModel.newInstance();
}
// Constraints for the NamedAssociation itself
valueConstraintsModel = constraintsFor(annotations, NamedAssociation.class, ((Member) accessor).getName(), optional, constraintClasses, accessor);
ValueConstraintsInstance namedValueConstraintsInstance = null;
if (valueConstraintsModel.isConstrained()) {
namedValueConstraintsInstance = valueConstraintsModel.newInstance();
}
MetaInfo metaInfo = stateDeclarations.metaInfoFor(accessor);
NamedAssociationModel associationModel = new NamedAssociationModel(accessor, valueConstraintsInstance, namedValueConstraintsInstance, metaInfo);
return associationModel;
}
Aggregations