/** * Default implementation. Return the whole rendered data within this method call. * <p> * {@inheritDoc} */ @Override public ChunkedActionRenderResult renderBody(ODataRequestContext requestContext, QueryResult result, ChunkedActionRenderResult previousResult) throws ODataException { LOG.debug("Start rendering property for request body: {}", requestContext); ODataResponse.Builder responseBuilder = new ODataResponse.Builder().setStatus(OK); render(requestContext, result, responseBuilder); try { previousResult.getOutputStream().write(responseBuilder.build().getBody()); return previousResult; } catch (java.io.IOException e) { throw new ODataRenderException(format("Unable to render result: {0} for request: {1}", result, requestContext.getRequest()), e); } }
.setStatus(ODataResponse.Status.OK) .setContentType(MediaType.MULTIPART) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setBodyText(sb.toString(), StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e);
.setStatus(ODataResponse.Status.OK) .setContentType(MediaType.MULTIPART) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setBodyText(sb.toString(), StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e);
@Override public void render(ODataRequestContext requestContext, QueryResult result, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start rendering entity(es) for request: {}", requestContext); JsonWriter writer = new JsonWriter(requestContext.getUri(), requestContext.getEntityDataModel()); String contextUrl = buildContextURL(requestContext, result.getData()); String json; if (result.getType() == COLLECTION) { json = writer.writeFeed((List<?>) result.getData(), contextUrl, result.getMeta()); } else if (result.getType() == RAW_JSON) { json = writer.writeRawJson(result.getData().toString(), contextUrl); } else { json = writer.writeEntry(result.getData(), contextUrl); } if (responseBuilder != null) { try { responseBuilder .setContentType(MediaType.JSON) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setBodyText(json, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } } LOG.debug("End rendering entity(es) for request: {}", requestContext); }
@Override public void render(ODataRequestContext requestContext, QueryResult result, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start rendering entity(es) for request: {} with result {}", requestContext, result); AtomWriter atomWriter = initAtomWriter(requestContext); atomWriter.startDocument(); if (result.getType() == COLLECTION) { atomWriter.writeFeed((List<?>) result.getData(), buildContextURL(requestContext, result.getData()), result.getMeta()); } else { atomWriter.writeEntry(result.getData(), buildContextURL(requestContext, result.getData())); } atomWriter.endDocument(); String renderedData = atomWriter.getXml(); if (responseBuilder != null) { try { responseBuilder .setContentType(ATOM_XML) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setBodyText(renderedData, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } } LOG.debug("End rendering entity(es) for request: {}", requestContext); }
@Override public void render(ODataRequestContext requestContext, QueryResult result, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start rendering entity(es) for request: {}", requestContext); JsonWriter writer = new JsonWriter(requestContext.getUri(), requestContext.getEntityDataModel()); String contextUrl = buildContextURL(requestContext, result.getData()); String json; if (result.getType() == COLLECTION) { json = writer.writeFeed((List<?>) result.getData(), contextUrl, result.getMeta()); } else if (result.getType() == RAW_JSON) { json = writer.writeRawJson(result.getData().toString(), contextUrl); } else { json = writer.writeEntry(result.getData(), contextUrl); } if (responseBuilder != null) { try { responseBuilder .setContentType(MediaType.JSON) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setBodyText(json, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } } LOG.debug("End rendering entity(es) for request: {}", requestContext); }
@Override public void render(ODataRequestContext requestContext, QueryResult result, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start rendering entity(es) for request: {} with result {}", requestContext, result); AtomWriter atomWriter = initAtomWriter(requestContext); atomWriter.startDocument(); if (result.getType() == COLLECTION) { atomWriter.writeFeed((List<?>) result.getData(), buildContextURL(requestContext, result.getData()), result.getMeta()); } else { atomWriter.writeEntry(result.getData(), buildContextURL(requestContext, result.getData())); } atomWriter.endDocument(); String renderedData = atomWriter.getXml(); if (responseBuilder != null) { try { responseBuilder .setContentType(ATOM_XML) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setBodyText(renderedData, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } } LOG.debug("End rendering entity(es) for request: {}", requestContext); }
@Override public void render(ODataRequestContext requestContext, QueryResult data, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start rendering property for request: {}", requestContext); // Root element must be <metadata:value> XMLPropertyWriter propertyWriter = new XMLPropertyWriter(requestContext.getUri(), requestContext.getEntityDataModel()); String response = propertyWriter.getPropertyAsString(data.getData()); LOG.debug("Response property xml is {}", response); try { responseBuilder .setContentType(XML) .setBodyText(response, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } LOG.debug("End rendering property for request: {}", requestContext); }
/** * Default implementation. Return the whole rendered data within this method call. * <p> * {@inheritDoc} */ @Override public ChunkedActionRenderResult renderBody(ODataRequestContext requestContext, QueryResult result, ChunkedActionRenderResult previousResult) throws ODataException { LOG.debug("Start rendering property for request body: {}", requestContext); ODataResponse.Builder responseBuilder = new ODataResponse.Builder().setStatus(OK); render(requestContext, result, responseBuilder); try { previousResult.getOutputStream().write(responseBuilder.build().getBody()); return previousResult; } catch (java.io.IOException e) { throw new ODataRenderException(format("Unable to render result: {0} for request: {1}", result, requestContext.getRequest()), e); } }
@Override public void render(ODataRequestContext requestContext, QueryResult data, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start value for request: {}", requestContext); PrimitiveWriter primitiveWriter = new PrimitiveWriter(requestContext.getUri(), requestContext.getEntityDataModel()); String response = primitiveWriter.getPropertyAsString(data.getData()); LOG.debug("Response value is {}", response); try { responseBuilder .setContentType(TEXT) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setBodyText(response, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } LOG.debug("End rendering property for request: {}", requestContext); }
@Override public void render(ODataRequestContext requestContext, QueryResult data, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start rendering property for request: {}", requestContext); JsonPropertyWriter propertyWriter = new JsonPropertyWriter(requestContext.getUri(), requestContext.getEntityDataModel()); String json = propertyWriter.getPropertyAsString(data.getData()); LOG.trace("Response property json is {}", json); try { responseBuilder .setContentType(MediaType.JSON) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setBodyText(json, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } LOG.debug("End rendering property for request: {}", requestContext); }
/** * Returns an Atom XML file which contains a entry node containing * an OData marshalled form of the entity (DTO) object. * * @param entityDto the entity to marshall * @param serviceUri the service Uri * @return an Atom formatted XML file which contains a entry node which * contains a marshalled form of the entity (DTO) object * @throws java.io.UnsupportedEncodingException * @throws com.sdl.odata.api.ODataException */ public static String atomMarshall(Object entityDto, ODataUri serviceUri) throws ODataException, UnsupportedEncodingException { // build a dummy OData response ODataResponse.Builder builder = new ODataResponse.Builder().setStatus(OK); // marshall the entity Atom XML into the response new AtomRenderer().render(buildODataContext("", ATOM_XML, serviceUri), QueryResult.from(entityDto), builder); // return the text content of the response return builder.build().getBodyText(UTF_8.name()); }
@Override public void render(ODataRequestContext requestContext, QueryResult data, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start rendering $metadata document for request: {}", requestContext); MetadataDocumentWriter writer = new MetadataDocumentWriter(requestContext.getEntityDataModel()); writer.startDocument(); writer.writeMetadataDocument(); writer.endDocument(); try { responseBuilder .setStatus(ODataResponse.Status.OK) .setContentType(XML) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setBodyText(writer.getXml(), StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } LOG.debug("End rendering $metadata document for request: {}", requestContext); }
@Override public void render(ODataRequestContext requestContext, QueryResult data, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start rendering error response for request: {}", requestContext); XMLErrorResponseWriter writer = new XMLErrorResponseWriter(); writer.startDocument(); writer.writeError((ODataException) data.getData()); writer.endDocument(); try { responseBuilder .setContentType(XML) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setHeader(CONTENT_LANGUAGE, ENGLISH.getLanguage()) .setBodyText(writer.getXml(), UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } LOG.debug("End rendering error response for request: {}", requestContext); }
@Override public void render(ODataRequestContext requestContext, QueryResult data, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start rendering error response for request: {}", requestContext); XMLErrorResponseWriter writer = new XMLErrorResponseWriter(); writer.startDocument(); writer.writeError((ODataException) data.getData()); writer.endDocument(); try { responseBuilder .setContentType(XML) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setHeader(CONTENT_LANGUAGE, ENGLISH.getLanguage()) .setBodyText(writer.getXml(), UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } LOG.debug("End rendering error response for request: {}", requestContext); }
private String getRenderedJSON(ProcessorResult result) throws ODataException { LOG.debug("JSON found as the content type. JSON Renderer will be used to render the result data"); JsonRenderer renderer = new JsonRenderer(); ODataResponse.Builder builder = new ODataResponse.Builder() .setStatus(result.getStatus()); renderer.render(result.getRequestContext(), result.getQueryResult(), builder); try { // pretty print ObjectMapper objectMapper = new ObjectMapper(); Object jsonObject = objectMapper.readValue(builder.build().getBodyText(StandardCharsets.UTF_8.name()), Object.class); return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject); } catch (IOException ex) { throw new ODataBatchRendererException("Unable to pretty print following json data"); } }
@Override public void render(ODataRequestContext requestContext, QueryResult data, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start rendering property for request: {}", requestContext); // Root element must be <metadata:value> XMLPropertyWriter propertyWriter = new XMLPropertyWriter(requestContext.getUri(), requestContext.getEntityDataModel()); String response = propertyWriter.getPropertyAsString(data.getData()); LOG.debug("Response property xml is {}", response); try { responseBuilder .setContentType(XML) .setBodyText(response, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } LOG.debug("End rendering property for request: {}", requestContext); }
@Override public void render(ODataRequestContext requestContext, QueryResult data, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start value for request: {}", requestContext); PrimitiveWriter primitiveWriter = new PrimitiveWriter(requestContext.getUri(), requestContext.getEntityDataModel()); String response = primitiveWriter.getPropertyAsString(data.getData()); LOG.debug("Response value is {}", response); try { responseBuilder .setContentType(TEXT) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setBodyText(response, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } LOG.debug("End rendering property for request: {}", requestContext); }
private String getRenderedJSON(ProcessorResult result) throws ODataException { LOG.debug("JSON found as the content type. JSON Renderer will be used to render the result data"); JsonRenderer renderer = new JsonRenderer(); ODataResponse.Builder builder = new ODataResponse.Builder() .setStatus(result.getStatus()); renderer.render(result.getRequestContext(), result.getQueryResult(), builder); try { // pretty print ObjectMapper objectMapper = new ObjectMapper(); Object jsonObject = objectMapper.readValue(builder.build().getBodyText(StandardCharsets.UTF_8.name()), Object.class); return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject); } catch (IOException ex) { throw new ODataBatchRendererException("Unable to pretty print following json data"); } }
@Override public void render(ODataRequestContext requestContext, QueryResult data, ODataResponse.Builder responseBuilder) throws ODataException { LOG.debug("Start rendering service document for request: {}", requestContext); XMLServiceDocumentWriter writer = new XMLServiceDocumentWriter(requestContext.getUri(), requestContext.getEntityDataModel()); String serviceDocument = writer.buildServiceDocument(); try { responseBuilder .setContentType(XML) .setHeader("OData-Version", ODATA_VERSION_HEADER) .setBodyText(serviceDocument, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new ODataSystemException(e); } LOG.debug("End rendering service document for request: {}", requestContext); }