You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2007/12/06 17:26:14 UTC
svn commit: r601779 -
/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/AbstractGroup.java
Author: andreas
Date: Thu Dec 6 08:26:13 2007
New Revision: 601779
URL: http://svn.apache.org/viewvc?rev=601779&view=rev
Log:
Initialize user and IP range managers when Group.getMembers() is called. This fixes bug 44035.
Modified:
lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/AbstractGroup.java
Modified: lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/AbstractGroup.java
URL: http://svn.apache.org/viewvc/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/AbstractGroup.java?rev=601779&r1=601778&r2=601779&view=diff
==============================================================================
--- lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/AbstractGroup.java (original)
+++ lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/impl/AbstractGroup.java Thu Dec 6 08:26:13 2007
@@ -56,14 +56,35 @@
* @return An array of {@link Groupable}s.
*/
public Groupable[] getMembers() {
+ Set members = members();
return (Groupable[]) members.toArray(new Groupable[members.size()]);
}
+
+ private boolean initializing = false;
+
+ protected Set members() {
+ // First we must make sure that the user and IP range managers
+ // are initialized because otherwise the group won't contain their members
+ if (!initializing) {
+ // avoid race condition
+ initializing = true;
+ try {
+ getItemManager().getAccreditableManager().getUserManager();
+ getItemManager().getAccreditableManager().getIPRangeManager();
+ } catch (AccessControlException e) {
+ throw new RuntimeException(e);
+ }
+ initializing = false;
+ }
+ return this.members;
+ }
/**
* Adds a member to this group.
* @param member The member to add.
*/
public void add(Groupable member) {
+ Set members = members();
assert (member != null) && !members.contains(member);
members.add(member);
member.addedToGroup(this);
@@ -74,6 +95,7 @@
* @param member The member to remove.
*/
public void remove(Groupable member) {
+ Set members = members();
assert (member != null) && members.contains(member);
members.remove(member);
member.removedFromGroup(this);
@@ -95,7 +117,7 @@
* @return A boolean value.
*/
public boolean contains(Groupable member) {
- boolean contains = members.contains(member);
+ boolean contains = members().contains(member);
if (!contains && member instanceof User && getRule() != null) {
User user = (User) member;
@@ -132,19 +154,21 @@
private String rule;
public void setRule(String rule) throws AccessControlException {
- AttributeRuleEvaluator evaluator = getAttributeRuleEvaluator();
- ValidationResult result = evaluator.validate(rule);
- if (!result.succeeded()) {
- StringBuffer msg = new StringBuffer();
- Message[] messages = result.getMessages();
- for (int i = 0; i < messages.length; i++) {
- if (i > 0) {
- msg.append("; ");
+ if (rule != null) {
+ AttributeRuleEvaluator evaluator = getAttributeRuleEvaluator();
+ ValidationResult result = evaluator.validate(rule);
+ if (!result.succeeded()) {
+ StringBuffer msg = new StringBuffer();
+ Message[] messages = result.getMessages();
+ for (int i = 0; i < messages.length; i++) {
+ if (i > 0) {
+ msg.append("; ");
+ }
+ msg.append(messages[i].getText());
}
- msg.append(messages[i].getText());
+ throw new AccessControlException("The rule for group [" + getId() + "] is not valid: "
+ + msg.toString());
}
- throw new AccessControlException("The rule for group [" + getId() + "] is not valid: "
- + msg.toString());
}
this.rule = rule;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org