001package org.nuxeo.importer.stream;
002
003import org.nuxeo.importer.stream.message.BlobInfoMessage;
004import org.nuxeo.importer.stream.message.BlobMessage;
005import org.nuxeo.importer.stream.message.DocumentMessage;
006import org.nuxeo.lib.stream.codec.Codec;
007import org.nuxeo.runtime.api.Framework;
008import org.nuxeo.runtime.codec.CodecService;
009
010/**
011 * Helper class to define different log names used in nuxeo-importer-stream and utility methods to get {@link Codec
012 * codecs}.
013 *
014 * @since 11.1
015 */
016public final class StreamImporters {
017
018    // use java codec because it was already used with kafka and because avro has difficulties to serialize BlobMessage
019    // due to Blob interface. Using codec allow us to not use chronicle serialization which could be limited
020    public static final String DEFAULT_CODEC = "java";
021
022    public static final String DEFAULT_LOG_CONFIG = "default";
023
024    public static final String DEFAULT_LOG_BLOB_NAME = "import/blob";
025
026    public static final String DEFAULT_LOG_BLOB_INFO_NAME = "import/blob-info";
027
028    public static final String DEFAULT_LOG_DOC_NAME = "import/doc";
029
030    public static Codec<BlobMessage> getBlobCodec() {
031        return Framework.getService(CodecService.class).getCodec(DEFAULT_CODEC, BlobMessage.class);
032    }
033
034    public static Codec<BlobInfoMessage> getBlobInfoCodec() {
035        return Framework.getService(CodecService.class).getCodec(DEFAULT_CODEC, BlobInfoMessage.class);
036    }
037
038    public static Codec<DocumentMessage> getDocCodec() {
039        return Framework.getService(CodecService.class).getCodec(DEFAULT_CODEC, DocumentMessage.class);
040    }
041
042    private StreamImporters() {
043        // not allowed
044    }
045}