public Collection<PrincipalRule> getRulesForPrincipal(Principal principal) { Collection<PrincipalRule> rules = this.rulesPerPrincipal.get(principal.getName()); if (rules != null) return rules; Criteria c = new Criteria(); c.addEqualTo("principalName", principal.getName()); rules = getPersistenceBrokerTemplate().getCollectionByQuery( QueryFactory.newQuery(getPrincipalRuleClass(), c)); for (PrincipalRule pr : rules) { ProfilingRule rule = pr.getProfilingRule(); if (rule != null) rule.setResolvers(resolvers); } this.rulesPerPrincipal.put(principal.getName(), rules); return rules; }
public String[] getLocatorNamesForPrincipal(Principal principal) { Criteria c = new Criteria(); c.addEqualTo("principalName", principal.getName()); Collection<PrincipalRule> result = getPersistenceBrokerTemplate() .getCollectionByQuery( QueryFactory.newQuery(getPrincipalRuleClass(), c)); if (result.size() == 0) { return new String[]{}; } String[] names = new String[result.size()]; int ix = 0; for (PrincipalRule pr : result) { names[ix] = pr.getLocatorName(); pr.getProfilingRule().setResolvers(resolvers); ix++; } return names; }
public void setRuleForPrincipal(Principal principal, ProfilingRule rule, String locatorName) { Criteria c = new Criteria(); c.addEqualTo("principalName", principal.getName()); c.addEqualTo("locatorName", locatorName); PrincipalRule pr = (PrincipalRule) getPersistenceBrokerTemplate() .getObjectByQuery( QueryFactory.newQuery(getPrincipalRuleClass(), c)); if (pr == null) { pr = new PrincipalRuleImpl(); // TODO: factory pr.setPrincipalName(principal.getName()); pr.setLocatorName(locatorName); pr.setProfilingRule(rule); } rule.setResolvers(resolvers); pr.setProfilingRule(rule); getPersistenceBrokerTemplate().store(pr); principalRules.put(makePrincipalRuleKey(principal.getName(), locatorName), pr); // track cached principal rules trackCachedPrincipalRulesPut(principal.getName(), pr); // reset persistent rules per principal rulesPerPrincipal.remove(principal.getName()); }
/** * Helper function to lookup principal rule associations by principal * * @param principal The string representation of the principal name. * @return The found PrincipalRule associated with the principal key or null * if not found. */ private PrincipalRule lookupPrincipalRule(String principal, String locatorName) { PrincipalRule pr = principalRules.get(makePrincipalRuleKey(principal, locatorName)); if (pr != null) { return pr; } Criteria c = new Criteria(); c.addEqualTo("principalName", principal); c.addEqualTo("locatorName", locatorName); pr = (PrincipalRule) getPersistenceBrokerTemplate().getObjectByQuery( QueryFactory.newQuery(getPrincipalRuleClass(), c)); if (pr != null) pr.getProfilingRule().setResolvers(resolvers); principalRules.put(makePrincipalRuleKey(principal, locatorName), pr); // track cached principal rules trackCachedPrincipalRulesPut(principal, pr); return pr; }