intermine 1.01.00 → 1.01.01

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.
@@ -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