private Collection<Group> findAssociatedGroupsCascaded(Collection<Group> previous, Group group, String groupType, boolean parent, IdentitySearchCriteria criteria) throws IdentityException { getIdentitySession().save(); Collection<Group> results = findAssociatedGroups(group, groupType, parent, false, criteria); List<Group> newResults = new LinkedList<Group>(); // For each result make recursive call unless it is already in previous results for (Group result : results) { if (!previous.contains(result)) { newResults.add(result); previous.add(result); getIdentitySession().save(); newResults.addAll(findAssociatedGroupsCascaded(previous, result, groupType, parent, criteria)); } } return newResults; }
public void flush() { if (configuration.isUseJTA()) { if (traceLoggingEnabled) { log.trace("Flushing UserTransaction in method flush"); } // Complete restart of JTA transaction don't have good performance. So we will only sync identitySession (same // as for non-jta environment) // finishJTATransaction(); // beginJTATransaction(); try { if (jtaTransactionLifecycleService.getUserTransaction().getStatus() == Status.STATUS_ACTIVE) { idmService_.getIdentitySession().save(); } } catch (Exception e) { log.error(e.getMessage(), e); } } else { try { if (idmService_.getIdentitySession().getTransaction().isActive()) { idmService_.getIdentitySession().save(); } } catch (Exception e) { log.error(e.getMessage(), e); recoverFromIDMError(e); } } }
public void enableAll(int first) throws Exception { final long startTime = System.currentTimeMillis(); startTransaction(); final int size = getIdentitySession().getPersistenceManager().getUserCount(); log.info("Starting enable for {} users", size - first); int length = batch > size ? size : batch; while (length > 0) { try { log.info("enable for user from {} to {}", first, (first + length)); startTransaction(); UserQueryBuilder qb = getIdentitySession().createUserQueryBuilder(); List<User> users = load(qb, first, length); for (User user : users) { setEnabled(user.getId(), true); } getIdentitySession().save(); endTransaction(); } catch (Exception e) { log.info("fail to migrate for users from index: {}", first); recoverFromIDMError(e); break; } first = first + batch; length = batch + first > size ? size - first : batch; } log.info("Finish enable all users in : {}ms", (System.currentTimeMillis() - startTime)); }