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

net.pincette.mongo.streams.Trace Maven / Gradle / Ivy

There is a newer version: 3.1.22
Show newest version
package net.pincette.mongo.streams;

import static javax.json.JsonValue.NULL;
import static net.pincette.json.JsonUtil.string;
import static net.pincette.mongo.Expression.function;
import static net.pincette.mongo.streams.Util.LOGGER;
import static net.pincette.rs.Mapper.map;

import java.util.concurrent.Flow.Processor;
import java.util.function.Function;
import javax.json.JsonObject;
import javax.json.JsonValue;
import net.pincette.function.SideEffect;
import net.pincette.rs.streams.Message;

/**
 * The $trace operator.
 *
 * @author Werner Donn\u00e9
 */
class Trace {
  private Trace() {}

  static Processor, Message> stage(
      final JsonValue expression, final Context context) {
    final Function function =
        !expression.equals(NULL) ? function(expression, context.features) : null;

    return map(
        m ->
            SideEffect.>run(
                    () ->
                        LOGGER.info(
                            () ->
                                string(
                                    function != null ? function.apply(m.value) : m.value, false)))
                .andThenGet(() -> m));
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy