@Override public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable { return associations.manyAssociationFor( method ); }
@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 ManyAssociation<T> map( Composite entity ) { try { Object target = entity; if( traversedAssociation != null ) { target = traversedAssociation.map( entity ).get(); } if( traversedManyAssociation != null ) { throw new IllegalArgumentException( "Cannot traverse ManyAssociations" ); } if( traversedNamedAssociation != null ) { throw new IllegalArgumentException( "Cannot traverse NamedAssociations" ); } CompositeInstance handler = (CompositeInstance) Proxy.getInvocationHandler( target ); return ( (AssociationStateHolder) handler.state() ).manyAssociationFor( accessor ); } catch( IllegalArgumentException e ) { throw e; } catch( Throwable e ) { throw new IllegalArgumentException( e ); } }
@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; } },
ManyAssociation<?> state = associationState.manyAssociationFor( associationDescriptor.accessor() ); List<String> entities = new ArrayList<>( state.count() ); for( Object entity : state )
@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(); } } } };
ManyAssociation<Object> vManyAssoc = vState.manyAssociationFor( vAssocDesc.accessor() ); return MANY_ASSOC_TO_ENTITY_REF_ITERABLE.map( vManyAssoc );
ManyAssociation<?> state = associationState.manyAssociationFor( associationMethod ); List<String> entities = new ArrayList<>( state.count() ); for( Object entity : state )
ManyAssociation<Object> eManyAssoc = eState.manyAssociationFor( eAssocDesc.accessor() ); try ManyAssociation<Object> vManyAssoc = vState.manyAssociationFor( vAssocDesc.accessor() ); for( Object assoc : eManyAssoc.toList() )
ManyAssociation<Object> eManyAssoc = eState.manyAssociationFor( eAssocDesc.accessor() ); try ManyAssociation<Object> vManyAss = vState.manyAssociationFor( vAssDesc.accessor() ); for( Object ass : eManyAssoc.toList() )