Example usage for com.fasterxml.jackson.core JsonFactory createJsonGenerator

List of usage examples for com.fasterxml.jackson.core JsonFactory createJsonGenerator

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonFactory createJsonGenerator.

Prototype

@Deprecated
public JsonGenerator createJsonGenerator(OutputStream out) throws IOException 

Source Link

Document

Convenience method for constructing generator that uses default encoding of the format (UTF-8 for JSON and most other data formats).

Usage

From source file:com.github.jknack.handlebars.Jackson2Helper.java

@Override
public CharSequence apply(final Object context, final Options options) throws IOException {
    if (context == null) {
        return options.hash("default", "");
    }//from   ww  w  .j a  v  a 2  s  .  c o m
    String viewName = options.hash("view", "");
    JsonGenerator generator = null;
    try {
        final ObjectWriter writer;
        // do we need to use a view?
        if (!isEmpty(viewName)) {
            Class<?> viewClass = alias.get(viewName);
            if (viewClass == null) {
                viewClass = getClass().getClassLoader().loadClass(viewName);
            }
            writer = mapper.writerWithView(viewClass);
        } else {
            writer = mapper.writer();
        }
        JsonFactory jsonFactory = mapper.getFactory();

        SegmentedStringWriter output = new SegmentedStringWriter(jsonFactory._getBufferRecycler());

        // creates a json generator.
        generator = jsonFactory.createJsonGenerator(output);

        Boolean escapeHtml = options.hash("escapeHTML", Boolean.FALSE);
        // do we need to escape html?
        if (escapeHtml) {
            generator.setCharacterEscapes(new HtmlEscapes());
        }

        Boolean pretty = options.hash("pretty", Boolean.FALSE);

        // write the JSON output.
        if (pretty) {
            writer.withDefaultPrettyPrinter().writeValue(generator, context);
        } else {
            writer.writeValue(generator, context);
        }

        generator.close();

        return new Handlebars.SafeString(output.getAndClear());
    } catch (ClassNotFoundException ex) {
        throw new IllegalArgumentException(viewName, ex);
    } finally {
        if (generator != null && !generator.isClosed()) {
            generator.close();
        }
    }
}

From source file:org.openiot.security.oauth.OAuth20PermissionController.java

@Override
protected ModelAndView handleRequestInternal(final HttpServletRequest request,
        final HttpServletResponse response) throws Exception {

    final String clientId = request.getParameter(OAuthConstants.CLIENT_ID);
    log.debug("clientId : {}", clientId);
    final String accessToken = request.getParameter(OAuthConstants.ACCESS_TOKEN);
    log.debug("accessToken : {}", accessToken);

    final String callerClientId = request.getParameter("caller_client_id");
    log.debug("callerClientId : {}", callerClientId);
    final String callerAccessToken = request.getParameter("caller_access_token");
    log.debug("callerAccessToken : {}", callerAccessToken);

    final JsonFactory jsonFactory = new JsonFactory();
    final JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(response.getWriter());

    response.setContentType("application/json");

    // accessToken is required
    if (StringUtils.isBlank(accessToken)) {
        log.error("missing accessToken");
        jsonGenerator.writeStartObject();
        jsonGenerator.writeStringField("error", OAuthConstants.MISSING_ACCESS_TOKEN);
        jsonGenerator.writeEndObject();//from  ww w  . j a  v a  2  s  .  c  om
        jsonGenerator.close();
        response.flushBuffer();
        return null;
    }

    // caller accessToken is required
    if (StringUtils.isBlank(callerAccessToken)) {
        log.error("missing caller accessToken");
        jsonGenerator.writeStartObject();
        jsonGenerator.writeStringField("error", "missing_callerAccessToken");
        jsonGenerator.writeEndObject();
        jsonGenerator.close();
        response.flushBuffer();
        return null;
    }

    // clientId is required
    if (StringUtils.isBlank(clientId)) {
        log.error("missing clientId");
        jsonGenerator.writeStartObject();
        jsonGenerator.writeStringField("error", MISSING_CLIENT_ID);
        jsonGenerator.writeEndObject();
        jsonGenerator.close();
        response.flushBuffer();
        return null;
    }

    // caller clientId is required
    if (StringUtils.isBlank(callerClientId)) {
        log.error("missing clientId");
        jsonGenerator.writeStartObject();
        jsonGenerator.writeStringField("error", "missing_callerClientId");
        jsonGenerator.writeEndObject();
        jsonGenerator.close();
        response.flushBuffer();
        return null;
    }

    // get ticket granting ticket
    final TicketGrantingTicket ticketGrantingTicket = (TicketGrantingTicket) this.ticketRegistry
            .getTicket(accessToken);
    if (ticketGrantingTicket == null || ticketGrantingTicket.isExpired()) {
        log.error("expired accessToken : {}", accessToken);
        jsonGenerator.writeStartObject();
        jsonGenerator.writeStringField("error", OAuthConstants.EXPIRED_ACCESS_TOKEN);
        jsonGenerator.writeEndObject();
        jsonGenerator.close();
        response.flushBuffer();
        return null;
    }

    // get ticket granting ticket for the caller
    final TicketGrantingTicket callerTicketGrantingTicket = (TicketGrantingTicket) this.ticketRegistry
            .getTicket(callerAccessToken);
    if (callerTicketGrantingTicket == null || callerTicketGrantingTicket.isExpired()) {
        log.error("expired accessToken : {}", callerAccessToken);
        jsonGenerator.writeStartObject();
        jsonGenerator.writeStringField("error", OAuthConstants.EXPIRED_ACCESS_TOKEN + "_for_caller");
        jsonGenerator.writeEndObject();
        jsonGenerator.close();
        response.flushBuffer();
        return null;
    }

    // name of the CAS service
    final Collection<RegisteredService> services = servicesManager.getAllServices();
    RegisteredService service = null;
    for (final RegisteredService aService : services) {
        if (StringUtils.equals(aService.getName(), clientId)) {
            service = aService;
            break;
        }
    }

    if (service == null) {
        log.error("nonexistent clientId : {}", clientId);
        jsonGenerator.writeStartObject();
        jsonGenerator.writeStringField("error", NONEXISTENT_CLIENT_ID);
        jsonGenerator.writeEndObject();
        jsonGenerator.close();
        response.flushBuffer();
        return null;
    }

    // TODO: check if the TGT is granted to the client?!
    //      final TicketGrantingTicket rawTicket = ((AbstractDistributedTicketRegistry.TicketGrantingTicketDelegator)ticketGrantingTicket).getTicket();
    //      final Field servicesField = rawTicket.getClass().getDeclaredField("services");
    //      servicesField.setAccessible(true);
    //      HashMap<String, Service> servicesMap = new HashMap<String, Service>();
    //      servicesMap = (HashMap<String, Service>) servicesField.get(rawTicket);
    //      log.error("ServiceMaps is empty ? {}", servicesMap.isEmpty());
    //      for(Map.Entry<String, Service> entry : servicesMap.entrySet()){
    //         AbstractWebApplicationService webAppService = (AbstractWebApplicationService) entry.getValue();
    //         log.error("Service for ticket {} is {}", rawTicket.getId(), webAppService.getId());
    //      }
    //      if (!servicesMap.containsKey(service.getId()) || !servicesMap.get(service.getId()).equals(service)) {
    //         log.error("Ticket is not granted to client : {}", clientId);
    //         jsonGenerator.writeStartObject();
    //         jsonGenerator.writeStringField("error", TICKET_NOT_GRANTED);
    //         jsonGenerator.writeEndObject();
    //         jsonGenerator.close();
    //         response.flushBuffer();
    //         return null;
    //      }

    // name of the CAS service for caller
    RegisteredService callerService = null;
    for (final RegisteredService aService : services) {
        if (StringUtils.equals(aService.getName(), callerClientId)) {
            callerService = aService;
            break;
        }
    }

    if (callerService == null) {
        log.error("nonexistent caller clientId : {}", callerClientId);
        jsonGenerator.writeStartObject();
        jsonGenerator.writeStringField("error", NONEXISTENT_CLIENT_ID + "for_caller");
        jsonGenerator.writeEndObject();
        jsonGenerator.close();
        response.flushBuffer();
        return null;
    }

    final Principal principal = ticketGrantingTicket.getAuthentication().getPrincipal();
    final Map<String, Set<String>> permissions = extractPermissions(callerService.getId(), principal.getId());

    jsonGenerator.writeStartObject();
    jsonGenerator.writeStringField(CasWrapperProfile.ID, principal.getId());

    jsonGenerator.writeArrayFieldStart("role_permissions");

    for (final String roleName : permissions.keySet()) {
        jsonGenerator.writeStartObject();
        jsonGenerator.writeArrayFieldStart(roleName);

        for (final String permission : permissions.get(roleName))
            jsonGenerator.writeString(permission);

        jsonGenerator.writeEndArray();
        jsonGenerator.writeEndObject();
    }

    jsonGenerator.writeEndArray();
    jsonGenerator.writeEndObject();
    jsonGenerator.close();
    response.flushBuffer();

    return null;
}

