package com.fasterxml.jackson.dataformat.protobuf.schema;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.net.URL;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.dataformat.protobuf.ProtobufMapper;

Class used for loading protobuf descriptors (from .desc files or equivalent sources), to construct FileDescriptorSet.
Since:2.9
/** * Class used for loading protobuf descriptors (from .desc files * or equivalent sources), to construct FileDescriptorSet. * * @since 2.9 */
public class DescriptorLoader { protected final static String DESCRIPTOR_PROTO = "/descriptor.proto";
Fully configured reader for FileDescriptorSet objects.
/** * Fully configured reader for {@link FileDescriptorSet} objects. */
protected final ObjectReader _reader;
Params:
  • reader – ObjectReader that is able to read protobuf input (that is, must have been created from ProtobufMapper, or regular mapper with ProtobufFactory), and has been configured with `protoc` definition of `descriptor.proro`
/** * @param reader {@link ObjectReader} that is able to read protobuf input * (that is, must have been created from {@link ProtobufMapper}, or regular * mapper with {@link com.fasterxml.jackson.dataformat.protobuf.ProtobufFactory}), * and has been configured with `protoc` definition of `descriptor.proro` */
public DescriptorLoader(ObjectReader reader) { _reader = reader; } public static DescriptorLoader construct(ProtobufMapper mapper) throws IOException { return construct(mapper, mapper.schemaLoader()); }
Params:
  • mapper – ObjectMapper that can reader protoc content.
/** * @param mapper {@link ObjectMapper} that can reader protoc content. */
public static DescriptorLoader construct(ObjectMapper mapper, ProtobufSchemaLoader schemaLoader) throws IOException { ProtobufSchema schema; try (InputStream in = DescriptorLoader.class.getResourceAsStream(DESCRIPTOR_PROTO)) { schema = schemaLoader.load(in, "FileDescriptorSet"); } return new DescriptorLoader(mapper.readerFor(FileDescriptorSet.class) .with(schema)); } /* /********************************************************************** /* Public API /********************************************************************** */ public FileDescriptorSet load(URL src) throws IOException { return _reader.readValue(src); } public FileDescriptorSet load(File src) throws IOException { return _reader.readValue(src); }
Note: passed InputStream will be closed by this method.
/** * Note: passed {@link java.io.InputStream} will be closed by this method. */
public FileDescriptorSet load(InputStream in) throws IOException { return _reader.readValue(in); }
Note: passed Reader will be closed by this method.
/** * Note: passed {@link java.io.Reader} will be closed by this method. */
public FileDescriptorSet load(Reader r) throws IOException { return _reader.readValue(r); } }