/** {@inheritDoc} */ protected void processChildElement(XMLObject parentSAMLObject, XMLObject childSAMLObject) throws UnmarshallingException { Status status = (Status) parentSAMLObject; if (childSAMLObject instanceof StatusCode) { status.setStatusCode((StatusCode) childSAMLObject); } else if (childSAMLObject instanceof StatusMessage) { status.setStatusMessage((StatusMessage) childSAMLObject); } else if (childSAMLObject instanceof StatusDetail) { status.setStatusDetail((StatusDetail) childSAMLObject); } else { super.processChildElement(parentSAMLObject, childSAMLObject); } } }
/** * Build and attach {@link StatusMessage} element. * * @param status the element to attach to * @param message the message to set */ private void buildStatusMessage(@Nonnull final Status status, @Nonnull @NotEmpty final String message) { final SAMLObjectBuilder<StatusMessage> statusMessageBuilder = (SAMLObjectBuilder<StatusMessage>) XMLObjectProviderRegistrySupport.getBuilderFactory().<StatusMessage>getBuilderOrThrow( StatusMessage.DEFAULT_ELEMENT_NAME); final StatusMessage sm = statusMessageBuilder.buildObject(); sm.setMessage(message); status.setStatusMessage(sm); }
@Nonnull @Override protected Response buildSamlResponse( @Nonnull final RequestContext springRequestContext, @Nonnull final ProfileRequestContext<SAMLObject, SAMLObject> profileRequestContext) { final TicketValidationRequest request = getCASRequest(profileRequestContext); final TicketValidationResponse validationResponse = getCASResponse(profileRequestContext); final Response response = newSAMLObject(Response.class, Response.DEFAULT_ELEMENT_NAME); response.setID(request.getTicket()); response.setIssueInstant(DateTime.now()); final Status status = newSAMLObject(Status.class, Status.DEFAULT_ELEMENT_NAME); final StatusCode statusCode = newSAMLObject(StatusCode.class, StatusCode.DEFAULT_ELEMENT_NAME); statusCode.setValue(new QName(NAMESPACE, validationResponse.getErrorCode())); status.setStatusCode(statusCode); final StatusMessage message = newSAMLObject(StatusMessage.class, StatusMessage.DEFAULT_ELEMENT_NAME); message.setMessage(validationResponse.getErrorDetail()); status.setStatusMessage(message); response.setStatus(status); return response; } }
/** * Create a new SAML status object. * * @param codeValue the code value * @param statusMessage the status message * @return the status */ public Status newStatus(final QName codeValue, final String statusMessage) { final Status status = newSamlObject(Status.class); final StatusCode code = newSamlObject(StatusCode.class); code.setValue(codeValue); status.setStatusCode(code); if (statusMessage != null) { final StatusMessage message = newSamlObject(StatusMessage.class); message.setMessage(statusMessage); status.setStatusMessage(message); } return status; }