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

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

Introduction

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

Prototype

@SuppressWarnings("unchecked")
public <T extends TreeNode> T readValueAsTree() throws IOException, JsonProcessingException 

Source Link

Document

Method to deserialize JSON content into equivalent "tree model", represented by root TreeNode of resulting model.

Usage

From source file:org.apache.syncope.core.misc.serialization.SyncTokenDeserializer.java

@Override
public SyncToken deserialize(final JsonParser jp, final DeserializationContext ctx) throws IOException {

    ObjectNode tree = jp.readValueAsTree();

    Object value = null;//from   w w  w .j  a  va2 s .  com
    if (tree.has("value")) {
        JsonNode node = tree.get("value");
        value = node.isNull() ? null
                : node.isBoolean() ? node.asBoolean()
                        : node.isDouble() ? node.asDouble()
                                : node.isLong() ? node.asLong() : node.isInt() ? node.asInt() : node.asText();

        if (value instanceof String) {
            String base64 = (String) value;
            if (Base64.isBase64(base64)) {
                value = Base64.decodeBase64(base64);
            }
        }
    }

    return new SyncToken(value);
}

From source file:org.apache.syncope.core.provisioning.api.serialization.AttributeDeserializer.java

@Override
public Attribute deserialize(final JsonParser jp, final DeserializationContext ctx) throws IOException {

    ObjectNode tree = jp.readValueAsTree();

    String name = tree.get("name").asText();

    List<Object> values = new ArrayList<>();
    for (JsonNode node : tree.get("value")) {
        if (node.isNull()) {
            values.add(null);/* w ww.jav a 2s .com*/
        } else if (node.isObject()) {
            values.add(((ObjectNode) node).traverse(jp.getCodec()).readValueAs(GuardedString.class));
        } else if (node.isBoolean()) {
            values.add(node.asBoolean());
        } else if (node.isDouble()) {
            values.add(node.asDouble());
        } else if (node.isLong()) {
            values.add(node.asLong());
        } else if (node.isInt()) {
            values.add(node.asInt());
        } else {
            String text = node.asText();
            if (text.startsWith(AttributeSerializer.BYTE_ARRAY_PREFIX)
                    && text.endsWith(AttributeSerializer.BYTE_ARRAY_SUFFIX)) {

                values.add(Base64.getDecoder().decode(StringUtils.substringBetween(text,
                        AttributeSerializer.BYTE_ARRAY_PREFIX, AttributeSerializer.BYTE_ARRAY_SUFFIX)));
            } else {
                values.add(text);
            }
        }
    }

    return Uid.NAME.equals(name)
            ? new Uid(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString())
            : Name.NAME.equals(name)
                    ? new Name(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString())
                    : AttributeBuilder.build(name, values);
}

From source file:org.apache.syncope.core.util.AttributeDeserializer.java

@Override
public Attribute deserialize(final JsonParser jp, final DeserializationContext ctx)
        throws IOException, JsonProcessingException {

    ObjectNode tree = jp.readValueAsTree();

    String name = tree.get("name").asText();

    List<Object> values = new ArrayList<Object>();
    for (Iterator<JsonNode> itor = tree.get("value").iterator(); itor.hasNext();) {
        JsonNode node = itor.next();/*from w  w w . ja  v  a2  s.  c o m*/
        if (node.isNull()) {
            values.add(null);
        } else if (node.isObject()) {
            values.add(((ObjectNode) node).traverse(jp.getCodec()).readValueAs(GuardedString.class));
        } else if (node.isBoolean()) {
            values.add(node.asBoolean());
        } else if (node.isDouble()) {
            values.add(node.asDouble());
        } else if (node.isLong()) {
            values.add(node.asLong());
        } else if (node.isInt()) {
            values.add(node.asInt());
        } else {
            String text = node.asText();
            if (text.startsWith(AttributeSerializer.BYTE_ARRAY_PREFIX)
                    && text.endsWith(AttributeSerializer.BYTE_ARRAY_SUFFIX)) {

                values.add(Base64.decode(StringUtils.substringBetween(text,
                        AttributeSerializer.BYTE_ARRAY_PREFIX, AttributeSerializer.BYTE_ARRAY_SUFFIX)));
            } else {
                values.add(text);
            }
        }
    }

    return Uid.NAME.equals(name)
            ? new Uid(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString())
            : Name.NAME.equals(name)
                    ? new Name(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString())
                    : AttributeBuilder.build(name, values);
}

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

