evt-messaging 2.5.3.0 → 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: 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