intermine 1.01.00 → 1.01.01

Sign up to get free protection for your applications and to get access to all the features.
@@ -544,10 +544,20 @@ module Metadata
544
544
  if fd.is_a?(ReferenceDescriptor)
545
545
  klass.class_eval do
546
546
  define_method(fd.name) do
547
- if instance_variable_get("@" + fd.name).nil?
548
- q = __cd__.select(fd.name + ".*").where(:id => objectId)
549
- instance_var = q.results.first[fd.name]
550
- instance_variable_set("@" + fd.name, instance_var)
547
+ if instance_variable_get("@" + fd.name).nil? and not instance_variable_get("@" + fd.name + "_ISNULL")
548
+ q = __cd__.select(:id, fd.name + ".*").where(:id => objectId).outerjoin(fd.name)
549
+ first_result = q.results.first
550
+ unless first_result.nil?
551
+ instance_var = first_result[fd.name]
552
+ if instance_var.nil?
553
+ if fs.is_a?(CollectionDescriptor) and instance_var.nil?
554
+ instance_var = []
555
+ else
556
+ instance_variable_set("@" + fd.name + "_ISNULL", true)
557
+ end
558
+ end
559
+ instance_variable_set("@" + fd.name, instance_var)
560
+ end
551
561
  end
552
562
  return instance_variable_get("@" + fd.name)
553
563
  end
@@ -576,18 +586,22 @@ module Metadata
576
586
  type = fd.referencedType
577
587
  if fd.is_a?(CollectionDescriptor)
578
588
  instance_var = []
579
- val.each do |item|
580
- if item.is_a?(Hash)
581
- item = type.model.make_new(type.name, item)
582
- end
583
- if !item.is_a?(type)
584
- raise ArgumentError, "Arguments to #{fd.name} in #{@name} must be #{type.name}s"
589
+ unless val.nil?
590
+ val.each do |item|
591
+ if item.is_a?(Hash)
592
+ item = type.model.make_new(type.name, item)
593
+ end
594
+ if !item.is_a?(type)
595
+ raise ArgumentError, "Arguments to #{fd.name} in #{@name} must be #{type.name}s"
596
+ end
597
+ instance_var << item
585
598
  end
586
- instance_var << item
587
599
  end
588
600
  instance_variable_set("@" + fd.name, instance_var)
589
601
  else
590
- if val.is_a?(Hash)
602
+ if val.nil?
603
+ instance_variable_set("@" + fd.name + "_ISNULL", true)
604
+ elsif val.is_a?(Hash)
591
605
  val = type.model.make_new(type.name, val)
592
606
  end
593
607
  if !val.is_a?(type)
@@ -3,6 +3,7 @@ module Intermine
3
3
  # Webservice Client Version number
4
4
  #
5
5
  # Changes:
6
+ # 1.01.01 - Inproved lazy reference fetching
6
7
  # 1.01.00 - Test compatibility with 1.8.7, 1.9.2, 2.0.0-rc1
7
8
  # Numerous bug fixes.
8
9
  # 1.00.00 - Up to make use of new features of the InterMine 1.0 API
@@ -18,5 +19,5 @@ module Intermine
18
19
  # 0.98.09 - Major changes to results - now with thorough-going Enumerable support
19
20
  # 0.98.08 - Added column summary support
20
21
  #
21
- VERSION = "1.01.00"
22
+ VERSION = "1.01.01"
22
23
  end
data/test/live_results.rb CHANGED
@@ -8,7 +8,7 @@ require "intermine/results"
8
8
  class LiveResultsTest < Test::Unit::TestCase
9
9
 
10
10
  def setup
11
- @service = Service.new("http://localhost/intermine-test")
11
+ @service = Service.new("http://localhost:8080/intermine-test")
12
12
  @max = 50
13
13
  @q = @service.query("Employee").select("*", "department.*").where(:age => {:lt => @max})
14
14
  @empty = @service.query("Employee").where(:name => "some-non-existant-value")
@@ -141,7 +141,7 @@ end
141
141
  class LiveTemplateResultsTest < LiveResultsTest
142
142
 
143
143
  def setup
144
- @service = Service.new("http://localhost/intermine-test")
144
+ @service = Service.new("http://localhost:8080/intermine-test")
145
145
  @q = @service.template("employeesOverACertainAgeFromDepartmentA")
146
146
  @empty = @q