From source file:org.openiot.security.oauth.lsm.LSMOAuth20PermissionController.java

@Override
protected ModelAndView handleRequestInternal(final HttpServletRequest request,
        final HttpServletResponse response) throws Exception {

    final String clientId = request.getParameter(OAuthConstants.CLIENT_ID);
    log.debug("clientId : {}", clientId);
    final String accessToken = request.getParameter(OAuthConstants.ACCESS_TOKEN);
    log.debug("accessToken : {}", accessToken);

    final String callerClientId = request.getParameter(CALLER_CLIENT_ID);
    log.debug("callerClientId : {}", callerClientId);
    final String callerAccessToken = request.getParameter(CALLER_ACCESS_TOKEN);
    log.debug("callerAccessToken : {}", callerAccessToken);

    final String userClientId = request.getParameter(USER_CLIENT_ID);
    log.debug("userClientId : {}", userClientId);

    final String userAccessToken = request.getParameter(USER_ACCESS_TOKEN);
    log.debug("userAccessToken : {}", userAccessToken);

    final String targetClientId = request.getParameter(TARGET_CLIENT_ID);
    log.debug("targetClientId : {}", targetClientId);

    response.setContentType("application/json");

    // accessToken is required
    if (StringUtils.isBlank(accessToken)) {
        log.error("missing accessToken");
        writeErrorMessage(response, OAuthConstants.MISSING_ACCESS_TOKEN);
        return null;
    }// w w w.  jav a2  s .  co m

    // clientId is required
    if (StringUtils.isBlank(clientId)) {
        log.error("missing clientId");
        writeErrorMessage(response, MISSING_CLIENT_ID);
        return null;
    }

    // userToken is required
    if (StringUtils.isBlank(userAccessToken)) {
        log.error("missing user accessToken");
        writeErrorMessage(response, "missing_userAccessToken");
        return null;
    }

    // target clientId is required
    if (StringUtils.isBlank(targetClientId)) {
        log.error("missing target clientId");
        writeErrorMessage(response, MISSING_CLIENT_ID + "for_target");
        return null;
    }

    // caller accessToken and clientId are required if one of them is provided
    if (!StringUtils.isBlank(callerAccessToken) || !StringUtils.isBlank(callerClientId)) {
        if (StringUtils.isBlank(callerAccessToken)) {
            log.error("missing caller accessToken");
            writeErrorMessage(response, "missing_callerAccessToken");
            return null;
        } else if (StringUtils.isBlank(callerClientId)) {
            log.error("missing caller clientId");
            writeErrorMessage(response, "missing_callerClientId");
            return null;
        }
    }

    // get ticket granting ticket
    final TicketGrantingTicket ticketGrantingTicket = (TicketGrantingTicket) this.ticketRegistry
            .getTicket(accessToken);
    if (ticketGrantingTicket == null || ticketGrantingTicket.isExpired()) {
        log.error("expired accessToken : {}", accessToken);
        writeErrorMessage(response, OAuthConstants.EXPIRED_ACCESS_TOKEN);
        return null;
    }

    // get ticket granting ticket for the user
    final TicketGrantingTicket userTicketGrantingTicket;
    if (StringUtils.equals(accessToken, userAccessToken))
        userTicketGrantingTicket = ticketGrantingTicket;
    else {
        userTicketGrantingTicket = (TicketGrantingTicket) this.ticketRegistry.getTicket(userAccessToken);
        if (userTicketGrantingTicket == null || userTicketGrantingTicket.isExpired()) {
            log.error("expired user accessToken : {}", userAccessToken);
            writeErrorMessage(response, OAuthConstants.EXPIRED_ACCESS_TOKEN + "_for_user");
            return null;
        }
    }

    // Retrieve all registered services
    final Collection<RegisteredService> services = servicesManager.getAllServices();

    // If called accessToken and clientId are provided, check their validity
    if (!StringUtils.isBlank(callerAccessToken)) {
        // get ticket granting ticket for the caller
        final TicketGrantingTicket callerTicketGrantingTicket = (TicketGrantingTicket) this.ticketRegistry
                .getTicket(callerAccessToken);
        if (callerTicketGrantingTicket == null || callerTicketGrantingTicket.isExpired()) {
            log.error("expired accessToken : {}", callerAccessToken);
            writeErrorMessage(response, OAuthConstants.EXPIRED_ACCESS_TOKEN + "_for_caller");
            return null;
        }

        // name of the CAS service for caller
        RegisteredService callerService = null;
        for (final RegisteredService aService : services) {
            if (StringUtils.equals(aService.getName(), callerClientId)) {
                callerService = aService;
                break;
            }
        }

        if (callerService == null) {
            log.error("nonexistent caller clientId : {}", callerClientId);
            writeErrorMessage(response, NONEXISTENT_CLIENT_ID + "for_caller");
            return null;
        }
    }

    // if user clienId is provided, check its validity
    if (!StringUtils.isBlank(userClientId)) {
        RegisteredService userService = null;
        for (final RegisteredService aService : services) {
            if (StringUtils.equals(aService.getName(), userClientId)) {
                userService = aService;
                break;
            }
        }

        if (userService == null) {
            log.error("nonexistent clientId : {}", userClientId);
            writeErrorMessage(response, NONEXISTENT_CLIENT_ID + "_for_user");
            return null;
        }
    }

    // check validity of clientId
    RegisteredService service = null;
    for (final RegisteredService aService : services) {
        if (StringUtils.equals(aService.getName(), clientId)) {
            service = aService;
            break;
        }
    }

    if (service == null) {
        log.error("nonexistent clientId : {}", clientId);
        writeErrorMessage(response, NONEXISTENT_CLIENT_ID);
        return null;
    }

    // check validity of target clientId
    RegisteredService targetService = null;
    for (final RegisteredService aService : services) {
        if (StringUtils.equals(aService.getName(), targetClientId)) {
            targetService = aService;
            break;
        }
    }

    if (targetService == null) {
        log.error("nonexistent target clientId : {}", clientId);
        writeErrorMessage(response, NONEXISTENT_CLIENT_ID + "for_target");
        return null;
    }

    // TODO: check if the TGT is granted to the client?!
    // final TicketGrantingTicket rawTicket =
    // ((AbstractDistributedTicketRegistry.TicketGrantingTicketDelegator)ticketGrantingTicket).getTicket();
    // final Field servicesField =
    // rawTicket.getClass().getDeclaredField("services");
    // servicesField.setAccessible(true);
    // HashMap<String, Service> servicesMap = new HashMap<String,
    // Service>();
    // servicesMap = (HashMap<String, Service>)
    // servicesField.get(rawTicket);
    // log.error("ServiceMaps is empty ? {}", servicesMap.isEmpty());
    // for(Map.Entry<String, Service> entry : servicesMap.entrySet()){
    // AbstractWebApplicationService webAppService =
    // (AbstractWebApplicationService) entry.getValue();
    // log.error("Service for ticket {} is {}", rawTicket.getId(),
    // webAppService.getId());
    // }
    // if (!servicesMap.containsKey(service.getId()) ||
    // !servicesMap.get(service.getId()).equals(service)) {
    // log.error("Ticket is not granted to client : {}", clientId);
    // jsonGenerator.writeStartObject();
    // jsonGenerator.writeStringField("error", TICKET_NOT_GRANTED);
    // jsonGenerator.writeEndObject();
    // jsonGenerator.close();
    // response.flushBuffer();
    // return null;
    // }

    // Check if the caller has permission for retrieving permission information
    if (!targetClientId.equals(clientId)) {
        final Principal principal = ticketGrantingTicket.getAuthentication().getPrincipal();
        if (!isPermitted(principal.getId(), targetService.getId())) {
            log.error("[{} from {}] is not permitted to retrieve permission information on [{}]",
                    principal.getId(), clientId, targetClientId);
            writeErrorMessage(response, "permission_denied");
            return null;
        }
    }

    final JsonFactory jsonFactory = new JsonFactory();
    final JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(response.getWriter());

    final Principal principal = userTicketGrantingTicket.getAuthentication().getPrincipal();
    final Map<String, Set<String>> permissions = extractPermissions(targetService.getId(), principal.getId());

    jsonGenerator.writeStartObject();
    jsonGenerator.writeStringField(CasWrapperProfile.ID, principal.getId());

    jsonGenerator.writeArrayFieldStart("role_permissions");

    for (final String roleName : permissions.keySet()) {
        jsonGenerator.writeStartObject();
        jsonGenerator.writeArrayFieldStart(roleName);

        for (final String permission : permissions.get(roleName))
            jsonGenerator.writeString(permission);

        jsonGenerator.writeEndArray();
        jsonGenerator.writeEndObject();
    }

    jsonGenerator.writeEndArray();
    jsonGenerator.writeEndObject();
    jsonGenerator.close();
    response.flushBuffer();

    return null;
}

