Example usage for com.fasterxml.jackson.core JsonParser getCodec

List of usage examples for com.fasterxml.jackson.core JsonParser getCodec

Introduction

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

Prototype

public abstract ObjectCodec getCodec();

Source Link

Document

Accessor for ObjectCodec associated with this parser, if any.

Usage

From source file:org.springframework.batch.admin.domain.support.JobParameterJacksonDeserializer.java

@Override
public JobParameter deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
        throws IOException {
    SimpleDateFormat formatter = new SimpleDateFormat();
    ObjectCodec oc = jsonParser.getCodec();
    JsonNode node = oc.readTree(jsonParser);

    final String value = node.get("value").asText();
    final boolean identifying = node.get("identifying").asBoolean();
    final String type = node.get("type").asText();

    final JobParameter jobParameter;

    if (!type.isEmpty() && !type.equalsIgnoreCase("STRING")) {
        if ("DATE".equalsIgnoreCase(type)) {
            try {
                jobParameter = new JobParameter(formatter.parse(value), identifying);
            } catch (ParseException e) {
                throw new IOException(e);
            }//from w  w w .  j  a  v a 2  s  . c o m
        } else if ("DOUBLE".equalsIgnoreCase(type)) {
            jobParameter = new JobParameter(Double.valueOf(value), identifying);
        } else if ("LONG".equalsIgnoreCase(type)) {
            jobParameter = new JobParameter(Long.valueOf(value), identifying);
        } else {
            throw new IllegalStateException("Unsupported JobParameter type: " + type);
        }
    } else {
        jobParameter = new JobParameter(value, identifying);
    }

    if (logger.isDebugEnabled()) {
        logger.debug(String.format("jobParameter - value: %s (type: %s, isIdentifying: %s)",
                jobParameter.getValue(), jobParameter.getType().name(), jobParameter.isIdentifying()));
    }

    return jobParameter;
}

From source file:org.mycontroller.standalone.api.jaxrs.mixins.ExternalServerMixin.java

@Override
public ExternalServer deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    ObjectCodec objectCodec = jp.getCodec();
    JsonNode node = objectCodec.readTree(jp);

    if (node.get("id") == null && node.get("type") == null) {
        return null;
    }/*  ww  w . j  a v  a  2  s .c  o m*/

    EXTERNAL_SERVER_TYPE type = EXTERNAL_SERVER_TYPE.fromString(node.get("type").asText());

    ExternalServer externalServer = null;
    switch (type) {
    case PHANT_IO:
        ExternalServerPhantIO extServerPhantIO = new ExternalServerPhantIO();
        extServerPhantIO.setUrl(node.get("url").asText());
        extServerPhantIO.setPublicKey(node.get("publicKey").asText());
        extServerPhantIO.setPrivateKey(node.get("privateKey").asText());
        extServerPhantIO.setTrustHostType(TRUST_HOST_TYPE.fromString(node.get("trustHostType").asText()));
        externalServer = extServerPhantIO;
        break;
    case EMONCMS:
        ExternalServerEmoncms extServerEmoncms = new ExternalServerEmoncms();
        extServerEmoncms.setUrl(node.get("url").asText());
        extServerEmoncms.setWriteApiKey(node.get("writeApiKey").asText());
        extServerEmoncms.setTrustHostType(TRUST_HOST_TYPE.fromString(node.get("trustHostType").asText()));
        externalServer = extServerEmoncms;
        break;
    case INFLUXDB:
        ExternalServerInfluxdb extServerInfluxdb = new ExternalServerInfluxdb();
        extServerInfluxdb.setUrl(node.get("url").asText());
        extServerInfluxdb.setDatabase(node.get("database").asText());
        if (node.get("username") != null) {
            extServerInfluxdb.setUsername(node.get("username").asText());
            extServerInfluxdb.setPassword(node.get("password").asText());
        }
        if (node.get("tags") != null) {
            extServerInfluxdb.setTags(node.get("tags").asText());
        }
        extServerInfluxdb.setTrustHostType(TRUST_HOST_TYPE.fromString(node.get("trustHostType").asText()));
        externalServer = extServerInfluxdb;
        break;
    default:
        break;
    }
    //Update RuleDefinition details
    if (node.get("id") != null) {
        externalServer.setId(node.get("id").asInt());
    }
    externalServer.setKeyFormat(node.get("keyFormat").asText());
    externalServer.setEnabled(node.get("enabled").asBoolean());
    externalServer.setName(node.get("name").asText());
    externalServer.setType(type);
    return externalServer;
}

