evt-messaging 2.5.3.0 → 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: 29e2d25659fffe70ab1e14512f6c4a4adf7c9daa929f7303e3b96ae169fa4822
4
- data.tar.gz: 181e600b4ecebc75a08607b364c50e88600788e6fc2e7e62672df10b5c337998
3
+ metadata.gz: 4ed32a3950086fa459ebb29d4343df38845f3ce1d4a559205bb5fcd6d8c42c40
4
+ data.tar.gz: 6187c2a9da83c38d5f003259a1ecf59b96fcf88aaaa16ca3b5ec03723a6ff806
5
5
  SHA512:
6
- metadata.gz: 41165cbff3b2bb5a74a39809812851737b228ad1a59d85ecf2a8f46268042e06aed3c0fc3223f30e084febec586b1df09234e625286e7a8dfff617a15878b630
7
- data.tar.gz: 88c7b54092d4b088de4c95f21f576c7c3e04a3e4cc805b0c32cdf4ae0479865c82e9d2195968ae7046d86508ba2aba1229ff9d7854179786447b2b798ecd7235
6
+ metadata.gz: 56c25adccd43baa313b05d76aa3b2e8f82977be4e898c0680ae38ba479e009d88a31caa4deb50adc59fc3ebce58dc74e46f87dee6a44f8bfd2facb3bedb0c94a
7
+ data.tar.gz: 6e375228008283d4bc40f7495658223ca789afabc6c99d86805bee419c6b42dbfd06850e3ddc771a30f7c5ff46289ae2485d3e14fa2c5076a4c5cd4057434344
@@ -49,6 +49,18 @@ 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
+
58
+ def self.properties
59
+ [
60
+ Messaging::Message::Metadata::Property.new(:some_property, 'some property value')
61
+ ]
62
+ end
63
+
52
64
  def self.time
53
65
  Time::Raw.example
54
66
  end
@@ -57,6 +69,7 @@ module Messaging
57
69
  {
58
70
  stream_name: stream_name,
59
71
  position: position,
72
+ global_position: global_position,
60
73
 
61
74
  causation_message_stream_name: causation_message_stream_name,
62
75
  causation_message_position: causation_message_position,
@@ -66,7 +79,8 @@ module Messaging
66
79
 
67
80
  reply_stream_name: reply_stream_name,
68
81
 
69
- global_position: global_position,
82
+ properties: properties,
83
+
70
84
  time: time,
71
85
 
72
86
  schema_version: schema_version
@@ -209,7 +209,12 @@ module Messaging
209
209
 
210
210
  message_type = message.message_type
211
211
 
212
+ handler_logger.trace(tag: [:handle, :message_data]) { "Handling Message Data (Type: #{message_type}, Method: #{handler})" }
213
+
212
214
  public_send(handler, message)
215
+
216
+ handler_logger.info(tags: [:handle, :message_data]) { "Handled message data (Type: #{message_data.type})" }
217
+ handler_logger.info(tags: [:data, :message_data]) { message_data.pretty_inspect }
213
218
  else
214
219
  if respond_to?(:handle)
215
220
  message_type = message_data.type
@@ -21,7 +21,7 @@ module Messaging
21
21
  receiver = receiver.build
22
22
  end
23
23
 
24
- if include.nil?
24
+ if copy.nil? && include.nil?
25
25
  include = source.class.attribute_names
26
26
  end
27
27
 
@@ -33,6 +33,8 @@ module Messaging
33
33
 
34
34
  attribute :reply_stream_name, String
35
35
 
36
+ attribute :properties, Array, default: -> { Array.new }
37
+
36
38
  attribute :time, Time
37
39
 
38
40
  attribute :schema_version, String
@@ -57,6 +59,18 @@ module Messaging
57
59
  self.correlation_stream_name = preceding_metadata.correlation_stream_name
58
60
 
59
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
60
74
  end
61
75
 
62
76
  def follows?(preceding_metadata)
@@ -126,6 +140,49 @@ module Messaging
126
140
  end
127
141
  alias :correlates? :correlated?
128
142
 
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)
167
+ end
168
+
169
+ def get_property(name)
170
+ property = properties.find { |property| property.name == name }
171
+ property&.value
172
+ end
173
+
174
+ def delete_property(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
184
+ end
185
+
129
186
  def self.source_attribute_names
130
187
  [
131
188
  :stream_name,
@@ -25,6 +25,13 @@ module Messaging
25
25
  message_data.data = message.to_h
26
26
 
27
27
  metadata = message.metadata.to_h
28
+
29
+ metadata[:properties].delete_if { |property| property.transient? }
30
+
31
+ if metadata[:properties].empty?
32
+ metadata.delete(:properties)
33
+ end
34
+
28
35
  metadata.delete_if { |k, v| v.nil? }
29
36
 
30
37
  message_data.metadata = metadata
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-messaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.3.0
4
+ version: 2.5.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-01 00:00:00.000000000 Z
11
+ date: 2021-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-message_store