public void writeServiceDocument(final JsonGenerator gen) throws IOException { gen.writeStartObject(); if (!isODataMetadataNone) { final String metadataUri = (serviceRoot == null ? "" : serviceRoot.endsWith("/") ? serviceRoot : (serviceRoot + "/")) + Constants.METADATA; gen.writeObjectField(Constants.JSON_CONTEXT, metadataUri); if (metadata != null && metadata.getServiceMetadataETagSupport() != null && metadata.getServiceMetadataETagSupport().getMetadataETag() != null) { gen.writeStringField( Constants.JSON_METADATA_ETAG, metadata.getServiceMetadataETagSupport().getMetadataETag()); } } gen.writeArrayFieldStart(Constants.VALUE); final EdmEntityContainer container = metadata.getEdm().getEntityContainer(); writeEntitySets(gen, container); writeFunctionImports(gen, container); writeSingletons(gen, container); }