intermine 0.99.02 → 0.99.03
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/intermine/model.rb +14 -9
- data/lib/intermine/version.rb +2 -1
- data/test/live_test.rb +3 -3
- metadata +4 -4
data/lib/intermine/model.rb
CHANGED
@@ -580,8 +580,11 @@ module Metadata
|
|
580
580
|
klass.class_eval do
|
581
581
|
define_method(fd.name) do
|
582
582
|
if instance_variable_get("@" + fd.name).nil?
|
583
|
-
q = __cd__.select(fd.name + ".*").where(:id => objectId)
|
584
|
-
instance_var = q.results.first
|
583
|
+
q = __cd__.select("id", fd.name + ".*").where(:id => objectId).outerjoin(fd.name)
|
584
|
+
instance_var = q.results.first.instance_variable_get('@' + fd.name)
|
585
|
+
if fd.is_a?(CollectionDescriptor) and instance_var.nil?
|
586
|
+
instance_var = []
|
587
|
+
end
|
585
588
|
instance_variable_set("@" + fd.name, instance_var)
|
586
589
|
end
|
587
590
|
return instance_variable_get("@" + fd.name)
|
@@ -611,14 +614,16 @@ module Metadata
|
|
611
614
|
type = fd.referencedType
|
612
615
|
if fd.is_a?(CollectionDescriptor)
|
613
616
|
instance_var = []
|
614
|
-
val.
|
615
|
-
|
616
|
-
item
|
617
|
-
|
618
|
-
|
619
|
-
|
617
|
+
if not val.nil?
|
618
|
+
val.each do |item|
|
619
|
+
if item.is_a?(Hash)
|
620
|
+
item = type.model.make_new(type.name, item)
|
621
|
+
end
|
622
|
+
if !item.is_a?(type)
|
623
|
+
raise ArgumentError, "Arguments to #{fd.name} in #{@name} must be #{type.name}s"
|
624
|
+
end
|
625
|
+
instance_var << item
|
620
626
|
end
|
621
|
-
instance_var << item
|
622
627
|
end
|
623
628
|
instance_variable_set("@" + fd.name, instance_var)
|
624
629
|
else
|
data/lib/intermine/version.rb
CHANGED
@@ -16,5 +16,6 @@ module Intermine
|
|
16
16
|
# - Added support for "json" format (performance) improvement
|
17
17
|
# 0.99.01 - Added support for sort-orders on selected classes which are not in the view
|
18
18
|
# 0.99.02 - Fixed bug with null values in new result rows (resulting commonly from outer joins)
|
19
|
-
|
19
|
+
# 0.99.03 - Fixed handling of null references and empty collections in lazy reference fetching.
|
20
|
+
VERSION = "0.99.03"
|
20
21
|
end
|
data/test/live_test.rb
CHANGED
@@ -76,10 +76,10 @@ class LiveDemoTest < Test::Unit::TestCase
|
|
76
76
|
def testLazyCollectionFetching
|
77
77
|
list = @service.list("My-Favourite-Employees")
|
78
78
|
emps = list.map {|manager| manager.department.employees.map {|employee| employee.age} }
|
79
|
-
exp = [[
|
79
|
+
exp = [[41, 36, 55, 34, 61, 61],
|
80
80
|
[44, 49, 62],
|
81
|
-
[
|
82
|
-
[
|
81
|
+
[37, 45, 30, 64, 46, 58],
|
82
|
+
[37, 49, 39, 57, 36, 59]]
|
83
83
|
assert_equal(exp, emps)
|
84
84
|
|
85
85
|
sum = list.reduce(0) {|m, manager| m + manager.department.employees.reduce(0) {|n, emp| n + emp.age}}
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: intermine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 405
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 99
|
9
|
-
-
|
10
|
-
version: 0.99.
|
9
|
+
- 3
|
10
|
+
version: 0.99.03
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alex Kalderimis
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2012-01-18 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: json
|