* @return a {@code Principal} representing the extracted identity, or {@code null} if the contents of the
* {@code OnBehalfOf} element could not be parsed.
*/
public static Principal getOnBehalfOfPrincipal(OnBehalfOfType onBehalfOf) {
// if OnBehalfOfType contains a username token, return this username in the form of a principal.
UsernameTokenType usernameToken = null;
List<Object> theList = onBehalfOf.getAny();
for (Object content : theList) {
if (content instanceof UsernameTokenType)
usernameToken = (UsernameTokenType) content;
else if (content instanceof JAXBElement) {
JAXBElement<?> element = (JAXBElement<?>) content;
if (element.getName().getLocalPart().equalsIgnoreCase("UsernameToken"))
usernameToken = (UsernameTokenType) element.getValue();
}
}
/*
* Object content = onBehalfOf.getAny(); if (content instanceof UsernameTokenType) usernameToken = (UsernameTokenType)
* content; else if (content instanceof JAXBElement) { JAXBElement<?> element = (JAXBElement<?>) content; if
* (element.getName().getLocalPart().equalsIgnoreCase("UsernameToken")) usernameToken = (UsernameTokenType)
* element.getValue(); }
*/
if (usernameToken != null && usernameToken.getUsername() != null) {
final String username = usernameToken.getUsername().getValue();
return new Principal() {
public String getName() {
return username;
}
};