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

com.undefinedlabs.scope.sender.internal.LoggingSender Maven / Gradle / Ivy

package com.undefinedlabs.scope.sender.internal;

import com.undefinedlabs.scope.exceptions.SenderException;
import com.undefinedlabs.scope.exceptions.SerializerException;
import com.undefinedlabs.scope.logger.ScopeLogger;
import com.undefinedlabs.scope.logger.ScopeLoggerResolver;
import com.undefinedlabs.scope.reporter.internal.remote.model.ScopeData;
import com.undefinedlabs.scope.sender.Sender;
import com.undefinedlabs.scope.sender.internal.serializers.JsonSerializer;
import com.undefinedlabs.scope.sender.internal.serializers.Serializer;

public class LoggingSender implements Sender {

  private final ScopeLogger logger;
  private final Serializer serializer;

  public LoggingSender() {
    this(null, null);
  }

  public LoggingSender(final ScopeLogger logger, final Serializer serializer) {
    this.logger = (logger != null) ? logger : ScopeLoggerResolver.INSTANCE.get();
    this.serializer = (serializer != null) ? serializer : new JsonSerializer();
  }

  @Override
  public boolean send(ScopeData scopeData) throws SenderException {
    try {
      this.logger.info(this.serializer.serializeAsString(scopeData));
    } catch (SerializerException e) {
      throw new SenderException("An error occurred when ScopeData was being serialized.", e);
    }
    return true;
  }

  @Override
  public void close() {
    // Nothing to do
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy