private void appendInlineFeed(final XMLStreamWriter writer, final String navigationPropertyName,
final EntityInfoAggregator eia, final Entity data)
throws EntityProviderException, XMLStreamException, EdmException {
if (eia.getNavigationPropertyNames().contains(navigationPropertyName) &&
data != null && data.getNavigations().containsKey(navigationPropertyName)) {
EdmNavigationProperty navProp = (EdmNavigationProperty) eia.getEntityType().getProperty(navigationPropertyName);
if (navProp == null) {
throw new EntityProviderProducerException(EntityProviderException.EXPANDNOTSUPPORTED);
}
EntityCollection inlineData;
inlineData = (EntityCollection) data.getNavigation(navigationPropertyName);
if (inlineData == null) {
inlineData = new EntityCollection();
}
if (inlineData.getEntities().isEmpty()) {
return;
}
writer.writeStartElement(Edm.NAMESPACE_M_2007_08, FormatXml.M_INLINE);
EntityCollectionSerializerProperties inlineProperties = inlineData.getCollectionProperties() == null
? EntityCollectionSerializerProperties.serviceRoot(data.getWriteProperties().getServiceRoot()).build()
: inlineData.getCollectionProperties();
EdmEntitySet inlineEntitySet = eia.getEntitySet().getRelatedEntitySet(navProp);
AtomFeedSerializer inlineFeedProducer = new AtomFeedSerializer(inlineProperties);
inlineData.setCollectionProperties(inlineProperties);
EntityInfoAggregator inlineEia =
EntityInfoAggregator.create(inlineEntitySet, null);
inlineFeedProducer.append(writer, inlineEia, inlineData, true);
writer.writeEndElement();
}
}