From source file:com.google.gplus.serializer.util.GPlusActivityDeserializer.java

/**
 * Because the GooglePlus Activity object {@link com.google.api.services.plus.model.Activity} contains complex objects
 * within its hierarchy, we have to use a custom deserializer
 *
 * @param jsonParser//  w ww.j  a  v a  2 s .c  o m
 * @param deserializationContext
 * @return The deserialized {@link com.google.api.services.plus.model.Activity} object
 * @throws IOException
 * @throws JsonProcessingException
 */
@Override
public Activity deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
        throws IOException {

    JsonNode node = jsonParser.getCodec().readTree(jsonParser);
    Activity activity = new Activity();

    try {
        activity.setUrl(node.get("url").asText());
        activity.setEtag(node.get("etag").asText());
        activity.setTitle(node.get("title").asText());
        activity.setPublished(DateTime.parseRfc3339(node.get("published").asText()));
        activity.setUpdated(DateTime.parseRfc3339(node.get("updated").asText()));
        activity.setId(node.get("id").asText());
        activity.setVerb(node.get("verb").asText());

        activity.setActor(buildActor(node));

        activity.setObject(buildPlusObject(node));
    } catch (Exception e) {
        LOGGER.error("Exception while trying to deserialize activity object: {}", e);
    }

    return activity;
}

From source file:io.progix.dropwizard.patch.explicit.PatchInstructionDeserializer.java

/**
 * This method is responsible for deserialization of a {@link PatchInstruction}
 * <p/>// w  w  w . j  a  v a 2s .  co m
 * The value in a patch instruction is mapped to a TreeMap and can be later converted to a class of choice using
 * {@link JsonPatchValue}
 *
 * @see JsonDeserializer
 */
@Override
public PatchInstruction deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    untypedObjectDeserializer.resolve(ctxt);

    JsonNode node = jp.getCodec().readTree(jp);

    PatchOperation operation = PatchOperation.valueOf(node.get("op").asText().toUpperCase());

    String path = node.get("path").asText();

    String from = null;
    JsonNode fromNode = node.get("from");
    if (fromNode != null) {
        from = fromNode.asText();
    }

    List<Object> values = null;
    JsonNode valueNode = node.get("value");
    if (valueNode != null) {
        values = new ArrayList<>();
        if (valueNode.isArray()) {
            Iterator<JsonNode> iterator = valueNode.elements();
            while (iterator.hasNext()) {
                JsonNode elementNode = iterator.next();
                JsonParser p = elementNode.traverse();
                if (!p.hasCurrentToken()) {
                    p.nextToken();
                }
                Object element = untypedObjectDeserializer.deserialize(p, ctxt);
                values.add(element);
            }
        } else {
            JsonParser p = valueNode.traverse();
            if (!p.hasCurrentToken()) {
                p.nextToken();
            }
            Object value = untypedObjectDeserializer.deserialize(p, ctxt);
            values.add(value);
        }
    }

    return new PatchInstruction(operation, path, values, from);
}

From source file:com.strategicgains.hyperexpress.serialization.siren.jackson.SirenResourceDeserializer.java

@Override
public SirenResource deserialize(JsonParser jp, DeserializationContext context)
        throws IOException, JsonProcessingException {
    ObjectCodec oc = jp.getCodec();
    return deserializeResource((JsonNode) jp.readValueAsTree(), oc);
}

From source file:ijfx.service.overlay.io.OverlayDeserializer.java

