private Stream<Mapping> convertAndRecurseMapping(Mapping mapping, User originalUser, User rewrittenUser, int remainingLoops) throws ErrorMappingException, RecipientRewriteTableException {
LOGGER.debug("Valid virtual user mapping {} to {}", originalUser, rewrittenUser);
Stream<Mapping> nonRecursiveResult = Stream.of(toMapping(rewrittenUser, mapping.getType()));
if (!recursive) {
return nonRecursiveResult;
}
if (originalUser.equals(rewrittenUser)) {
return mapping.handleIdentity(nonRecursiveResult);
} else {
return recurseMapping(nonRecursiveResult, rewrittenUser, remainingLoops);
}
}