@Override
public ODataResponse writeLinks(final EdmEntitySet entitySet, final List<Map<String, Object>> data,
final EntityProviderWriteProperties properties) throws EntityProviderException {
final EntityInfoAggregator entityInfo = EntityInfoAggregator.create(entitySet, properties.getExpandSelectTree());
CircleStreamBuffer buffer = new CircleStreamBuffer();
try {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET));
new JsonLinksEntityProducer(properties).append(writer, entityInfo, data);
writer.flush();
buffer.closeWrite();
ODataResponseBuilder response = ODataResponse.entity(buffer.getInputStream());
if (properties.getInlineCountType() != InlineCount.ALLPAGES) {
response = response.header(ODataHttpHeaders.DATASERVICEVERSION, ODataServiceVersion.V10);
}
return response.build();
} catch (EntityProviderException e) {
buffer.close();
throw e;
} catch (Exception e) {
buffer.close();
throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
.getSimpleName()), e);
}
}