Example usage for com.fasterxml.jackson.databind ObjectWriter withView

List of usage examples for com.fasterxml.jackson.databind ObjectWriter withView

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind ObjectWriter withView.

Prototype

public ObjectWriter withView(Class<?> view) 

Source Link

Document

Method that will construct a new instance that uses specified serialization view for serialization (with null basically disables view processing)

Note that the method does NOT change state of this reader, but rather construct and returns a newly configured instance.

Usage

From source file:com.groupon.odo.controllers.BackupController.java

/**
 * Get all backup data//from ww w  .  j a v a  2 s .com
 *
 * @param model
 * @return
 * @throws Exception
 */
@SuppressWarnings("deprecation")
@RequestMapping(value = "/api/backup", method = RequestMethod.GET)
public @ResponseBody String getBackup(Model model, HttpServletResponse response) throws Exception {
    response.addHeader("Content-Disposition", "attachment; filename=backup.json");
    response.setContentType("application/json");

    Backup backup = BackupService.getInstance().getBackupData();
    ObjectMapper objectMapper = new ObjectMapper();
    ObjectWriter writer = objectMapper.writerWithDefaultPrettyPrinter();

    return writer.withView(ViewFilters.Default.class).writeValueAsString(backup);
}

From source file:com.groupon.odo.proxylib.models.History.java

public void setFormattedResponseData(String data) throws Exception {
    this.formattedResponseData = data;

    if (data != null && !data.equals("") && responseContentType != null
            && responseContentType.toLowerCase().indexOf("application/json") != -1) {
        // try to format it
        try {/*from   w w w  .  j a v  a2  s  . c o  m*/
            ObjectMapper objectMapper = new ObjectMapper();
            ObjectWriter writer = objectMapper.writerWithDefaultPrettyPrinter();
            Object json = objectMapper.readValue(data, Object.class);
            this.formattedResponseData = writer.withView(ViewFilters.Default.class).writeValueAsString(json);
        } catch (JsonParseException jpe) {
            // nothing to do here as this.formattedResponseData was already set to the appropriate data
        }
    }
}

From source file:com.groupon.odo.proxylib.models.History.java

public void setFormattedOriginalResponseData(String originalResponseData) throws Exception {
    this.formattedOriginalResponseData = originalResponseData;

    if (originalResponseData != null && !originalResponseData.equals("") && originalResponseContentType != null
            && originalResponseContentType.toLowerCase().indexOf("application/json") != -1) {
        try {//w  w w.  j  a  v a2 s  .  c  o  m
            // try to format it
            ObjectMapper objectMapper = new ObjectMapper();
            ObjectWriter writer = objectMapper.writerWithDefaultPrettyPrinter();
            Object json = objectMapper.readValue(originalResponseData, Object.class);
            this.formattedOriginalResponseData = writer.withView(ViewFilters.Default.class)
                    .writeValueAsString(json);
        } catch (JsonParseException jpe) {
            // nothing to do here as this.formattedResponseData was already set to the appropriate data
        }
    }
}

From source file:com.groupon.odo.controllers.BackupController.java

/**
 * API call to backup active overreides and active server group for a client
 * Can also backup entire odo configuration
 *
 * @param model/*from w  w w  .  j  a v a 2 s  . c o  m*/
 * @param response
 * @param profileID Id of profile to backup
 * @param clientUUID Client Id to backup
 * @param odoExport Flag to also include whole odo backup in client backpu
 * @return
 * @throws Exception
 */

@SuppressWarnings("deprecation")
@RequestMapping(value = "/api/backup/profile/{profileID}/{clientUUID}", method = RequestMethod.GET)
public @ResponseBody String getSingleProfileConfiguration(Model model, HttpServletResponse response,
        @PathVariable int profileID, @PathVariable String clientUUID,
        @RequestParam(value = "odoExport", defaultValue = "false") boolean odoExport) throws Exception {
    response.setContentType("application/json");

    ObjectMapper objectMapper = new ObjectMapper();
    ObjectWriter writer = objectMapper.writerWithDefaultPrettyPrinter();

    if (odoExport) {
        response.addHeader("Content-Disposition", "attachment; filename=Config_and_Profile_Backup.json");
        ConfigAndProfileBackup configAndProfileBackup = BackupService.getInstance()
                .getConfigAndProfileData(profileID, clientUUID);
        return writer.withView(ViewFilters.Default.class).writeValueAsString(configAndProfileBackup);
    } else {
        response.addHeader("Content-Disposition", "attachment; filename=Enabled_Endpoints.json");
        SingleProfileBackup singleProfileBackup = BackupService.getInstance().getProfileBackupData(profileID,
                clientUUID);
        return writer.withView(ViewFilters.Default.class).writeValueAsString(singleProfileBackup);
    }
}

