package org.apereo.cas.authentication.principal;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import org.springframework.core.Ordered;
import java.io.Serializable;
/**
* Represents the task of building a CAS response
* that is returned by a service.
*
* @param <T> the type parameter
* @author Misagh Moayyed
* @since 4.2.0
*/
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY)
public interface ResponseBuilder<T extends WebApplicationService> extends Serializable, Ordered {
/**
* Build response. The implementation must produce
* a response that is based on the type passed. Given
* the protocol used, the ticket id may be passed
* as part of the response. If the response type
* is not recognized, an error must be thrown back.
*
* @param service the service
* @param serviceTicketId the service ticket id
* @return the response
*/
Response build(T service, String serviceTicketId);
/**
* Supports this service.
*
* @param service the service
* @return true/false
*/
boolean supports(T service);
}