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

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

Introduction

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

Prototype

public JsonFactory() 

Source Link

Document

Default constructor used to create factory instances.

Usage

From source file:org.hawkular.bus.common.AbstractMessage.java

/**
 * Convenience static method that reads a JSON string from the given stream and converts the JSON
 * string to a particular message object. The input stream will remain open so the caller can
 * stream any extra data that might appear after it.
 *
 * Because of the way the JSON parser works, some extra data might have been read from the stream
 * that wasn't part of the JSON message but was part of the extra data that came with it. Because of this,
 * the caller should no longer use the given stream but instead read the extra data via the returned
 * object (see {@link BasicMessageWithExtraData#getBinaryData()}) since it will handle this condition
 * properly.// ww  w.j ava2s  . co m
 *
 * @param in input stream that has a JSON string at the head.
 * @param clazz the class whose instance is represented by the JSON string
 *
 * @return a POJO that contains a message object that was represented by the JSON string found
 *         in the stream. This returned POJO will also contain a {@link BinaryData} object that you
 *         can use to stream any additional data that came in the given input stream.
 */
public static <T extends BasicMessage> BasicMessageWithExtraData<T> fromJSON(InputStream in, Class<T> clazz) {
    final T obj;
    final byte[] remainder;
    try (JsonParser parser = new JsonFactory().configure(Feature.AUTO_CLOSE_SOURCE, false).createParser(in)) {
        Method buildObjectMapperForDeserializationMethod = findBuildObjectMapperForDeserializationMethod(clazz);

        final ObjectMapper mapper = (ObjectMapper) buildObjectMapperForDeserializationMethod.invoke(null);
        if (FailOnUnknownProperties.class.isAssignableFrom(clazz)) {
            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
        }

        obj = mapper.readValue(parser, clazz);
        final ByteArrayOutputStream remainderStream = new ByteArrayOutputStream();
        final int released = parser.releaseBuffered(remainderStream);
        remainder = (released > 0) ? remainderStream.toByteArray() : new byte[0];
    } catch (Exception e) {
        throw new IllegalArgumentException("Stream cannot be converted to JSON object of type [" + clazz + "]",
                e);
    }
    return new BasicMessageWithExtraData<T>(obj, new BinaryData(remainder, in));
}

From source file:net.opentsdb.contrib.tsquare.web.controller.ExtendedApiController.java

@RequestMapping(value = "/grep", method = RequestMethod.GET)
public void grep(@RequestParam(required = false, defaultValue = "") String type,
        @RequestParam(required = false, defaultValue = "wildcard") String method,
        @RequestParam(required = true) String q, final HttpServletResponse servletResponse) throws IOException {

    if (log.isInfoEnabled()) {
        log.info("Suggest {} using {} expression: {}", type, method, q);
    }/*from   w  w w .j  a v  a2 s .c  om*/

    // Do we have a valid type? Note that an empty "type" is valid.
    if (!Strings.isNullOrEmpty(type)) {
        Preconditions.checkArgument(getTsdbManager().getKnownUidKinds().contains(type), "Unknown type: %s",
                type);
    }

    // We can only query hbase using regex, so convert a wildcard query into
    // a regex if necessary.
    final String regex;
    if ("wildcard".equalsIgnoreCase(method)) {
        regex = TsWebUtils.wildcardToRegex(q);
        log.debug("Converted wildcard expression {} to regex: {}", q, regex);
    } else {
        regex = q;
    }

    final UidQuery query = getTsdbManager().newUidQuery();
    query.setRegex(regex);

    if (Strings.isNullOrEmpty(type)) {
        query.includeAllKinds();
    } else {
        query.includeKind(type);
    }

    servletResponse.setContentType("application/json");
    final OutputStream stream = servletResponse.getOutputStream();
    final JsonGenerator json = new JsonFactory().createJsonGenerator(stream);

    try {
        json.writeStartArray();

        query.run(new QueryCallback<Uid>() {
            @Override
            public boolean onResult(final Uid resultObject) {
                try {
                    json.writeString(resultObject.getName());
                    return true;
                } catch (IOException e) {
                    throw new IllegalArgumentException("Unable to serialize " + resultObject + " to JSON", e);
                }
            }
        });

        json.writeEndArray();
        json.flush();
    } finally {
        Closeables.close(stream, false);
    }
}

