package org.apereo.cas.services;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import java.util.HashSet;
import java.util.Set;
/**
* The {@link DefaultRegisteredServiceProperty} represents
* a single property associated with a registered service.
* Properties are assumed to be a set a String values.
*
* @author Misagh Moayyed
* @since 4.2
*/
@Entity
@Table(name="RegexRegisteredServiceProperty")
public class DefaultRegisteredServiceProperty implements RegisteredServiceProperty {
private static final long serialVersionUID = 1349556364689133211L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Lob
@Column(name = "property_values")
private HashSet<String> values = new HashSet<>();
@Override
public Set<String> getValues() {
if (this.values == null) {
this.values = new HashSet<>();
}
return this.values;
}
@Override
@JsonIgnore
public String getValue() {
if (this.values.isEmpty()) {
return null;
}
return this.values.iterator().next();
}
@Override
public boolean contains(final String value) {
return this.values.contains(value);
}
/**
* Sets values.
*
* @param values the values
*/
public void setValues(final Set<String> values) {
getValues().clear();
if (values == null) {
return;
}
getValues().addAll(values);
}
@Override
public boolean equals(final Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (obj.getClass() != getClass()) {
return false;
}
final DefaultRegisteredServiceProperty rhs = (DefaultRegisteredServiceProperty) obj;
return new EqualsBuilder()
.append(this.values, rhs.values)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder()
.append(this.values)
.toHashCode();
}
}