147
147
  @exp_count = 18
@@ -6,7 +6,7 @@ require "intermine/service"
6
6
  class LiveSummaryTest < Test::Unit::TestCase
7
7
 
8
8
  def setup
9
- @service = Service.new("http://localhost/intermine-test")
9
+ @service = Service.new("http://localhost:8080/intermine-test")
10
10
  @query = @service.query("Employee").where(:age => {:lt => 50})
11
11
  end
12
12
 
data/test/live_test.rb CHANGED
@@ -6,7 +6,7 @@ require "intermine/service"
6
6
  class LiveDemoTest < Test::Unit::TestCase
7
7
 
8
8
  def setup
9
- @service = Service.new("http://localhost/intermine-test", "test-user-token")
9
+ @service = Service.new("http://localhost:8080/intermine-test", "test-user-token")
10
10
  @temp_lists = []
11
11
  end
12
12
 
@@ -72,7 +72,7 @@ class LiveDemoTest < Test::Unit::TestCase
72
72
 
73
73
  def testLazyCollectionFetching
74
74
  list = @service.list("My-Favourite-Employees")
75
- emps = list.map {|manager| manager.department.employees.map {|employee| employee.age} }
75
+ emps = list.map {|manager| manager.department.employees.map{|employee| employee.age}.sort }
76
76
  exp = [
77
77
  [34, 36, 41, 55, 61, 61],
78
78
  [44, 49, 62],
data/test/test_results.rb CHANGED
@@ -11,7 +11,7 @@ q.add_views("name", "age")
11
11
  q.add_constraint({:path => "age", :op => ">", :value => 40})
12
12
  q.add_sort_order("age")
13
13
  params = {"query" => q.to_xml, "format" => "jsonrows"}
14
- uri = "http://squirrel.flymine.org/intermine-test/service/query/results"
14
+ uri = "http://localhost:8080/intermine-test/service/query/results"
15
15
  rr = Results::ResultsReader.new(uri, params, q.views)
16
16
  sum, total = 0, 0
17
17
  rr.each_row {|emp|
data/test/test_service.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  $LOAD_PATH << File.expand_path( File.dirname(__FILE__) + '/../lib' )
2
2
  require "intermine/service"
3
3
 
4
- service = Service.new("http://squirrel.flymine.org/intermine-test/service")
4
+ service = Service.new("http://localhost:8080/intermine-test/service")
5
5
 
6
6
  p service.version
7
7
  p service.model.name
@@ -20,7 +20,7 @@ end
20
20
  puts "Average => #{sum/total} - #{total} employees"
21
21
  puts
22
22
 
23
- tok_service = Service.new("http://squirrel.flymine.org/intermine-test/service", "a1v3V1X0f3hdmaybq0l6b7Z4eVG")
23
+ tok_service = Service.new("http://localhost:8080/intermine-test/service", "a1v3V1X0f3hdmaybq0l6b7Z4eVG")
24
24
 
25
25
  q = tok_service.new_query("Employee")
26
26
  q.add_views("name", "age")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intermine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.01.00
4
+ version: 1.01.01
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-01 00:00:00.000000000 Z
12
+ date: 2013-06-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -90,11 +90,11 @@ files:
90
90
  - test/test_service.rb
91
91
  - test/test_sugar.rb
92
92
  - test/unit_tests.rb
93
- - MANIFEST
94
93
  - LICENCE
95
- - Rakefile
96
- - README.rdoc
97
94
  - Gemfile
95
+ - MANIFEST
96
+ - README.rdoc
97
+ - Rakefile
98
98
  - contact_header.rdoc
99
99
  homepage: http://www.intermine.org
100
100
  licenses:
@@ -114,21 +114,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
114
  - - ! '>='
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
- segments:
118
- - 0
119
- hash: 150304175
120
117
  required_rubygems_version: !ruby/object:Gem::Requirement
121
118
  none: false
122
119
  requirements:
123
120
  - - ! '>='
124
121
  - !ruby/object:Gem::Version
125
122
  version: '0'
126
- segments:
127
- - 0
128
- hash: 150304175
129
123
  requirements: []
130
124
  rubyforge_project: intermine
131
- rubygems_version: 1.8.25
125
+ rubygems_version: 1.8.23
132
126
  signing_key:
133
127
  specification_version: 3
134
128
  summary: Webservice Client Library for InterMine Data-Warehouses