private List<String> getRepositoriesList(String restUrl) throws IOException {
    List<String> repositories = new ArrayList<String>();
    PreemptiveHttpClient client = httpClient.getHttpClient();

    String reposUrl = artifactoryUrl + restUrl;
    log.debug("Requesting repositories list from: " + reposUrl);
    HttpGet httpget = new HttpGet(reposUrl);
    HttpResponse response = client.execute(httpget);
    StatusLine statusLine = response.getStatusLine();
    HttpEntity entity = response.getEntity();
    if (statusLine.getStatusCode() != HttpStatus.SC_OK) {
        throw new IOException("Failed to obtain list of repositories. Status code: "
                + statusLine.getStatusCode() + getMessageFromEntity(entity));
    } else {// w w w  .  j  a  v  a 2 s.  c  o m
        if (entity != null) {
            repositories = new ArrayList<String>();
            InputStream content = entity.getContent();
            JsonParser parser;
            try {
                parser = httpClient.createJsonParser(content);
                JsonNode result = parser.readValueAsTree();
                log.debug("Repositories result = " + result);
                for (JsonNode jsonNode : result) {
                    String repositoryKey = jsonNode.get("key").asText();
                    repositories.add(repositoryKey);
                }
            } finally {
                if (content != null) {
                    content.close();
                }
            }
        }
    }
    return repositories;
}

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

public String getItemLastModified(String path) throws IOException, ParseException {
    String url = artifactoryUrl + "/api/storage/" + path + "?lastModified&deep=1";
    HttpGet get = new HttpGet(url);
    HttpResponse response = httpClient.getHttpClient().execute(get);

    StatusLine statusLine = response.getStatusLine();
    if (statusLine.getStatusCode() != HttpStatus.SC_OK) {
        HttpEntity entity = response.getEntity();
        throw new IOException("Failed to obtain item info. Status code: " + statusLine.getStatusCode()
                + getMessageFromEntity(entity));
    } else {// ww w . j a v a  2 s. co m
        HttpEntity entity = response.getEntity();
        if (entity != null) {
            InputStream content = entity.getContent();
            JsonParser parser;
            try {
                parser = httpClient.createJsonParser(content);
                JsonNode result = parser.readValueAsTree();
                return result.get("lastModified").asText();
            } finally {
                if (content != null) {
                    content.close();
                }
                EntityUtils.consume(entity);
            }
        }
    }
    return null;
}

From source file:org.sead.repositories.reference.RefRepository.java

protected static void generateIndex(InputStream ro, File descFile, File indexFile)
        throws JsonParseException, IOException {

    log.debug("Generating desc and index files");
    JsonFactory f = new MappingJsonFactory(); // reading
    JsonParser jp = f.createParser(ro);

    JsonGenerator generator = new JsonFactory().createGenerator(descFile, JsonEncoding.UTF8);

    JsonToken current;//  w w  w  . ja  v a 2 s.co  m

    current = jp.nextToken();

    report(jp, current);
    while ((current = jp.nextToken()) != null) {
        if (current.equals(JsonToken.FIELD_NAME)) {
            String fName = jp.getText();
            if (fName.equals("describes")) {
                log.trace("describes");
                while (((current = jp.nextToken()) != null)) {
                    if (jp.isExpectedStartObjectToken()) {
                        generator.setCodec(new ObjectMapper());
                        generator.useDefaultPrettyPrinter();

                        generator.writeStartObject();

                        while (((current = jp.nextToken()) != JsonToken.END_OBJECT)) {
                            if (current != JsonToken.FIELD_NAME) {
                                log.warn("Unexpected Token!");
                                report(jp, current);

                            } else {
                                report(jp, current);
                                String name = jp.getText();
                                current = jp.nextToken(); // Get to start of
                                // value
                                if (!name.equals("aggregates")) {
                                    log.trace("Writing: " + name);
                                    generator.writeFieldName(name);
                                    generator.writeTree(jp.readValueAsTree());
                                } else {
                                    report(jp, current);
                                    log.trace("Skipping?");
                                    if (current.isStructStart()) {
                                        indexChildren(indexFile, jp);
                                        // jp.skipChildren();
                                    } else {
                                        log.warn("Was Not Struct start!");
                                    }
                                    log.trace("Hit aggregates");

                                }
                            }
                        }

                        generator.writeEndObject();

                        generator.close();
                    }
                }
            }
        }
    }
}

