5: def collect_targets(requested_target_key, need_requested_targets=false)
6: _foreign_key = foreign_key
7: return [] if _foreign_key.nil?
8:
9: requested_targets = @owner[requested_target_key, true]
10: requested_targets = requested_targets.reject(&:nil?)
11: if requested_targets.empty?
12: targets = []
13: elsif _foreign_key == "dn"
14: requested_targets = requested_targets.collect do |target|
15: if target.is_a?(DN)
16: target
17: else
18: DN.parse(target)
19: end
20: end
21: targets = []
22: requested_targets.each do |target|
23: begin
24: targets << foreign_class.find(target, find_options)
25: rescue EntryNotFound
26: end
27: end
28: else
29: components = requested_targets.collect do |value|
30: [_foreign_key, value]
31: end
32: options = find_options(:filter => [:or, *components])
33: targets = foreign_class.find(:all, options)
34: end
35:
36: if need_requested_targets
37: [targets, requested_targets]
38: else
39: targets
40: end
41: end