Don't set @members twice
diff --git a/lib/whimsy/asf/ldap.rb b/lib/whimsy/asf/ldap.rb
index e13d582..49ce8ee 100644
--- a/lib/whimsy/asf/ldap.rb
+++ b/lib/whimsy/asf/ldap.rb
@@ -348,6 +348,7 @@
# safely dereference a weakref array attribute. Block provided is
# used when reference is not set or has been reclaimed.
+ # N.B. dereference_weakref(object, :XYZ, block) stores the reference in @XYZ
def self.dereference_weakref(object, attr, &block)
attr = "@#{attr}"
value = object.instance_variable_get(attr) || block.call
@@ -377,6 +378,7 @@
end
# shortcut for dereference weakref
+ # N.B. weakref(:XYZ) stores the reference in @XYZ
def self.weakref(attr, &block)
self.dereference_weakref(self, attr, &block)
end
@@ -490,6 +492,7 @@
end
# construct a weak reference to this object
+ # N.B. weakref(:XYZ) stores the reference in @XYZ
def weakref(attr, &block)
ASF.dereference_weakref(self, attr, &block)
end
@@ -1017,6 +1020,7 @@
end
# setter for members, should only be used by #preload
+ # N.B. Do not dereference @members directly; use weakref(:members) instead
def members=(members)
@members = WeakRef.new(members)
end
@@ -1028,7 +1032,7 @@
# return a list of ids who are members of this group
def memberids
- self.members = weakref(:members) do
+ weakref(:members) do # initialises @members if necessary
ASF.search_one(base, "cn=#{name}", 'memberUid').flatten
end
end
@@ -1149,11 +1153,13 @@
end
# setter for members, should only be called by #preload.
+ # N.B. Do not dereference @members directly; use weakref(:members) instead
def members=(members)
@members = WeakRef.new(members)
end
# setter for owners, should only be called by #preload.
+ # N.B. Do not dereference @owners directly; use weakref(:owners) instead
def owners=(owners)
@owners = WeakRef.new(owners)
end
@@ -1379,6 +1385,7 @@
attr_accessor :createTimestamp
# setters for members. Should only be called by #preload
+ # N.B. Do not dereference @members directly; use weakref(:members) instead
def members=(members)
@members = WeakRef.new(members)
end