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