class ZMSImpl implements Authorizer, KeyStore, ZMSHandler {

    void updateGroupMemberUserAuthorityExpiry(final Group group, final String caller) {

        final String userAuthorityExpiry = getUserAuthorityExpiryAttr(group.getUserAuthorityExpiration());
        if (userAuthorityExpiry == null) {
            return;
        }

        for (GroupMember groupMember : group.getGroupMembers()) {

            // we only process users and automatically ignore services which
            // are not handled by user authority

            if (ZMSUtils.isUserDomainPrincipal(groupMember.getMemberName(), userDomainPrefix,
                    addlUserCheckDomainPrefixList)) {

                // if we don't have an expiry specified for the user
                // then we're not going to allow this member

                Date expiry = userAuthority.getDateAttribute(groupMember.getMemberName(), userAuthorityExpiry);
                if (expiry == null) {
                    throw ZMSUtils.requestError("Invalid member: " + groupMember.getMemberName() +
                            ". No expiry date attribute specified in user authority", caller);
                }
                groupMember.setExpiration(Timestamp.fromDate(expiry));
            }
        }
    }

    public  ZMSImpl();

}