/** * Deserialize the custom serialized PreResponse. * * @param preResponse Custom serialized PreResponse * * @return De-serialized PreResponse object * * @throws IOException in case of deserialization of ResponseContext fails */ public PreResponse deserialize(String preResponse) throws IOException { JsonNode serializedPreResponse = nonResponseContextMapper.readTree(preResponse); return new PreResponse( getResultSet(serializedPreResponse.get(RESULT_SET_KEY)), getResponseContext(serializedPreResponse.get(RESPONSE_CONTEXT_KEY)) ); }
/** * Constructor. * * @param preResponse PreResponse object to be serialized * @param responseContextMapper ObjectMapper instance with custom configuration to preserve the types */ public PreResponseSerializationProxy(PreResponse preResponse, ObjectMapper responseContextMapper) { this.resultSetSerializationProxy = new ResultSetSerializationProxy(preResponse.getResultSet()); this.responseContext = getSerializedResponseContext(preResponse.getResponseContext(), responseContextMapper); }
Optional<PaginationParameters> paginationParameters ) { ResponseContext responseContext = preResponse.getResponseContext(); .map(pageParams -> new AllPagesPagination<>(preResponse.getResultSet(), pageParams)) .map(page -> new PreResponse( new ResultSet(preResponse.getResultSet().getSchema(), page.getPageOfData()), addPaginationInfoToResponseContext(responseContext, uriInfo, page) ))
responseContext.put(REQUESTED_API_DIMENSION_FIELDS.getName(), requestedApiDimensionFields); responseEmitter.onNext(new PreResponse(resultSet, responseContext)); responseEmitter.onCompleted(); } catch (PageNotFoundException invalidPage) {
/** * Build complete response. * * @param preResponse PreResponse object which contains result set, response context and headers * @param apiRequest ApiRequest object which contains request related information * @param containerRequestContext The container for jersey request processing objects * * @return Completely built response with headers and result set */ public javax.ws.rs.core.Response buildResponse( PreResponse preResponse, ApiRequest apiRequest, ContainerRequestContext containerRequestContext ) { ResponseBuilder rspBuilder = createResponseBuilder( preResponse.getResultSet(), preResponse.getResponseContext(), apiRequest, containerRequestContext ); @SuppressWarnings("unchecked") MultivaluedMap<String, Object> headers = (MultivaluedMap<String, Object>) preResponse .getResponseContext() .get(HEADERS.getName()); //Headers are a multivalued map, and we want to add each element of each value to the builder. headers.entrySet().stream() .forEach(entry -> entry.getValue().forEach(value -> rspBuilder.header(entry.getKey(), value))); return rspBuilder.build(); }
return new PreResponse( new ResultSet( new ResultSetSchema(AllGranularity.INSTANCE, Collections.emptySet()), Collections.emptyList()
responseContext.put("requestedApiDimensionFields", new LinkedHashMap<>()); PreResponse preResponse = new PreResponse(resultSet, responseContext); preResponseStore.save("ticket1", preResponse); errorResponseContext.put("apiMetricColumnNames", apiMetricColumnNames); errorResponseContext.put("requestedApiDimensionFields", new HashMap<>()); PreResponse errorPresResponse = new PreResponse(resultSet, errorResponseContext); preResponseStore.save("errorPreResponse", errorPresResponse); results1.add(result3); ResultSet resultSet1 = new ResultSet(schema, results1); PreResponse preResponse1 = new PreResponse(resultSet1, responseContext); preResponseStore.save("ticket3p", preResponse1);
responseContext.put("requestedApiDimensionFields", new LinkedHashMap<>()); PreResponse preResponse = new PreResponse(resultSet, responseContext); preResponseStore.save("ticket1", preResponse); errorResponseContext.put("apiMetricColumnNames", apiMetricColumnNames); errorResponseContext.put("requestedApiDimensionFields", new HashMap<>()); PreResponse errorPresResponse = new PreResponse(resultSet, errorResponseContext); preResponseStore.save("errorPreResponse", errorPresResponse); results1.add(result3); ResultSet resultSet1 = new ResultSet(schema, results1); PreResponse preResponse1 = new PreResponse(resultSet1, responseContext); preResponseStore.save("ticket3p", preResponse1);