From source file:io.mesosphere.mesos.frameworks.cassandra.scheduler.api.AbstractApiControllerTest.java

@NotNull
protected Tuple2<Integer, JsonNode> fetchJson(final String rel, final boolean post) throws Exception {
    final JsonFactory factory = new JsonFactory();
    final HttpURLConnection conn = (HttpURLConnection) resolve(rel).toURL().openConnection();
    try {//from w  w  w.  j  ava 2 s. co  m
        conn.setRequestMethod(post ? "POST" : "GET");
        conn.setRequestProperty("Accept", "application/json");
        conn.connect();

        final int responseCode = conn.getResponseCode();

        InputStream in;
        try {
            in = conn.getInputStream();
        } catch (final IOException e) {
            in = conn.getErrorStream();
        }
        if (in == null) {
            return Tuple2.tuple2(responseCode, (JsonNode) MissingNode.getInstance());
        }

        assertEquals("application/json", conn.getHeaderField("Content-Type"));

        try {
            final ObjectMapper om = new ObjectMapper();
            return Tuple2.tuple2(responseCode, om.reader().with(factory).readTree(in));
        } finally {
            in.close();
        }
    } finally {
        conn.disconnect();
    }
}

From source file:KV78Tester.java

public String[] parseLines(BufferedReader in) throws Exception {
    JsonFactory f = new JsonFactory();
    JsonParser jp = f.createJsonParser(in);
    ArrayList<String> lines = new ArrayList<String>();
    jp.nextToken();//from   w  w  w  . jav a 2 s . co m
    while (jp.nextToken() != JsonToken.END_OBJECT) {
        String line = jp.getCurrentName();
        lines.add(line);
        jp.nextToken();
    }
    jp.close();
    in.close();
    return lines.toArray(new String[lines.size()]);
}

From source file:org.apache.lucene.server.handlers.BulkUpdateDocumentsHandler.java