From source file:org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient.java

String toJsonString(Object object) throws IOException {
    JsonFactory jsonFactory = httpClient.createJsonFactory();
    StringWriter writer = new StringWriter();
    JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(writer);
    jsonGenerator.useDefaultPrettyPrinter();
    jsonGenerator.writeObject(object);//  ww w . j a va 2s .c o  m
    String result = writer.getBuffer().toString();
    return result;
}

From source file:org.jmxtrans.embedded.output.CopperEggWriter.java

public String write_tostring(JsonNode json) {
    ObjectMapper mapper = new ObjectMapper();
    StringWriter out = new StringWriter();

    try {/*from   ww  w.  j  a va 2 s. c  o  m*/
        JsonFactory fac = new JsonFactory();
        JsonGenerator gen = fac.createJsonGenerator(out);

        // Now write:
        mapper.writeTree(gen, json);
        gen.flush();
        gen.close();
        return out.toString();
    } catch (Exception e) {
        exceptionCounter.incrementAndGet();
        logger.warn("Exception in write_tostring: " + e);
    }
    return (null);
}

From source file:com.buaa.cfs.conf.Configuration.java

/**
 * Writes out all the parameters and their properties (final and resource) to the given {@link Writer} The format of
 * the output would be { "properties" : [ {key1,value1,key1.isFinal,key1.resource}, {key2,value2,
 * key2.isFinal,key2.resource}... ] } It does not output the parameters of the configuration object which is loaded
 * from an input stream.// w w  w  .  ja va  2  s  .com
 *
 * @param out the Writer to write to
 *
 * @throws IOException
 */
public static void dumpConfiguration(Configuration config, Writer out) throws IOException {
    JsonFactory dumpFactory = new JsonFactory();
    JsonGenerator dumpGenerator = dumpFactory.createJsonGenerator(out);
    dumpGenerator.writeStartObject();
    dumpGenerator.writeFieldName("properties");
    dumpGenerator.writeStartArray();
    dumpGenerator.flush();
    synchronized (config) {
        for (Entry<Object, Object> item : config.getProps().entrySet()) {
            dumpGenerator.writeStartObject();
            dumpGenerator.writeStringField("key", (String) item.getKey());
            dumpGenerator.writeStringField("value", config.get((String) item.getKey()));
            dumpGenerator.writeBooleanField("isFinal", config.finalParameters.contains(item.getKey()));
            String[] resources = config.updatingResource.get(item.getKey());
            String resource = UNKNOWN_RESOURCE;
            if (resources != null && resources.length > 0) {
                resource = resources[0];
            }
            dumpGenerator.writeStringField("resource", resource);
            dumpGenerator.writeEndObject();
        }
    }
    dumpGenerator.writeEndArray();
    dumpGenerator.writeEndObject();
    dumpGenerator.flush();
}