package org.apereo.cas.ws.idp.services; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.wss4j.dom.WSConstants; import org.apereo.cas.services.AbstractRegisteredService; import org.apereo.cas.services.RegexRegisteredService; import org.apereo.cas.ws.idp.WSFederationConstants; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; /** * This is {@link WSFederationRegisteredService}. * * @author Misagh Moayyed * @since 5.1.0 */ @Entity @DiscriminatorValue("wsfed") public class WSFederationRegisteredService extends RegexRegisteredService { private static final long serialVersionUID = -3700571300568534062L; private String realm = WSFederationConstants.REALM_DEFAULT_URI; private String protocol = WSConstants.WST_NS_05_12; private String tokenType = WSConstants.WSS_SAML2_TOKEN_TYPE; private String wsdlLocation; private String namespace = WSFederationConstants.HTTP_DOCS_OASIS_OPEN_ORG_WS_SX_WS_TRUST_200512; private String addressingNamespace = WSFederationConstants.HTTP_WWW_W3_ORG_2005_08_ADDRESSING; private String policyNamespace; private String wsdlService = WSFederationConstants.SECURITY_TOKEN_SERVICE; private String wsdlEndpoint = WSFederationConstants.SECURITY_TOKEN_SERVICE_ENDPOINT; private String appliesTo; @Override protected AbstractRegisteredService newInstance() { return new WSFederationRegisteredService(); } public String getAddressingNamespace() { return addressingNamespace; } public void setAddressingNamespace(final String addressingNamespace) { this.addressingNamespace = addressingNamespace; } public String getRealm() { return realm; } public void setRealm(final String realm) { this.realm = realm; } public String getProtocol() { return protocol; } public void setProtocol(final String protocol) { this.protocol = protocol; } public String getTokenType() { return tokenType; } public void setTokenType(final String tokenType) { this.tokenType = tokenType; } public String getWsdlLocation() { return wsdlLocation; } public void setWsdlLocation(final String wsdlLocation) { this.wsdlLocation = wsdlLocation; } public String getNamespace() { return namespace; } public void setNamespace(final String namespace) { this.namespace = namespace; } public String getWsdlService() { return wsdlService; } public void setWsdlService(final String wsdlService) { this.wsdlService = wsdlService; } public String getWsdlEndpoint() { return wsdlEndpoint; } public void setWsdlEndpoint(final String wsdlEndpoint) { this.wsdlEndpoint = wsdlEndpoint; } public String getAppliesTo() { return StringUtils.defaultIfBlank(appliesTo, this.realm); } public void setAppliesTo(final String appliesTo) { this.appliesTo = appliesTo; } public String getPolicyNamespace() { return policyNamespace; } public void setPolicyNamespace(final String policyNamespace) { this.policyNamespace = policyNamespace; } @Override public boolean equals(final Object obj) { if (obj == null) { return false; } if (obj == this) { return true; } if (obj.getClass() != getClass()) { return false; } final WSFederationRegisteredService rhs = (WSFederationRegisteredService) obj; return new EqualsBuilder() .appendSuper(super.equals(obj)) .append(this.realm, rhs.realm) .append(this.addressingNamespace, rhs.addressingNamespace) .append(this.protocol, rhs.protocol) .append(this.tokenType, rhs.tokenType) .append(this.wsdlLocation, rhs.wsdlLocation) .append(this.namespace, rhs.namespace) .append(this.policyNamespace, rhs.policyNamespace) .append(this.wsdlService, rhs.wsdlService) .append(this.wsdlEndpoint, rhs.wsdlEndpoint) .append(getAppliesTo(), getAppliesTo()) .isEquals(); } @Override public int hashCode() { return new HashCodeBuilder() .appendSuper(super.hashCode()) .append(realm) .append(addressingNamespace) .append(protocol) .append(tokenType) .append(wsdlLocation) .append(namespace) .append(wsdlService) .append(wsdlEndpoint) .append(getAppliesTo()) .append(policyNamespace) .toHashCode(); } }