public Collection expand(ExpandContext<Collection> context, EntityExpanderResolver expanderResolver, EntityCrawler entityCrawler) { final List list = new LinkedList(); for (Object item : context.getEntity()) { final ExpandContext<Object> itemContext = new DefaultExpandContext<Object>(item, context.getExpandable(), context.getEntityExpandParameter()); final EntityExpander<Object> entityExpander = item != null ? expanderResolver.getExpander(item.getClass()) : null; list.add(entityExpander != null ? entityExpander.expand(itemContext, expanderResolver, entityCrawler) : item); } return list; } }
public List expand(ExpandContext<List> context, EntityExpanderResolver expanderResolver, EntityCrawler entityCrawler) { final List list = new LinkedList(); for (Object item : context.getEntity()) { final ExpandContext<Object> itemContext = new DefaultExpandContext<Object>(item, context.getExpandable(), context.getEntityExpandParameter()); final EntityExpander<Object> entityExpander = item != null ? expanderResolver.getExpander(item.getClass()) : null; list.add(entityExpander != null ? entityExpander.expand(itemContext, expanderResolver, entityCrawler) : item); } return list; } }
private void expandFields(Collection<Field> expandableFields, Object entity, ExpandParameter expandParameter, EntityExpanderResolver expanderResolver) { for (Field field : expandableFields) { final Expandable expandable = getExpandable(field); if (expandParameter.shouldExpand(expandable) && expanderResolver.hasExpander(field.getType())) { // we know the expander is not null, as per ExpanderResolver contract final EntityExpander<Object> entityExpander = expanderResolver.getExpander(field.getType()); final ExpandContext<Object> context = new DefaultExpandContext<Object>(getFieldValue(field, entity), expandable, expandParameter); setFieldValue(field, entity, entityExpander.expand(context, expanderResolver, this)); } } }