public class SecureConversationTokenBuilder implements AssertionBuilder {
public Assertion build(OMElement element, AssertionBuilderFactory factory)
throws IllegalArgumentException {
SecureConversationToken conversationToken = new SecureConversationToken(SPConstants.SP_V12);
OMAttribute attribute = element.getAttribute(SP12Constants.INCLUDE_TOKEN);
if (attribute == null) {
throw new IllegalArgumentException(
"SecurityContextToken doesn't contain any sp:IncludeToken attribute");
}
String inclusionValue = attribute.getAttributeValue().trim();
conversationToken.setInclusion(SP12Constants.getInclusionFromAttributeValue(inclusionValue));
OMElement issuer = element.getFirstChildWithName(SP12Constants.ISSUER);
if ( issuer != null) {
conversationToken.setIssuerEpr(issuer.getFirstElement());
}
element = element.getFirstChildWithName(SPConstants.POLICY);
if (element != null) {
if (element.getFirstChildWithName(SP12Constants.REQUIRE_DERIVED_KEYS) != null) {
conversationToken.setDerivedKeys(true);
} else if (element.getFirstChildWithName(SP12Constants.REQUIRE_IMPLIED_DERIVED_KEYS) != null) {
conversationToken.setImpliedDerivedKeys(true);
} else if (element.getFirstChildWithName(SP12Constants.REQUIRE_EXPLICIT_DERIVED_KEYS) != null) {
conversationToken.setExplicitDerivedKeys(true);
}
if (element
.getFirstChildWithName(SP12Constants.REQUIRE_EXTERNAL_URI_REFERNCE) != null) {
conversationToken.setRequireExternalUriRef(true);
}
if (element
.getFirstChildWithName(SP12Constants.SC10_SECURITY_CONTEXT_TOKEN) != null) {
conversationToken.setSc10SecurityContextToken(true);
}
OMElement bootstrapPolicyElement = element.getFirstChildWithName(SP12Constants.BOOTSTRAP_POLICY);
if (bootstrapPolicyElement != null) {
Policy policy = PolicyEngine.getPolicy(bootstrapPolicyElement.getFirstElement());
conversationToken.setBootstrapPolicy(policy);
}
}
return conversationToken;
}