List of usage examples for com.fasterxml.jackson.core JsonParser getTokenLocation
public abstract JsonLocation getTokenLocation();
From source file:com.reprezen.swagedit.model.NodeDeserializer.java
@Override public AbstractNode deserialize(JsonParser p, DeserializationContext context) throws IOException, JsonProcessingException { JsonLocation startLocation = p.getTokenLocation(); if (p.getCurrentToken() == JsonToken.FIELD_NAME) { p.nextToken();/*from w w w. j a v a 2 s .c om*/ } switch (p.getCurrentToken()) { case START_OBJECT: return deserializeObjectNode(p, context, startLocation); case START_ARRAY: return deserializeArrayNode(p, context, startLocation); default: return deserializeValueNode(p, context, startLocation); } }
From source file:org.apache.usergrid.chop.api.ProjectDeserializer.java
private void validate(JsonParser jsonParser, String input, String expected) throws JsonProcessingException { if (!input.equals(expected)) { throw new JsonParseException("Unexpected token: " + input, jsonParser.getTokenLocation()); }/* w ww . j ava 2 s.c o m*/ }
From source file:org.hawkular.alerts.rest.json.LinkDeserializer.java
private void validateText(JsonParser jsonParser, String input) throws JsonProcessingException { Matcher m = textPattern.matcher(input); if (!m.matches()) { throw new JsonParseException("Unexpected token: " + input, jsonParser.getTokenLocation()); }/* w ww . ja v a 2 s . c o m*/ }
From source file:com.addthis.codec.jackson.CodecBeanDeserializer.java
@Override public Object deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonLocation currentLocation = jp.getTokenLocation(); JsonToken t = jp.getCurrentToken();//from ww w. j a v a2 s . co m try { if (t == JsonToken.START_OBJECT) { ObjectNode objectNode = jp.readValueAsTree(); handleDefaultsAndRequiredAndNull(ctxt, objectNode); jp = jp.getCodec().treeAsTokens(objectNode); jp.nextToken(); } else if (t == JsonToken.END_OBJECT) { // for some reason this is how they chose to handle single field objects jp.nextToken(); ObjectNode objectNode = ctxt.getNodeFactory().objectNode(); handleDefaultsAndRequiredAndNull(ctxt, objectNode); jp = jp.getCodec().treeAsTokens(objectNode); jp.nextToken(); } Object value = getDelegatee().deserialize(jp, ctxt); if (value instanceof SuperCodable) { ((SuperCodable) value).postDecode(); } return value; } catch (JsonMappingException ex) { throw Jackson.maybeImproveLocation(currentLocation, ex); } }
From source file:com.addthis.codec.jackson.CodecTypeDeserializer.java
@Override public Object deserializeTypedFromAny(JsonParser jp, DeserializationContext ctxt) throws IOException { // a jackson thing we might as well include if (jp.canReadTypeId()) { Object typeId = jp.getTypeId(); if (typeId != null) { return _deserializeWithNativeTypeId(jp, ctxt, typeId); }/* ww w. ja v a 2 s .co m*/ } // can use this to approximate error location if a sub-method throws an exception JsonLocation currentLocation = jp.getTokenLocation(); JsonNode jsonNode; // empty objects can appear with END_OBJECT. that has special handling lots of places, but not in readTree if (jp.getCurrentToken() == JsonToken.END_OBJECT) { jsonNode = ctxt.getNodeFactory().objectNode(); } else { jsonNode = jp.readValueAsTree(); } ObjectCodec objectCodec = jp.getCodec(); try { Object bean = null; // _array handler if (jsonNode.isArray()) { bean = _deserializeTypedFromArray((ArrayNode) jsonNode, objectCodec, ctxt); // object handler } else if (jsonNode.isObject()) { bean = _deserializeTypedFromObject((ObjectNode) jsonNode, objectCodec, ctxt); } if (bean != null) { return bean; } else { // Jackson 2.6+ throws NPE on null typeId parameter (underlying Map changed from HashMap // to ConcurrentHashMap), so use empty string instead of null JsonDeserializer<Object> deser = _findDeserializer(ctxt, ""); JsonParser treeParser = jp.getCodec().treeAsTokens(jsonNode); treeParser.nextToken(); return deser.deserialize(treeParser, ctxt); } } catch (JsonMappingException ex) { throw Jackson.maybeImproveLocation(currentLocation, ex); } }
From source file:ninja.leaping.configurate.json.JSONConfigurationLoader.java
private void parseValue(JsonParser parser, ConfigurationNode node) throws IOException { JsonToken token = parser.getCurrentToken(); switch (token) { case START_OBJECT: parseObject(parser, node);//from w w w . ja v a2s . co m break; case START_ARRAY: parseArray(parser, node); break; case VALUE_NUMBER_FLOAT: node.setValue(parser.getFloatValue()); break; case VALUE_NUMBER_INT: node.setValue(parser.getIntValue()); break; case VALUE_STRING: node.setValue(parser.getText()); break; case VALUE_TRUE: case VALUE_FALSE: node.setValue(parser.getBooleanValue()); break; case VALUE_NULL: // Ignored values case FIELD_NAME: break; default: throw new IOException("Unsupported token type: " + token + " (at " + parser.getTokenLocation() + ")"); } }
From source file:org.sead.repositories.reference.RefRepository.java
private static void indexChildren(File index, JsonParser jp) throws IOException { JsonGenerator generator = new JsonFactory().createGenerator(index, JsonEncoding.UTF8); generator.useDefaultPrettyPrinter(); generator.writeStartObject();//from w w w .j a v a 2 s . c om JsonToken cur = jp.nextToken(); while (cur.equals(JsonToken.START_OBJECT)) { long start = jp.getTokenLocation().getByteOffset(); int depth = 1; while (depth > 0) { cur = jp.nextToken(); if (cur.equals(JsonToken.START_OBJECT)) { depth++; } else if (cur.equals(JsonToken.END_OBJECT)) { depth--; } else if (cur.equals(JsonToken.FIELD_NAME) && depth == 1) { if (jp.getText().equals("@id")) { cur = jp.nextToken(); String vName = jp.getText(); generator.writeNumberField(vName, start); } else { report(jp, cur); } } } cur = jp.nextToken(); } generator.writeEndObject(); generator.close(); }
From source file:org.sead.repositories.reference.RefRepository.java
private static void report(JsonParser jp, JsonToken token) { boolean struct = token.isStructStart() || token.isStructEnd(); try {/*from w w w .ja v a 2s. c o m*/ String tag = struct ? token.asString() : jp.getText(); log.trace("Tag: " + tag); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } long currentOffset = jp.getCurrentLocation().getByteOffset(); long tokenOffset = jp.getTokenLocation().getByteOffset(); log.trace("Cur: " + currentOffset + " tok: " + tokenOffset); }