@Override
public String handleStreamed(Reader reader, Map<String, List<String>> params) throws Exception {

    JsonFactory jfactory = new JsonFactory();

    JsonParser parser = jfactory.createJsonParser(reader);

    if (parser.nextToken() != JsonToken.START_OBJECT) {
        throw new IllegalArgumentException("expected JSON object");
    }//from   w w w.  j a va2  s . c o m
    if (parser.nextToken() != JsonToken.FIELD_NAME) {
        throw new IllegalArgumentException("expected indexName first");
    }
    if (!parser.getText().equals("indexName")) {
        throw new IllegalArgumentException("expected indexName first");
    }
    if (parser.nextToken() != JsonToken.VALUE_STRING) {
        throw new IllegalArgumentException("indexName should be string");
    }

    IndexState indexState = globalState.get(parser.getText());
    indexState.verifyStarted(null);
    if (parser.nextToken() != JsonToken.FIELD_NAME) {
        throw new IllegalArgumentException("expected documents next");
    }
    if (!parser.getText().equals("documents")) {
        throw new IllegalArgumentException("expected documents after indexName");
    }

    if (parser.nextToken() != JsonToken.START_ARRAY) {
        throw new IllegalArgumentException("documents should be a list");
    }
    ShardState shardState = indexState.getShard(0);

    int count = 0;
    IndexingContext ctx = new IndexingContext();

    AddDocumentHandler addDocHandler = (AddDocumentHandler) globalState.getHandler("addDocument");

    // Parse as many doc blocks as there are:
    while (true) {

        List<Document> children = null;
        Document parent = null;
        Term updateTerm = null;

        JsonToken token = parser.nextToken();
        if (token == JsonToken.END_ARRAY) {
            break;
        }
        if (token != JsonToken.START_OBJECT) {
            throw new IllegalArgumentException("expected object");
        }

        // Parse term + parent + children for this one doc block:
        while (true) {
            token = parser.nextToken();
            if (token == JsonToken.END_OBJECT) {
                // Done with parent + child in this block
                break;
            }
            if (token != JsonToken.FIELD_NAME) {
                throw new IllegalArgumentException("missing field name: " + token);
            }
            String f = parser.getText();
            if (f.equals("term")) {
                if (parser.nextToken() != JsonToken.START_OBJECT) {
                    throw new IllegalArgumentException("missing object");
                }

                // TODO: allow field to be specified only once, then
                // only text per document

                String field = null, term = null;

                while (parser.nextToken() != JsonToken.END_OBJECT) {
                    String f2 = parser.getText();
                    if (f2.equals("field")) {
                        if (parser.nextToken() != JsonToken.VALUE_STRING) {
                            throw new IllegalArgumentException("missing string value");
                        }
                        field = parser.getText();
                        // Ensure field is valid:
                        indexState.getField(field);
                    } else if (f2.equals("term")) {
                        if (parser.nextToken() != JsonToken.VALUE_STRING) {
                            throw new IllegalArgumentException("missing string value");
                        }
                        term = parser.getText();
                    } else {
                        throw new IllegalArgumentException("unexpected field " + f);
                    }
                }
                updateTerm = new Term(field, term);
            } else if (f.equals("children")) {
                token = parser.nextToken();
                if (token != JsonToken.START_ARRAY) {
                    throw new IllegalArgumentException("expected array for children");
                }

                children = new ArrayList<Document>();

                // Parse each child:
                while (true) {
                    Document doc = addDocHandler.parseDocument(indexState, parser);
                    if (doc == null) {
                        break;
                    }
                    children.add(doc);
                }
            } else if (f.equals("parent")) {
                parent = addDocHandler.parseDocument(indexState, parser);
            } else {
                throw new IllegalArgumentException("unrecognized field name \"" + f + "\"");
            }
        }

        if (parent == null) {
            throw new IllegalArgumentException("missing parent");
        }
        if (children == null) {
            throw new IllegalArgumentException("missing children");
        }

        // Parent is last:
        children.add(parent);

        globalState.submitIndexingTask(shardState.getAddDocumentsJob(count, updateTerm, children, ctx));
        count++;
    }

    // nocommit this is ... lameish:
    while (true) {
        if (ctx.addCount.get() == count) {
            break;
        }
        Thread.sleep(1);
    }

    Throwable t = ctx.getError();
    if (t != null) {
        IOUtils.reThrow(t);
    }

    JSONObject o = new JSONObject();
    o.put("indexGen", shardState.writer.getMaxCompletedSequenceNumber());
    o.put("indexedDocumentBlockCount", count);

    return o.toString();
}

From source file:net.troja.eve.crest.CrestDataProcessor.java

private <T> String processData(final CrestApiProcessor<T> processor, final CrestContainer<T> container,
        final String data) {
    String next = null;/*  w ww .  j  a v a  2s.  c  o m*/
    try {
        final JsonFactory parserFactory = new JsonFactory();
        final JsonParser jsonParser = parserFactory.createParser(data);
        jsonParser.nextToken();
        while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
            final String fieldname = jsonParser.getCurrentName();
            jsonParser.nextToken();
            switch (fieldname) {
            case "totalCount":
                container.setTotalCount(jsonParser.getIntValue());
                break;
            case "pageCount":
                container.setPageCount(jsonParser.getIntValue());
                break;
            case "items":
                processItems(processor, container, jsonParser);
                break;
            case "next":
                next = processNext(jsonParser);
                break;
            default:
                break;
            }
        }
    } catch (final IOException e) {
        if (LOGGER.isWarnEnabled()) {
            LOGGER.warn("Problems while parsing json data: " + e.getMessage(), e);
        }
    }
    return next;
}

From source file:com.vmware.bdd.cli.commands.CommandsUtils.java

