evt-messaging 2.5.5.2 → 2.5.6.0

Sign up to get free protection for your applications and to get access to all the features.
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