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

pl.allegro.tech.hermes.api.OfflineRetransmissionFromTopicRequest Maven / Gradle / Ivy

package pl.allegro.tech.hermes.api;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import jakarta.validation.constraints.NotNull;
import java.time.Instant;
import pl.allegro.tech.hermes.api.constraints.TimeRangeForTopicRetransmission;
import pl.allegro.tech.hermes.api.jackson.InstantIsoSerializer;

@TimeRangeForTopicRetransmission
public final class OfflineRetransmissionFromTopicRequest extends OfflineRetransmissionRequest {

  @NotNull private final String sourceTopic;
  @NotNull private final Instant startTimestamp;
  @NotNull private final Instant endTimestamp;

  @JsonCreator
  public OfflineRetransmissionFromTopicRequest(
      @JsonProperty("sourceTopic") String sourceTopic,
      @JsonProperty("targetTopic") String targetTopic,
      @JsonProperty("startTimestamp") String startTimestamp,
      @JsonProperty("endTimestamp") String endTimestamp) {
    super(RetransmissionType.TOPIC, targetTopic);
    this.sourceTopic = sourceTopic;
    this.startTimestamp = initializeTimestamp(startTimestamp);
    this.endTimestamp = initializeTimestamp(endTimestamp);
  }

  public String getSourceTopic() {
    return sourceTopic;
  }

  @JsonSerialize(using = InstantIsoSerializer.class)
  public Instant getStartTimestamp() {
    return startTimestamp;
  }

  @JsonSerialize(using = InstantIsoSerializer.class)
  public Instant getEndTimestamp() {
    return endTimestamp;
  }

  @Override
  public String toString() {
    return "OfflineRetransmissionFromTopicRequest{"
        + "sourceTopic='"
        + sourceTopic
        + '\''
        + ", targetTopic='"
        + getTargetTopic()
        + '\''
        + ", startTimestamp="
        + startTimestamp
        + ", endTimestamp="
        + endTimestamp
        + '}';
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy