@Override public Iterable<EntityReference> map( AssociationDescriptor associationDescriptor ) { // TODO return Iterables.empty(); } },
@Override public Iterable<EntityReference> map( Collection<String> stringCollec ) { if( stringCollec == null ) { return Iterables.empty(); } List<EntityReference> refList = new ArrayList<>(); for( String assId : stringCollec ) { refList.add( EntityReference.parseEntityReference( assId ) ); } return refList; } };
@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; } };
public static Iterable<Type> typesOf( Iterable<Type> types ) { Iterable<Type> result = empty(); for( Type type : types ) { result = flatten( result, typesOf( type ) ); } return result; }
public static Iterable<? extends Type> interfacesOf( Iterable<? extends Type> types ) { Iterable<Type> result = empty(); for( Type type : types ) { result = flatten( result, interfacesOf( type ) ); } return result; }
@Override @SuppressWarnings( {"raw", "unchecked"} ) public Iterable<Class<?>> map( Type type ) { if( type == null ) { return empty(); } if( type.equals( Object.class ) ) { Class<?> aClass = (Class<?>) type; return cast( iterable( aClass ) ); } else { type = RAW_CLASS.map( type ); Class superclass = ( (Class) type ).getSuperclass(); return prepend( (Class<?>) type, map( superclass ) ); } } };
@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 Iterable<EntityReference> map( AssociationDescriptor eAssocDesc ) { try { ManyAssociation<Object> vAssocState = vState.manyAssociationFor( eAssocDesc.accessor() ); return MANY_ASSOC_TO_ENTITY_REF_ITERABLE.map( vAssocState ); } catch( IllegalArgumentException assocNotFoundOnValue ) { // Find Collection<String> Property and convert to ManyAssociation String propName = eAssocDesc.qualifiedName().name(); try { PropertyDescriptor vPropDesc = vStateDesc.findPropertyModelByName( propName ); if( STRING_COLLECTION_TYPE_SPEC.satisfiedBy( vPropDesc.valueType() ) ) { Collection<String> vAssocState = (Collection) vState .propertyFor( vPropDesc.accessor() ).get(); return STRING_COLLEC_TO_ENTITY_REF_ITERABLE.map( vAssocState ); } return Iterables.empty(); } catch( IllegalArgumentException propNotFoundOnValue ) { return Iterables.empty(); } } } };