List of usage examples for com.fasterxml.jackson.core JsonFactory JsonFactory
public JsonFactory()
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"); } }