From source file:com.basistech.rosette.api.HttpRosetteAPI.java

/**
 * Sends a POST request to Rosette API./*w ww .j a  v  a 2 s .c o  m*/
 * <p>
 * Returns a Response.
 *
 * @param urlStr Rosette API end point.
 * @param clazz  Response class
 * @return Response
 * @throws IOException
 */
private <T> T sendPostRequest(Object request, String urlStr, Class<T> clazz)
        throws IOException, URISyntaxException {
    ObjectWriter writer = mapper.writer().without(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
    boolean notPlainText = false;
    if (request instanceof DocumentRequest) {
        Object rawContent = ((DocumentRequest) request).getRawContent();
        if (rawContent instanceof String) {
            writer = writer.withView(DocumentRequestMixin.Views.Content.class);
        } else if (rawContent != null) {
            notPlainText = true;
        }
    } else if (request instanceof AdmRequest) {
        notPlainText = true;
    }

    URIBuilder uriBuilder = new URIBuilder(urlStr);

    if (AdmResponse.class.isAssignableFrom(clazz)) {
        //TODO: change output=rosette to Accept: model/vnd.rosette.annotated-data-model header
        uriBuilder.addParameter("output", "rosette");
    }

    final ObjectWriter finalWriter = writer;

    HttpPost post = new HttpPost(uriBuilder.build());
    for (Header header : additionalHeaders) {
        post.addHeader(header);
    }

    //TODO: add compression!
    if (notPlainText) {
        setupMultipartRequest((Request) request, finalWriter, post);
    } else {
        setupPlainRequest(request, finalWriter, post);
    }

    HttpRosetteAPIException lastException = null;
    int numRetries = this.failureRetries;
    while (numRetries-- > 0) {
        try (CloseableHttpResponse response = httpClient.execute(post)) {
            T resp = getResponse(response, clazz);
            Header ridHeader = response.getFirstHeader("X-RosetteAPI-DocumentRequest-Id");
            if (ridHeader != null && ridHeader.getValue() != null) {
                LOG.debug("DocumentRequest ID " + ridHeader.getValue());
            }
            if (resp instanceof Response) {
                responseHeadersToExtendedInformation((Response) resp, response);
            }
            return resp;
        } catch (HttpRosetteAPIException e) {
            // only 5xx errors are worthy retrying, others throw right away
            if (e.getHttpStatusCode() < 500) {
                throw e;
            } else {
                lastException = e;
            }
        }
    }
    throw lastException;
}

From source file:com.basistech.rosette.api.RosetteAPI.java

/**
 * Sends a POST request to Rosette API./* w  w w . ja  v a2s.c om*/
 * <p>
 * Returns a Response.
 *
 * @param urlStr Rosette API end point.
 * @param clazz  Response class
 * @return Response
 * @throws RosetteAPIException
 * @throws IOException
 */
private <T extends Response> T sendPostRequest(Object request, String urlStr, Class<T> clazz)
        throws RosetteAPIException, IOException {
    ObjectWriter writer = mapper.writer().without(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
    boolean notPlainText = false;
    if (request instanceof DocumentRequest) {
        Object rawContent = ((DocumentRequest) request).getRawContent();
        if (rawContent instanceof String) {
            writer = writer.withView(DocumentRequestMixin.Views.Content.class);
        } else if (rawContent != null) {
            notPlainText = true;
        }
    }
    final ObjectWriter finalWriter = writer;

    HttpPost post = new HttpPost(urlStr);
    for (Header header : additionalHeaders) {
        post.addHeader(header);
    }
    //TODO: add compression!
    if (notPlainText) {
        setupMultipartRequest((DocumentRequest) request, finalWriter, post);
    } else {
        setupPlainRequest(request, finalWriter, post);
    }

    RosetteAPIException lastException = null;
    int numRetries = this.failureRetries;
    while (numRetries-- > 0) {
        HttpResponse response = null;
        try {
            response = httpClient.execute(post);

            T resp = getResponse(response, clazz);
            Header ridHeader = response.getFirstHeader("X-RosetteAPI-DocumentRequest-Id");
            if (ridHeader != null && ridHeader.getValue() != null) {
                LOG.debug("DocumentRequest ID " + ridHeader.getValue());
            }
            responseHeadersToExtendedInformation(resp, response);
            return resp;
        } catch (RosetteAPIException e) {
            // only 5xx errors are worthy retrying, others throw right away
            if (e.getHttpStatusCode() < 500) {
                throw e;
            } else {
                lastException = e;
            }
        } finally {
            if (response != null) {
                if (response instanceof CloseableHttpResponse) {
                    ((CloseableHttpResponse) response).close();
                }
            }
        }
    }
    throw lastException;
}