package io.vivarium.net.messages;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.vivarium.net.UUIDSerializer;
import io.vivarium.util.UUID;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@EqualsAndHashCode(callSuper = false)
@ToString
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
public abstract class Message
{
final private UUID _messageID;
@JsonCreator
protected Message(@JsonProperty("messageID") @JsonSerialize(using = UUIDSerializer.class) UUID messageID)
{
this._messageID = messageID;
}
@JsonSerialize(using = UUIDSerializer.class)
public UUID getMessageID()
{
return _messageID;
}
}