private <T> EntityBuilder<?> doConversion( Class<T> entityType, String identity, Object value ) { EntityDescriptor eDesc = module.entityDescriptor( entityType.getName() ); if( eDesc == null ) { throw new EntityTypeNotFoundException( entityType.getName(), module.name(), map( ModelModule.toStringFunction, module.findVisibleEntityTypes() ) ); } ValueComposite vComposite = (ValueComposite) value; ValueDescriptor vDesc = spi.valueDescriptorFor( vComposite ); AssociationStateHolder vState = spi.stateOf( vComposite ); AssociationStateDescriptor vStateDesc = vDesc.state(); Unqualified unqualified = vDesc.metaInfo( Unqualified.class ); if( unqualified == null || !unqualified.value() ) { return doQualifiedConversion( entityType, identity, vState, vStateDesc ); } return doUnqualifiedConversion( entityType, identity, vState, vStateDesc ); }
@Override public void update( Object entity, Object value ) throws NoSuchEntityException { EntityComposite eComposite = (EntityComposite) entity; ValueComposite vComposite = (ValueComposite) value; EntityDescriptor eDesc = spi.entityDescriptorFor( eComposite ); AssociationStateHolder eState = spi.stateOf( eComposite ); AssociationStateDescriptor eStateDesc = eDesc.state(); ValueDescriptor vDesc = spi.valueDescriptorFor( vComposite ); AssociationStateHolder vState = spi.stateOf( vComposite ); AssociationStateDescriptor vStateDesc = vDesc.state(); Unqualified unqualified = vDesc.metaInfo( Unqualified.class ); if( unqualified == null || !unqualified.value() ) { doQualifiedUpdate( eState, eStateDesc, vState, vStateDesc ); } else { doUnQualifiedUpdate( eState, eStateDesc, vState, vStateDesc ); } }
Unqualified unqualified = valueDescriptor.metaInfo( Unqualified.class );