From source file:org.springframework.social.weibo.api.impl.json.TrendsDeserializer.java

@Override
public SortedSet<Trends> deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    SimpleDateFormat dateFormat = new SimpleDateFormat();
    TreeSet<Trends> result = new TreeSet<Trends>(comparator);
    TreeNode treeNode = jp.readValueAsTree();

    Iterator<String> fieldNames = treeNode.fieldNames();

    while (fieldNames.hasNext()) {
        Trends trends = new Trends();
        try {//from w w  w  . ja  v  a  2  s  .  c  o m
            String filedName = fieldNames.next();
            dateFormat.applyPattern(retrieveDateFormatPattern(filedName));
            trends.setDate(dateFormat.parse(filedName));
            TreeNode trendsNode = treeNode.get(filedName);
            if (trendsNode.isArray()) {
                for (int i = 0; i < trendsNode.size(); i++) {
                    JsonParser nodeParser = trendsNode.get(i).traverse();
                    nodeParser.setCodec(jp.getCodec());
                    Trend readValueAs = nodeParser.readValueAs(Trend.class);
                    trends.getTrends().add(readValueAs);
                }
            }
            result.add(trends);
        } catch (ParseException e) {
            logger.warn("Unable to parse date", e);
        }
    }

    return result;
}

From source file:org.talend.dataprep.api.dataset.DataSetDataReader.java

private RowMetadata parseDataSetMetadataAndReturnRowMetadata(JsonParser jsonParser) throws IOException {
    try {/*ww w .j a  v  a 2  s .  com*/
        JsonNode treeNode = jsonParser.readValueAsTree();
        JsonNode columns = treeNode.get("columns");
        List<ColumnMetadata> columnsParsed = new ArrayList<>();
        if (columns.isArray()) {
            for (int columnId = 0; columnId < columns.size(); columnId++) {
                JsonNode column = columns.get(columnId);
                columnsParsed.add(mapper.reader(ColumnMetadata.class).readValue(column));
            }
        }
        return new RowMetadata(columnsParsed);
    } catch (IOException e) {
        throw new IOException("Unable to parse and retrieve the row metadata", e);
    }
}

From source file:portal.api.PortalRepositoryIT.java

public List<PortalUser> getUsers() throws Exception {

    logger.info("Executing TEST = testGetUsers");

    Response r = execGETonURL(endpointUrl + "/services/api/repo/admin/users", cookieJSESSIONID);
    assertEquals(Response.Status.OK.getStatusCode(), r.getStatus());

    String portalAPIVersionListHeaders = (String) r.getHeaders().getFirst("X-Portal-API-Version");
    assertEquals("1.0.0", portalAPIVersionListHeaders);

    MappingJsonFactory factory = new MappingJsonFactory();
    JsonParser parser = factory.createJsonParser((InputStream) r.getEntity());

    JsonNode node = parser.readValueAsTree();
    ObjectMapper mapper = new ObjectMapper();
    TypeReference<List<PortalUser>> typeRef = new TypeReference<List<PortalUser>>() {
    };/* ww w  . j ava 2 s  .  c  o m*/
    List<PortalUser> portalUsersList = mapper.readValue(node.traverse(), typeRef);
    for (PortalUser f : portalUsersList) {
        logger.info("user = " + f.getName() + ", ID = " + f.getId());
    }

    return portalUsersList;
}