throws UnsupportedConstraintException
{
KerberosPrincipal principal = null;
for (Iterator i = constraints.requirements().iterator(); i.hasNext(); )
{
InvocationConstraint c = (InvocationConstraint) i.next();
if (c instanceof ServerMinPrincipal) {
Set s = ((ServerMinPrincipal) c).elements();
if (s.size() > 1) {
throw new UnsupportedConstraintException(
"multiple server principals");
}
Principal p = (Principal) s.iterator().next();
if (!(p instanceof KerberosPrincipal)) {
throw new UnsupportedConstraintException(
"non-kerberos server principal");
}
if (principal == null) {
principal = (KerberosPrincipal) p;
} else if (!principal.equals(p)) {
throw new UnsupportedConstraintException(
"multiple server principals");
}
}
// NYI: support ConstraintAlternatives with ServerMinPrincipals
}
if (principal != null) {
return principal;
}
for (Iterator i = constraints.preferences().iterator(); i.hasNext(); )
{
InvocationConstraint c = (InvocationConstraint) i.next();
if (c instanceof ServerMinPrincipal) {
Set s = ((ServerMinPrincipal) c).elements();
for (Iterator j = s.iterator(); j.hasNext(); ) {
Principal p = (Principal) j.next();
if (p instanceof KerberosPrincipal) {