All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.adgear.anoa.write.AbstractRecordWriter Maven / Gradle / Ivy

package com.adgear.anoa.write;

import com.adgear.anoa.Anoa;
import com.adgear.anoa.AnoaHandler;
import com.fasterxml.jackson.core.JsonGenerator;

import java.io.IOException;
import java.io.UncheckedIOException;
import java.util.function.Function;
import java.util.function.Supplier;


abstract class AbstractRecordWriter extends AbstractWriter {

  final  Function encoder(Supplier supplier) {
    return (R record) -> {
      G jacksonGenerator = supplier.get();
      try {
        write(record, jacksonGenerator);
      } catch (IOException e) {
        throw new UncheckedIOException(e);
      }
      return jacksonGenerator;
    };
  }

  final  Function encoderStrict(Supplier supplier) {
    return (R record) -> {
      G jacksonGenerator = supplier.get();
      try {
        writeStrict(record, jacksonGenerator);
      } catch (IOException e) {
        throw new UncheckedIOException(e);
      }
      return jacksonGenerator;
    };
  }

  final  Function, Anoa> encoder(
      AnoaHandler anoaHandler,
      Supplier supplier) {
    return anoaHandler.functionChecked((R record) -> {
      G jacksonGenerator = supplier.get();
      write(record, jacksonGenerator);
      return jacksonGenerator;
    });
  }

  final  Function, Anoa> encoderStrict(
      AnoaHandler anoaHandler,
      Supplier supplier) {
    return anoaHandler.functionChecked((R record) -> {
      G jacksonGenerator = supplier.get();
      writeStrict(record, jacksonGenerator);
      return jacksonGenerator;
    });
  }

  final WriteConsumer writeConsumer(JsonGenerator jacksonGenerator) {
    return new WriteConsumer() {
      @Override
      public void acceptChecked(R record) throws IOException {
        write(record, jacksonGenerator);
      }

      @Override
      public void flush() throws IOException {
        jacksonGenerator.flush();
      }
    };
  }

  final WriteConsumer writeConsumerStrict(JsonGenerator jacksonGenerator) {
    return new WriteConsumer() {
      @Override
      public void acceptChecked(R record) throws IOException {
        writeStrict(record, jacksonGenerator);
      }

      @Override
      public void flush() throws IOException {
        jacksonGenerator.flush();
      }
    };
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy