Example usage for com.fasterxml.jackson.databind ObjectReader readValues

List of usage examples for com.fasterxml.jackson.databind ObjectReader readValues

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind ObjectReader readValues.

Prototype

public <T> MappingIterator<T> readValues(URL src) throws IOException, JsonProcessingException 

Source Link

Document

Overloaded version of #readValue(InputStream) .

Usage

From source file:org.wikidata.wdtk.client.JsonSerializationActionTest.java

@Test
public void testJsonOutput() throws IOException {
    String[] args = new String[] { "-a", "json", "-o", "/path/to/output.json" };

    DirectoryManagerFactory.setDirectoryManagerClass(MockDirectoryManager.class);

    ClientConfiguration config = new ClientConfiguration(args);
    JsonSerializationAction jsa = (JsonSerializationAction) config.getActions().get(0);

    ItemIdValue subject1 = Datamodel.makeWikidataItemIdValue("Q42");
    ItemIdValue subject2 = Datamodel.makeWikidataItemIdValue("Q43");
    MonolingualTextValue mtv1 = Datamodel.makeMonolingualTextValue("Test1", "en");
    MonolingualTextValue mtv2 = Datamodel.makeMonolingualTextValue("Test2", "fr");

    ItemDocument id1 = Datamodel.makeItemDocument(subject1, Arrays.asList(mtv1, mtv2), Arrays.asList(mtv1),
            Collections.<MonolingualTextValue>emptyList(), Collections.<StatementGroup>emptyList(),
            Collections.<String, SiteLink>emptyMap());

    ItemDocument id2 = Datamodel.makeItemDocument(subject2, Collections.<MonolingualTextValue>emptyList(),
            Arrays.asList(mtv2), Collections.<MonolingualTextValue>emptyList(),
            Collections.<StatementGroup>emptyList(), Collections.<String, SiteLink>emptyMap());

    PropertyDocument pd1 = Datamodel.makePropertyDocument(Datamodel.makeWikidataPropertyIdValue("P31"),
            Arrays.asList(mtv1), Collections.<MonolingualTextValue>emptyList(), Arrays.asList(mtv1),
            Datamodel.makeDatatypeIdValue(DatatypeIdValue.DT_MONOLINGUAL_TEXT));

    jsa.open();// w w  w  .j av a2 s  .c  o  m
    jsa.processItemDocument(id1);
    jsa.processPropertyDocument(pd1);
    jsa.processItemDocument(id2);
    jsa.close();

    MockDirectoryManager mdm = new MockDirectoryManager(Paths.get("/path/to/"), false);

    ObjectMapper mapper = new ObjectMapper();
    ObjectReader documentReader = mapper.reader(JacksonTermedStatementDocument.class);
    MappingIterator<JacksonTermedStatementDocument> documentIterator = documentReader
            .readValues(mdm.getInputStreamForFile("output.json", CompressionType.NONE));

    List<EntityDocument> results = new ArrayList<>();
    while (documentIterator.hasNextValue()) {
        JacksonTermedStatementDocument document = documentIterator.nextValue();
        document.setSiteIri(Datamodel.SITE_WIKIDATA);
        results.add(document);
    }
    documentIterator.close();

    assertEquals(3, results.size());
    assertEquals(id1, results.get(0));
    assertEquals(pd1, results.get(1));
    assertEquals(id2, results.get(2));

}

From source file:org.apache.nifi.csv.JacksonCSVRecordReader.java

public JacksonCSVRecordReader(final InputStream in, final ComponentLog logger, final RecordSchema schema,
        final CSVFormat csvFormat, final boolean hasHeader, final boolean ignoreHeader, final String dateFormat,
        final String timeFormat, final String timestampFormat, final String encoding) throws IOException {
    super(logger, schema, hasHeader, ignoreHeader, dateFormat, timeFormat, timestampFormat);

    final Reader reader = new InputStreamReader(new BOMInputStream(in));

    CsvSchema.Builder csvSchemaBuilder = CsvSchema.builder().setColumnSeparator(csvFormat.getDelimiter())
            .setLineSeparator(csvFormat.getRecordSeparator())
            // Can only use comments in Jackson CSV if the correct marker is set
            .setAllowComments("#".equals(CharUtils.toString(csvFormat.getCommentMarker())))
            // The call to setUseHeader(false) in all code paths is due to the way Jackson does data binding/mapping. Missing or extra columns may not
            // be handled correctly when using the header for mapping.
            .setUseHeader(false);//ww w .  j a v a  2  s.c  o  m

    csvSchemaBuilder = (csvFormat.getQuoteCharacter() == null) ? csvSchemaBuilder
            : csvSchemaBuilder.setQuoteChar(csvFormat.getQuoteCharacter());
    csvSchemaBuilder = (csvFormat.getEscapeCharacter() == null) ? csvSchemaBuilder
            : csvSchemaBuilder.setEscapeChar(csvFormat.getEscapeCharacter());

    if (hasHeader) {
        if (ignoreHeader) {
            csvSchemaBuilder = csvSchemaBuilder.setSkipFirstDataRow(true);
        }
    }

    CsvSchema csvSchema = csvSchemaBuilder.build();

    // Add remaining config options to the mapper
    List<CsvParser.Feature> features = new ArrayList<>();
    features.add(CsvParser.Feature.INSERT_NULLS_FOR_MISSING_COLUMNS);
    if (csvFormat.getIgnoreEmptyLines()) {
        features.add(CsvParser.Feature.SKIP_EMPTY_LINES);
    }
    if (csvFormat.getTrim()) {
        features.add(CsvParser.Feature.TRIM_SPACES);
    }

    ObjectReader objReader = mapper.readerFor(String[].class).with(csvSchema)
            .withFeatures(features.toArray(new CsvParser.Feature[features.size()]));

    recordStream = objReader.readValues(reader);
}