caruby-tissue 1.3.2 → 1.3.3

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/History.txt CHANGED
@@ -18,3 +18,7 @@
18
18
 
19
19
  * Minor migration bug fixes
20
20
 
21
+ === 1.3.3 / 2011-02-26
22
+
23
+ * JRuby 1.5 upgrade
24
+
@@ -1,4 +1,5 @@
1
1
  require 'date'
2
+ require 'catissue/domain/hash_code'
2
3
 
3
4
  module CaTissue
4
5
  # import the Java class
@@ -6,7 +7,7 @@ module CaTissue
6
7
 
7
8
  # The CollectionProtocol domain class.
8
9
  class CollectionProtocol
9
- include Resource
10
+ include Resource, HashCode
10
11
 
11
12
  # caTissue alert - Bug #64: Some domain collection properties not initialized.
12
13
  # Initialize consent_tiers if necessary.
@@ -52,23 +53,6 @@ module CaTissue
52
53
  registrations.nil? ? [] : registrations.map { |reg| reg.participant }
53
54
  end
54
55
 
55
- # Overrides the Java CollectionProtocol hashCode to make the hash insensitive to identifier assignment.
56
- #
57
- # @see #==
58
- def hash
59
- # caTissue alert - bad caTissue API hashCode leads to ugly cascading errors when using a CP in a Set
60
- (object_id * 31) + 17
61
- end
62
-
63
- # Returns whether other is {#equal?} to CollectionProtocol.
64
- #
65
- # This method is a work-around for caTissue Bug #70: CollectionProtocol and non-CollectionProtocol are equal in caTissue 1.1.
66
- def ==(other)
67
- object_id == other.object_id
68
- end
69
-
70
- alias :eql? :==
71
-
72
56
  # Returns a new CollectionProtocolRegistration for the specified participant in this CollectionProtocol with
73
57
  # optional +protocol_participant_identifier+ ppi.
74
58
  def register(participant, ppi=nil)
@@ -1,4 +1,5 @@
1
1
  require 'caruby/util/collection'
2
+ require 'catissue/domain/hash_code'
2
3
 
3
4
  module CaTissue
4
5
  # import the Java class
@@ -6,7 +7,7 @@ module CaTissue
6
7
 
7
8
  # The CollectionProtocolRegistration domain class.
8
9
  class CollectionProtocolEvent
9
- include Resource
10
+ include Resource, HashCode
10
11
 
11
12
  # caTissue alert - Bug #64: Some domain collection properties not initialized.
12
13
  # Initialize specimen_collection_groups if necessary.
@@ -46,25 +47,6 @@ module CaTissue
46
47
  self.specimen_collection_groups ||= Java::JavaUtil::LinkedHashSet.new
47
48
  end
48
49
 
49
- # Overrides the Java CollectionProtocolEvent hashCode to make the hash insensitive to identifier assignment.
50
- def hash
51
- # caTissue alert - caTissue determines the hashCode from the identifier. Consequently, a CollectionProtocolEvent
52
- # added to a HashSet without an identifier can no longer find the CPE when it is assigned an identifier.
53
- # This bug results in obscure delayed cascade errors. Work-around is to override the hash method in the
54
- # Ruby CPE wrapper class.
55
- (object_id * 31) + 17
56
- end
57
-
58
- # Returns whether other is a CollectionProtocolEvent with the same identifier as this CollectionProtocolEvent,
59
- # or the same object_id if this CollectionProtocolEvent's identifier is nil.
60
- #
61
- # This method is a work-around for caTissue bug: CollectionProtocolEvent and non-CollectionProtocolEvent are equal in caTissue 1.1.
62
- def ==(other)
63
- object_id == other.object_id
64
- end
65
-
66
- alias :eql? :==
67
-
68
50
  # Removes associations to this registration
69
51
  def delete
70
52
  protocol.events.delete(self) if protocol
@@ -0,0 +1,28 @@
1
+ module CaTissue
2
+ # This HashCode mix-in overrides the caTissue hashCode and equality test to work around caTissue bugs.
3
+ module HashCode
4
+ # caTissue alert - caTissue hashCode changes with identifier assignment.
5
+ # This leads to ugly cascading errors when used in a Set or Hash.
6
+ #
7
+ # @return [Integer] a unique hash code
8
+ # @see #==
9
+ def hash
10
+ # JRuby alert - JRuby 1.5 object_id can be a String, e.g. CollectionProtocol_null.
11
+ # Work-around to the work-around is to make a unique object id in this aberrant case.
12
+ @_hc ||= (Object.new.object_id * 31) + 17
13
+ end
14
+
15
+ # Returns whether other is of type same type as this object with the same hash as this object.
16
+ #
17
+ # caTissue alert - Bug #70: caTissue equal returns true for class mismatch.
18
+ #
19
+ # @param other the object to compare
20
+ # @return [Boolean] whether the objects are identical
21
+ # @see #hash
22
+ def ==(other)
23
+ equal?(other)
24
+ end
25
+
26
+ alias :eql? :equal?
27
+ end
28
+ end
@@ -1,6 +1,7 @@
1
1
  require 'caruby/util/collection'
2
2
  require 'caruby/util/partial_order'
3
3
  require 'catissue/util/storage_type_holder'
4
+ require 'catissue/domain/hash_code'
4
5
 
5
6
  module CaTissue
6
7
  # import the Java class
@@ -8,7 +9,7 @@ module CaTissue
8
9
 
9
10
  # The StorageType domain class.
10
11
  class StorageType
11
- include StorageTypeHolder, PartialOrder, Resource
12
+ include StorageTypeHolder, PartialOrder, Resource, HashCode
12
13
 
13
14
  add_attribute_aliases(:default_temperature => :default_temprature_in_centigrade)
14
15
 
@@ -70,13 +71,5 @@ module CaTissue
70
71
  return 1 if holds_storage_types.detect { |child| child >= other }
71
72
  -1 if other > self
72
73
  end
73
-
74
- # Overrides the Java StorageType hashCode to make the hash insensitive to identifier assignment.
75
- #
76
- # @see #==
77
- def hash
78
- # caTissue alert - bad caTissue API hashCode leads to ugly cascading errors when using a CP in a Set
79
- (object_id * 31) + 17
80
- end
81
74
  end
82
75
  end
@@ -1,6 +1,6 @@
1
1
  module CaTissue
2
2
  # The version of this caRuby Tissue release.
3
- VERSION = "1.3.2"
3
+ VERSION = "1.3.3"
4
4
 
5
5
  # The supported caTissue release versions.
6
6
  CATISSUE_VERSIONS = "1.1.2"
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: caruby-tissue
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.3.2
5
+ version: 1.3.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - OHSU
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-11-30 00:00:00 -08:00
13
+ date: 2011-02-26 00:00:00 -08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -116,6 +116,7 @@ files:
116
116
  - lib/catissue/domain/embedded_event_parameters.rb
117
117
  - lib/catissue/domain/external_identifier.rb
118
118
  - lib/catissue/domain/frozen_event_parameters.rb
119
+ - lib/catissue/domain/hash_code.rb
119
120
  - lib/catissue/domain/institution.rb
120
121
  - lib/catissue/domain/new_specimen_array_order_item.rb
121
122
  - lib/catissue/domain/order_details.rb