//see the lack of total in their paging path spec and then decide to set total to null. We will then also exclude it
//when we project paging.
//If the client decides they want total in their paging response, then the resource method will see total in their
//paging path spec and then decide to set total to a non null value. We will then also include it when we project
//paging.
final RecordTemplate anyRecord = new AnyRecord(RestUtils.projectFields(paging.data(),
ProjectionMode.AUTOMATIC, resourceContext.getPagingProjectionMask()));
final CollectionMetadata projectedPaging = new CollectionMetadata(anyRecord.data());
//For root object entities
List<AnyRecord> processedElements = new ArrayList<AnyRecord>(elements.size());
for (RecordTemplate entry : elements)
{
//We don't permit null elements in our lists. If so, this is a developer error.
if (entry == null)
{
throw new RestLiServiceException(HttpStatus.S_500_INTERNAL_SERVER_ERROR,
"Unexpected null encountered. Null element inside of a List returned by the resource method: " + routingResult
.getResourceMethod());
}
processedElements.add(new AnyRecord(RestUtils
.projectFields(entry.data(), resourceContext.getProjectionMode(), resourceContext.getProjectionMask())));
}
//Now for custom metadata
final AnyRecord projectedCustomMetadata;
if (customMetadata != null)
{
projectedCustomMetadata = new AnyRecord(RestUtils
.projectFields(customMetadata.data(), resourceContext.getMetadataProjectionMode(),
resourceContext.getMetadataProjectionMask()));
}
else
{