evt-messaging 2.5.5.2 → 2.5.6.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be94b5e7a4670a45d0bc085b46690c1e2db3d43850dc4da4f21109d3c6514b0f
4
- data.tar.gz: 2a8f66b930241c0f82acb7d70fefd0c1582e9608c7e753a5298abf7be1b59e32
3
+ metadata.gz: 4ed32a3950086fa459ebb29d4343df38845f3ce1d4a559205bb5fcd6d8c42c40
4
+ data.tar.gz: 6187c2a9da83c38d5f003259a1ecf59b96fcf88aaaa16ca3b5ec03723a6ff806
5
5
  SHA512:
6
- metadata.gz: 1e6e49a66b6715c5775de11289496868de8bdb74fa691c44637948ee1d1c3e1562e08939bfd84920d293a12210fb12616f8f276925bcd05886ad82343d8739a3
7
- data.tar.gz: 1eeac837bb22e5b1826daa69ce4a0237075df131210d466aeff0ab69fc04e7c49b9304ed632bfeefacd6d6370ac9a8882c6c70fe6ad62dceffbcd67a19fa244e
6
+ metadata.gz: 56c25adccd43baa313b05d76aa3b2e8f82977be4e898c0680ae38ba479e009d88a31caa4deb50adc59fc3ebce58dc74e46f87dee6a44f8bfd2facb3bedb0c94a
7
+ data.tar.gz: 6e375228008283d4bc40f7495658223ca789afabc6c99d86805bee419c6b42dbfd06850e3ddc771a30f7c5ff46289ae2485d3e14fa2c5076a4c5cd4057434344
@@ -49,10 +49,16 @@ module Messaging
49
49
  "#{causation_message_stream_name}/#{causation_message_position}"
50
50
  end
51
51
 
52
+ # def self.properties
53
+ # {
54
+ # some_property: 'some property value'
55
+ # }
56
+ # end
57
+
52
58
  def self.properties
53
- {
54
- some_property: 'some property value'
55
- }
59
+ [
60
+ Messaging::Message::Metadata::Property.new(:some_property, 'some property value')
61
+ ]
56
62
  end
57
63
 
58
64
  def self.time
@@ -33,7 +33,7 @@ module Messaging
33
33
 
34
34
  attribute :reply_stream_name, String
35
35
 
36
- attribute :properties, Hash, default: -> { Hash.new }
36
+ attribute :properties, Array, default: -> { Array.new }
37
37
 
38
38
  attribute :time, Time
39
39
 
@@ -59,6 +59,18 @@ module Messaging
59
59
  self.correlation_stream_name = preceding_metadata.correlation_stream_name
60
60
 
61
61
  self.reply_stream_name = preceding_metadata.reply_stream_name
62
+
63
+ preceding_metadata.properties.each do |property|
64
+ if property.transient?
65
+ next
66
+ end
67
+
68
+ set_property(
69
+ property.name,
70
+ property.value,
71
+ transient: property.transient
72
+ )
73
+ end
62
74
  end
63
75
 
64
76
  def follows?(preceding_metadata)
@@ -128,16 +140,47 @@ module Messaging
128
140
  end
129
141
  alias :correlates? :correlated?
130
142
 
131
- def set_property(name, value)
132
- properties[name] = value
143
+ Property = Struct.new(
144
+ :name,
145
+ :value,
146
+ :transient
147
+ ) do
148
+ def transient?
149
+ transient == true
150
+ end
151
+ end
152
+
153
+ def set_property(name, value, transient: nil)
154
+ transient ||= false
155
+
156
+ delete_property(name)
157
+
158
+ property = Property.new(name, value, transient)
159
+
160
+ properties << property
161
+
162
+ property
163
+ end
164
+
165
+ def set_transient_property(name, value, transient: nil)
166
+ set_property(name, value, transient: true)
133
167
  end
134
168
 
135
169
  def get_property(name)
136
- properties[name]
170
+ property = properties.find { |property| property.name == name }
171
+ property&.value
137
172
  end
138
173
 
139
174
  def delete_property(name)
140
- properties.delete(name)
175
+ i = properties.index { |property| property.name == name }
176
+
177
+ return nil if i.nil?
178
+
179
+ properties.delete_at(i).value
180
+ end
181
+
182
+ def clear_properties
183
+ properties.clear
141
184
  end
142
185
 
143
186
  def self.source_attribute_names
@@ -26,8 +26,10 @@ module Messaging
26
26
 
27
27
  metadata = message.metadata.to_h
28
28
 
29
+ metadata[:properties].delete_if { |property| property.transient? }
30
+
29
31
  if metadata[:properties].empty?
30
- metadata[:properties] = nil
32
+ metadata.delete(:properties)
31
33
  end
32
34
 
33
35
  metadata.delete_if { |k, v| v.nil? }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-messaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.5.2
4
+ version: 2.5.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project