@Override
public Overlay deserialize(JsonParser jp, DeserializationContext dc)
        throws IOException, JsonProcessingException {
    JsonNode node = jp.getCodec().readTree(jp);
    String type = node.get(JsonOverlayToken.OVERLAY_TYPE).asText();

    if (type.equals(JsonOverlayToken.RECTANGLE_OVERLAY)) {

        return loadRectangle(node);
    }// www  . j  a  v  a  2s  .  co m
    if (type.equals(JsonOverlayToken.POLYGON_OVERLAY)) {
        return loadPolygon(node);
    }
    if (type.equals(JsonOverlayToken.LINE_OVERLAY)) {
        return loadLine(node);
    }
    return null;
}

From source file:io.gravitee.definition.jackson.datatype.api.deser.ApiDeserializer.java

@Override
public Api deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
    JsonNode node = jp.getCodec().readTree(jp);

    Api api = new Api();

    JsonNode idNode = node.get("id");
    if (idNode == null) {
        throw ctxt.mappingException("ID property is required");
    } else {//from  ww  w. j a v a2  s  . com
        api.setId(idNode.asText());
    }

    JsonNode nameNode = node.get("name");
    if (nameNode == null) {
        throw ctxt.mappingException("Name property is required");
    } else {
        api.setName(nameNode.asText());
    }

    JsonNode versionNode = node.get("version");
    if (versionNode == null) {
        api.setVersion("undefined");
    } else {
        api.setVersion(versionNode.asText());
    }

    JsonNode proxyNode = node.get("proxy");
    if (proxyNode != null) {
        api.setProxy(proxyNode.traverse(jp.getCodec()).readValueAs(Proxy.class));
    } else {
        logger.error("A proxy property is required for {}", api.getName());
        throw ctxt.mappingException("A proxy property is required for " + api.getName());
    }

    JsonNode servicesNode = node.get("services");
    if (servicesNode != null) {
        Services services = servicesNode.traverse(jp.getCodec()).readValueAs(Services.class);
        api.getServices().set(services.getAll());
    }

    JsonNode resourcesNode = node.get("resources");
    if (resourcesNode != null && resourcesNode.isArray()) {
        resourcesNode.elements().forEachRemaining(resourceNode -> {
            try {
                Resource resource = resourceNode.traverse(jp.getCodec()).readValueAs(Resource.class);
                if (!api.getResources().contains(resource)) {
                    api.getResources().add(resource);
                } else {
                    logger.error("A resource already exists with name {}", resource.getName());
                    throw ctxt.mappingException("A resource already exists with name " + resource.getName());
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    }

    JsonNode pathsNode = node.get("paths");
    if (pathsNode != null) {
        final Map<String, Path> paths = new TreeMap<>(
                (Comparator<String>) (path1, path2) -> path2.compareTo(path1));
        pathsNode.fields().forEachRemaining(jsonNode -> {
            try {
                Path path = jsonNode.getValue().traverse(jp.getCodec()).readValueAs(Path.class);
                path.setPath(jsonNode.getKey());
                paths.put(jsonNode.getKey(), path);
            } catch (IOException e) {
                logger.error("Path {} can not be de-serialized", jsonNode.getKey());
            }
        });

        api.setPaths(paths);
    }

    JsonNode propertiesNode = node.get("properties");
    if (propertiesNode != null) {
        Map<String, String> properties = new TemplatedValueHashMap();
        propertiesNode.fields().forEachRemaining(
                jsonNode -> properties.put(jsonNode.getKey(), jsonNode.getValue().textValue()));

        api.setProperties(properties);
    }

    JsonNode tagsNode = node.get("tags");

    if (tagsNode != null && tagsNode.isArray()) {
        tagsNode.elements().forEachRemaining(jsonNode -> api.getTags().add(jsonNode.asText()));
    }

    return api;
}

From source file:org.broadleafcommerce.openadmin.web.rulebuilder.DataDTODeserializer.java

@Override
public DataDTO deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    ObjectMapper mapper = (ObjectMapper) jp.getCodec();
    ObjectNode root = (ObjectNode) mapper.readTree(jp);
    Iterator<Map.Entry<String, JsonNode>> elementsIterator = root.fields();
    DataDTO dataDTO = new DataDTO();
    ExpressionDTO expressionDTO = new ExpressionDTO();
    boolean isExpression = false;
    while (elementsIterator.hasNext()) {
        Map.Entry<String, JsonNode> element = elementsIterator.next();
        String name = element.getKey();
        if ("id".equals(name)) {
            expressionDTO.setId(getNullAwareText(element.getValue()));
            isExpression = true;/*from   w ww. j  a  v  a 2 s  .c  o m*/
        }

        if ("operator".equals(name)) {
            expressionDTO.setOperator(getNullAwareText(element.getValue()));
            isExpression = true;
        }

        if ("value".equals(name)) {
            expressionDTO.setValue(getNullAwareText(element.getValue()));
            isExpression = true;
        }

        if ("pk".equals(name)) {
            if (getNullAwareText(element.getValue()) == null
                    || StringUtils.isBlank(element.getValue().asText())) {
                dataDTO.setPk(null);
            } else {
                dataDTO.setPk(element.getValue().asLong());
            }
        }
        if ("quantity".equals(name)) {
            if (getNullAwareText(element.getValue()) == null) {
                dataDTO.setQuantity(null);
            } else {
                dataDTO.setQuantity(element.getValue().asInt());
            }
        }

        if ("condition".equals(name)) {
            dataDTO.setCondition(getNullAwareText(element.getValue()));
        }

        if ("rules".equals(name)) {
            CollectionType dtoCollectionType = mapper.getTypeFactory().constructCollectionType(ArrayList.class,
                    DataDTO.class);
            dataDTO.setRules((ArrayList<DataDTO>) mapper.readValue(element.getValue().traverse(jp.getCodec()),
                    dtoCollectionType));
        }
    }

    if (isExpression) {
        return expressionDTO;
    } else {
        return dataDTO;
    }
}

From source file:com.strategicgains.hyperexpress.serialization.jackson.HalResourceDeserializer.java

@Override
public HalResource deserialize(JsonParser jp, DeserializationContext context)
        throws IOException, JsonProcessingException {
    ObjectCodec oc = jp.getCodec();
    return deserializeResource((JsonNode) jp.readValueAsTree(), oc);
}

From source file:org.springframework.security.jackson2.UsernamePasswordAuthenticationTokenDeserializer.java

/**
 * This method construct {@link UsernamePasswordAuthenticationToken} object from serialized json.
 *//*from w  ww. jav  a  2s. c  o m*/
@Override
public UsernamePasswordAuthenticationToken deserialize(JsonParser jsonParser, DeserializationContext context)
        throws IOException, JsonProcessingException {
    UsernamePasswordAuthenticationToken token;
    ObjectMapper mapper = (ObjectMapper) jsonParser.getCodec();
    JsonNode jsonNode = mapper.readTree(jsonParser);
    Boolean authenticated = readJsonNode(jsonNode, "authenticated").asBoolean();
    JsonNode principalNode = readJsonNode(jsonNode, "principal");
    Object principal;
    if (principalNode.isObject()) {
        Class principalClass = LinkedHashMap.class;
        if (principalNode.hasNonNull("@class")) {
            try {
                principalClass = Class.forName(principalNode.get("@class").asText());
            } catch (ClassNotFoundException e) {
                throw new RuntimeException(
                        "Could not load principal class [" + principalNode.get("@class").asText() + "]", e);
            }
        }
        principal = mapper.readValue(principalNode.toString(), principalClass);
    } else {
        principal = principalNode.asText();
    }
    Object credentials = readJsonNode(jsonNode, "credentials").asText();
    List<GrantedAuthority> authorities = mapper.readValue(readJsonNode(jsonNode, "authorities").toString(),
            new TypeReference<List<GrantedAuthority>>() {
            });
    if (authenticated) {
        token = new UsernamePasswordAuthenticationToken(principal, credentials, authorities);
    } else {
        token = new UsernamePasswordAuthenticationToken(principal, credentials);
    }
    token.setDetails(readJsonNode(jsonNode, "details"));
    return token;
}