public static void prettyJsonOutput(Object object, String fileName) throws Exception {
    OutputStream out = null;// ww w.ja v a 2 s. co m
    try {
        if (fileName != null) {
            out = new FileOutputStream(fileName);
        } else {
            out = System.out;
        }
        JsonFactory factory = new JsonFactory();
        JsonGenerator generator = factory.createJsonGenerator(out);
        ObjectMapper mapper = getMapper();
        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        generator.setCodec(mapper);
        DefaultPrettyPrinter prettyPrinter = new DefaultPrettyPrinter();
        DefaultPrettyPrinter.Indenter indenter = new DefaultPrettyPrinter.Lf2SpacesIndenter();
        prettyPrinter.indentArraysWith(indenter);
        generator.setPrettyPrinter(prettyPrinter);
        generator.writeObject(object);
        writeEndingMsgToScreen(fileName);
    } finally {
        if (out != null && !(out instanceof PrintStream)) {
            out.close();
        }
    }
}

From source file:org.ojai.json.impl.JsonDocumentBuilder.java

private void initJsonGenerator(OutputStream out) {
    try {/* www .  j a  v  a2 s.co  m*/
        JsonFactory jFactory = new JsonFactory();
        jsonGenerator = jFactory.createGenerator(out, JsonEncoding.UTF8);
        ctxStack = new Stack<ContainerContext>();
        currentContext = ContainerContext.NULL;
        checkContext = true;
        setJsonOptions(JsonOptions.WITH_TAGS);
    } catch (IOException ie) {
        throw transformIOException(ie);
    }
}

From source file:com.microsoft.rest.serializer.FlatteningDeserializer.java

@SuppressWarnings("unchecked")
@Override/*from  w w  w.java  2  s  .com*/
public Object deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
    JsonNode root = mapper.readTree(jp);
    final Class<?> tClass = this.defaultDeserializer.handledType();
    for (Field field : tClass.getDeclaredFields()) {
        JsonNode node = root;
        JsonProperty property = field.getAnnotation(JsonProperty.class);
        if (property != null) {
            String value = property.value();
            if (value.matches(".+[^\\\\]\\..+")) {
                String[] values = value.split("((?<!\\\\))\\.");
                for (String val : values) {
                    val = val.replace("\\.", ".");
                    node = node.get(val);
                    if (node == null) {
                        break;
                    }
                }
                ((ObjectNode) root).put(value, node);
            }
        }
    }
    JsonParser parser = new JsonFactory().createParser(root.toString());
    parser.nextToken();
    return defaultDeserializer.deserialize(parser, ctxt);
}

From source file:com.adobe.communities.ugc.migration.importer.ScoresImportServlet.java

/**
 * The post operation accepts a json file, parses it and applies the profile scores to local profiles
 * @param request - the request/*from  ww  w . j av  a 2 s . c om*/
 * @param response - the response
 * @throws javax.servlet.ServletException
 * @throws java.io.IOException
 */
protected void doPost(final SlingHttpServletRequest request, final SlingHttpServletResponse response)
        throws ServletException, IOException {

    final ResourceResolver resolver = request.getResourceResolver();

    UGCImportHelper.checkUserPrivileges(resolver, rrf);

    final RequestParameter[] fileRequestParameters = request.getRequestParameters("file");
    if (fileRequestParameters != null && fileRequestParameters.length > 0
            && !fileRequestParameters[0].isFormField()
            && fileRequestParameters[0].getFileName().endsWith(".json")) {
        final InputStream inputStream = fileRequestParameters[0].getInputStream();
        final JsonParser jsonParser = new JsonFactory().createParser(inputStream);
        JsonToken token = jsonParser.nextToken(); // get the first token
        if (token.equals(JsonToken.START_OBJECT)) {
            try {
                final UserPropertiesManager userManager = userPropertiesService
                        .createUserPropertiesManager(resolver);
                importFile(jsonParser, userManager, resolver);
            } catch (RepositoryException e) {
                throw new ServletException("Unable to communicate with Jcr repository", e);
            } catch (final Exception e) {
                throw new ServletException("Problem!", e);
            }
        } else {
            throw new ServletException("Expected a start object token, got " + token);
        }
    } else {
        throw new ServletException("Expected to get a json file in post request");
    }
}