@Override public Map<String, EntityReference> map( NamedAssociation<?> namedAssoc ) { if( namedAssoc == null ) { return Collections.emptyMap(); } Map<String, EntityReference> refs = new LinkedHashMap<>( namedAssoc.count() ); for( String name : namedAssoc ) { refs.put( name, EntityReference.entityReferenceFor( namedAssoc.get( name ) ) ); } return refs; } };
@Override public Iterable<EntityReference> map( ManyAssociation<?> manyAssoc ) { if( manyAssoc == null ) { return Iterables.empty(); } List<EntityReference> refs = new ArrayList<>( manyAssoc.count() ); for( Object entity : manyAssoc ) { refs.add( EntityReference.entityReferenceFor( entity ) ); } return refs; } };
@Override public Iterable<EntityReference> map( AssociationDescriptor associationDescriptor ) { ManyAssociation<?> state = associationState.manyAssociationFor( associationDescriptor.accessor() ); List<EntityReference> refs = new ArrayList<>( state.count() ); for( Object entity : state ) { refs.add( EntityReference.entityReferenceFor( entity ) ); } return refs; } },
@Override public Map<String, EntityReference> map( AssociationDescriptor associationDescriptor ) { NamedAssociation<?> assoc = associationState.namedAssociationFor( associationDescriptor.accessor() ); Map<String, EntityReference> refs = new LinkedHashMap<>( assoc.count() ); for( String name : assoc ) { refs.put( name, EntityReference.entityReferenceFor( assoc.get( name ) ) ); } return refs; } } );
@Override public EntityReference map( AssociationDescriptor associationDescriptor ) { return EntityReference.entityReferenceFor( associationState.associationFor( associationDescriptor.accessor() ).get() ); } },
@Override public Map<String, EntityReference> map( AssociationDescriptor descriptor ) { AssociationDescriptor associationDescriptor; try { String associationName = descriptor.qualifiedName().name(); AssociationStateDescriptor entityState = entityDescriptor.state(); associationDescriptor = entityState.getNamedAssociationByName( associationName ); } catch( IllegalArgumentException e ) { return Collections.emptyMap(); } AccessibleObject associationMethod = associationDescriptor.accessor(); NamedAssociation<Object> assoc = associationState.namedAssociationFor( associationMethod ); Map<String, EntityReference> refs = new LinkedHashMap<>( assoc.count() ); for( String name : assoc ) { refs.put( name, EntityReference.entityReferenceFor( assoc.get( name ) ) ); } return refs; } } );
@Override public Iterable<EntityReference> map( final AssociationDescriptor descriptor ) { AssociationDescriptor associationDescriptor; try { String associationName = descriptor.qualifiedName().name(); AssociationStateDescriptor entityState = entityDescriptor.state(); associationDescriptor = entityState.getManyAssociationByName( associationName ); } catch( IllegalArgumentException e ) { return Iterables.empty(); } ManyAssociation<?> state = associationState.manyAssociationFor( associationDescriptor.accessor() ); List<EntityReference> refs = new ArrayList<>( state.count() ); for( Object entity : state ) { refs.add( EntityReference.entityReferenceFor( entity ) ); } return refs; } },
@Override public EntityReference map( AssociationDescriptor descriptor ) { AssociationDescriptor associationDescriptor; try { associationDescriptor = entityDescriptor.state() .getAssociationByName( descriptor.qualifiedName().name() ); } catch( IllegalArgumentException e ) { return null; } AccessibleObject associationMethod = associationDescriptor.accessor(); Association<Object> association = associationState.associationFor( associationMethod ); return EntityReference.entityReferenceFor( association.get() ); } },
@Override public EntityReference map( AssociationDescriptor eAssocDesc ) { try { return EntityReference.entityReferenceFor( vState.associationFor( eAssocDesc.accessor() ) ); } catch( IllegalArgumentException assocNotFoundOnValue ) { // Find String Property and convert to Association String propName = eAssocDesc.qualifiedName().name(); try { PropertyDescriptor vPropDesc = vStateDesc.findPropertyModelByName( propName ); if( STRING_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) ) { String assocState = (String) vState.propertyFor( vPropDesc.accessor() ).get(); return EntityReference.parseEntityReference( assocState ); } return null; } catch( IllegalArgumentException propNotFoundOnValue ) { return null; } } } };
@Override public EntityReference map( AssociationDescriptor eAssocDesc ) { String assocName = eAssocDesc.qualifiedName().name(); try { AssociationDescriptor vAssocDesc = vStateDesc.getAssociationByName( assocName ); Object assocEntity = vState.associationFor( vAssocDesc.accessor() ).get(); return assocEntity == null ? null : EntityReference.entityReferenceFor( assocEntity ); } catch( IllegalArgumentException assocNotFoundOnValue ) { // Association not found on Value, find Property<String> and convert to Association try { PropertyDescriptor vPropDesc = vStateDesc.findPropertyModelByName( assocName ); if( STRING_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) ) { String assocId = (String) vState.propertyFor( vPropDesc.accessor() ).get(); return assocId == null ? null : EntityReference.parseEntityReference( assocId ); } return null; } catch( IllegalArgumentException propNotFoundOnValue ) { return null; } } } };