package com.dbg.cloud.acheron.routing.store.cassandra; import com.dbg.cloud.acheron.routing.Route; import lombok.*; import org.springframework.data.cassandra.mapping.Column; import org.springframework.data.cassandra.mapping.PrimaryKey; import org.springframework.data.cassandra.mapping.Table; import java.io.Serializable; import java.util.Date; import java.util.HashSet; import java.util.Set; @Table(value = "routes") @Getter @Setter @EqualsAndHashCode @ToString @AllArgsConstructor @NoArgsConstructor public final class CassandraRoute implements Route, Serializable { @PrimaryKey private String id; @Column("http_methods") private Set<String> httpMethods = new HashSet<>(); @Column("path") private String path; @Column(value = "service_id") private String serviceId; @Column private String url; @Column(value = "keep_prefix") private Boolean keepPrefix = false; @Column private Boolean retryable = false; @Column(value = "override_sensitive_headers") private Boolean overrideSensitiveHeaders = false; @Column(value = "sensitive_headers") private Set<String> sensitiveHeaders = new HashSet<>(); @Column(value = "created_at") private Date createdAt = new Date(); @Override public boolean isKeepPrefix() { return keepPrefix != null ? keepPrefix : false; } @Override public boolean isRetryable() { return retryable != null ? retryable : false; } @Override public boolean isOverrideSensitiveHeaders() { return overrideSensitiveHeaders != null ? overrideSensitiveHeaders : false; } public Set<String> getHttpMethods() { return httpMethods != null ? httpMethods : new HashSet<>(); } public Set<String> getSensitiveHeaders() { return sensitiveHeaders != null ? sensitiveHeaders : new HashSet<>(); } }