evt-messaging 2.5.5.2 → 2.6.0.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: bdc052cd505024a0dc1c9ee66b8c7bf9233f1deb8efb4cc07f8bc67ac37dc1ca
4
+ data.tar.gz: 25087356a05e7d159345ef0f268d2fcb671dcac86f931236c7be25a49dd003d7
5
5
  SHA512:
6
- metadata.gz: 1e6e49a66b6715c5775de11289496868de8bdb74fa691c44637948ee1d1c3e1562e08939bfd84920d293a12210fb12616f8f276925bcd05886ad82343d8739a3
7
- data.tar.gz: 1eeac837bb22e5b1826daa69ce4a0237075df131210d466aeff0ab69fc04e7c49b9304ed632bfeefacd6d6370ac9a8882c6c70fe6ad62dceffbcd67a19fa244e
6
+ metadata.gz: cdf114d68c3a8102adf5a675eb2b784e36e51882b08b66e9ffeffeaf5cc0597741ae70a2326b6d14db69c3ab2ed5c9a41566f98eadaae3fec653617fa88ce067
7
+ data.tar.gz: 9438c70a8643db857dd6102f2ae22c5f4ca71e4dde416096a303e267a89c8ed0b6c71730fde5f9c1a5c1ab66db65c9eaad19f2128a6cab2c2e6a8584cf8a3a7c
@@ -7,9 +7,11 @@ require 'messaging/controls/random'
7
7
  require 'messaging/controls/time'
8
8
  require 'messaging/controls/id'
9
9
  require 'messaging/controls/stream_name'
10
+ require 'messaging/controls/properties'
11
+ require 'messaging/controls/local_properties'
12
+ require 'messaging/controls/metadata'
10
13
  require 'messaging/controls/message_data'
11
14
  require 'messaging/controls/message'
12
- require 'messaging/controls/metadata'
13
15
  require 'messaging/controls/batch'
14
16
  require 'messaging/controls/write'
15
17
  require 'messaging/controls/settings'
@@ -0,0 +1,39 @@
1
+ module Messaging
2
+ module Controls
3
+ module LocalProperties
4
+ def self.example
5
+ {
6
+ SomeLocalProperty.name => SomeLocalProperty.value
7
+ }
8
+ end
9
+
10
+ module SomeLocalProperty
11
+ def self.name
12
+ :some_local_property
13
+ end
14
+
15
+ def self.value
16
+ 'some local property value'
17
+ end
18
+ end
19
+
20
+ module Random
21
+ def self.example
22
+ {
23
+ SomeLocalProperty.name => SomeLocalProperty.value
24
+ }
25
+ end
26
+
27
+ module SomeLocalProperty
28
+ def self.name
29
+ :some_local_property
30
+ end
31
+
32
+ def self.value
33
+ SecureRandom.hex
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -2,6 +2,11 @@ module Messaging
2
2
  module Controls
3
3
  module Metadata
4
4
  def self.example
5
+ data = self.data
6
+
7
+ data[:properties] = properties
8
+ data[:local_properties] = local_properties
9
+
5
10
  Messaging::Message::Metadata.build(data)
6
11
  end
7
12
 
@@ -50,15 +55,21 @@ module Messaging
50
55
  end
51
56
 
52
57
  def self.properties
53
- {
54
- some_property: 'some property value'
55
- }
58
+ Properties.example
56
59
  end
57
60
 
58
61
  def self.time
59
62
  Time::Raw.example
60
63
  end
61
64
 
65
+ def self.properties
66
+ Properties.example
67
+ end
68
+
69
+ def self.local_properties
70
+ LocalProperties.example
71
+ end
72
+
62
73
  def self.data
63
74
  {
64
75
  stream_name: stream_name,
@@ -73,7 +84,8 @@ module Messaging
73
84
 
74
85
  reply_stream_name: reply_stream_name,
75
86
 
76
- properties: properties,
87
+ properties: Properties.example,
88
+ local_properties: LocalProperties.example,
77
89
 
78
90
  time: time,
79
91
 
@@ -106,6 +118,11 @@ module Messaging
106
118
 
107
119
  module Random
108
120
  def self.example
121
+ data = self.data
122
+
123
+ data[:properties] = properties
124
+ data[:local_properties] = local_properties
125
+
109
126
  Messaging::Message::Metadata.build(data)
110
127
  end
111
128
 
@@ -157,10 +174,19 @@ module Messaging
157
174
  (::Time.now + Controls::Random::Number.example).utc
158
175
  end
159
176
 
177
+ def self.properties
178
+ Properties::Random.example
179
+ end
180
+
181
+ def self.local_properties
182
+ LocalProperties::Random.example
183
+ end
184
+
160
185
  def self.data
161
186
  {
162
187
  stream_name: stream_name,
163
188
  position: position,
189
+ global_position: global_position,
164
190
 
165
191
  causation_message_stream_name: causation_message_stream_name,
166
192
  causation_message_position: causation_message_position,
@@ -170,7 +196,9 @@ module Messaging
170
196
 
171
197
  reply_stream_name: reply_stream_name,
172
198
 
173
- global_position: global_position,
199
+ properties: Properties::Random.example,
200
+ local_properties: LocalProperties::Random.example,
201
+
174
202
  time: time,
175
203
 
176
204
  schema_version: schema_version
@@ -0,0 +1,39 @@
1
+ module Messaging
2
+ module Controls
3
+ module Properties
4
+ def self.example
5
+ {
6
+ SomeProperty.name => SomeProperty.value
7
+ }
8
+ end
9
+
10
+ module SomeProperty
11
+ def self.name
12
+ :some_property
13
+ end
14
+
15
+ def self.value
16
+ 'some property value'
17
+ end
18
+ end
19
+
20
+ module Random
21
+ def self.example
22
+ {
23
+ SomeProperty.name => SomeProperty.value
24
+ }
25
+ end
26
+
27
+ module SomeProperty
28
+ def self.name
29
+ :some_property
30
+ end
31
+
32
+ def self.value
33
+ SecureRandom.hex
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -93,6 +93,8 @@ module Messaging
93
93
 
94
94
  if message_or_message_data.is_a? MessageStore::MessageData::Read
95
95
  name = Messaging::Message::Info.canonize_name(message_or_message_data.type)
96
+ elsif message_or_message_data.is_a? String
97
+ name = Messaging::Message::Info.canonize_name(message_or_message_data)
96
98
  else
97
99
  name = message_or_message_data.message_name
98
100
  end
@@ -32,8 +32,12 @@ module Messaging
32
32
  end
33
33
 
34
34
  if metadata
35
- metadata_include = source.metadata.class.attribute_names
35
+ metadata_include = source.metadata.class.attribute_names - [:properties, :local_properties]
36
+
36
37
  SetAttributes.(receiver.metadata, source.metadata, include: metadata_include)
38
+
39
+ receiver.metadata.properties = source.metadata.properties.dup
40
+ receiver.metadata.local_properties = source.metadata.local_properties.dup
37
41
  end
38
42
 
39
43
  receiver
@@ -34,6 +34,7 @@ module Messaging
34
34
  attribute :reply_stream_name, String
35
35
 
36
36
  attribute :properties, Hash, default: -> { Hash.new }
37
+ attribute :local_properties, Hash, default: -> { Hash.new }
37
38
 
38
39
  attribute :time, Time
39
40
 
@@ -59,6 +60,10 @@ module Messaging
59
60
  self.correlation_stream_name = preceding_metadata.correlation_stream_name
60
61
 
61
62
  self.reply_stream_name = preceding_metadata.reply_stream_name
63
+
64
+ preceding_metadata.properties.each do |name, value|
65
+ properties[name] = value
66
+ end
62
67
  end
63
68
 
64
69
  def follows?(preceding_metadata)
@@ -129,17 +134,65 @@ module Messaging
129
134
  alias :correlates? :correlated?
130
135
 
131
136
  def set_property(name, value)
137
+ if not name.is_a?(Symbol)
138
+ raise Error, "Property name must be a symbol: #{name.inspect}"
139
+ end
140
+
132
141
  properties[name] = value
142
+
143
+ value
133
144
  end
134
145
 
135
146
  def get_property(name)
147
+ if not name.is_a?(Symbol)
148
+ raise Error, "Property name must be a symbol: #{name.inspect}"
149
+ end
150
+
136
151
  properties[name]
137
152
  end
138
153
 
139
154
  def delete_property(name)
155
+ if not name.is_a?(Symbol)
156
+ raise Error, "Property name must be a symbol: #{name.inspect}"
157
+ end
158
+
140
159
  properties.delete(name)
141
160
  end
142
161
 
162
+ def clear_properties
163
+ properties.clear
164
+ end
165
+
166
+ def set_local_property(name, value)
167
+ if not name.is_a?(Symbol)
168
+ raise Error, "Local property name must be a symbol: #{name.inspect}"
169
+ end
170
+
171
+ local_properties[name] = value
172
+
173
+ value
174
+ end
175
+
176
+ def get_local_property(name)
177
+ if not name.is_a?(Symbol)
178
+ raise Error, "Local property name must be a symbol: #{name.inspect}"
179
+ end
180
+
181
+ local_properties[name]
182
+ end
183
+
184
+ def delete_local_property(name)
185
+ if not name.is_a?(Symbol)
186
+ raise Error, "Local property name must be a symbol: #{name.inspect}"
187
+ end
188
+
189
+ local_properties.delete(name)
190
+ end
191
+
192
+ def clear_local_properties
193
+ local_properties.clear
194
+ end
195
+
143
196
  def self.source_attribute_names
144
197
  [
145
198
  :stream_name,
@@ -27,7 +27,11 @@ module Messaging
27
27
  metadata = message.metadata.to_h
28
28
 
29
29
  if metadata[:properties].empty?
30
- metadata[:properties] = nil
30
+ metadata.delete(:properties)
31
+ end
32
+
33
+ if metadata[:local_properties].empty?
34
+ metadata.delete(:local_properties)
31
35
  end
32
36
 
33
37
  metadata.delete_if { |k, v| v.nil? }
@@ -40,10 +44,10 @@ module Messaging
40
44
  def self.read(message_data)
41
45
  data = message_data.to_h
42
46
 
43
- unless data[:metadata].nil?
44
- data[:metadata] = data[:metadata].clone
45
- else
47
+ if data[:metadata].nil?
46
48
  data[:metadata] = {}
49
+ else
50
+ data[:metadata] = data[:metadata].clone
47
51
  end
48
52
 
49
53
  metadata = data[:metadata]
@@ -54,6 +58,9 @@ module Messaging
54
58
  metadata[:global_position] = data[:global_position]
55
59
  metadata[:time] = data[:time]
56
60
 
61
+ metadata[:properties] ||= {}
62
+ metadata[:local_properties] ||= {}
63
+
57
64
  data
58
65
  end
59
66
  end
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.5.2
4
+ version: 2.6.0.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: 2021-01-04 00:00:00.000000000 Z
11
+ date: 2021-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-message_store
@@ -64,9 +64,11 @@ files:
64
64
  - lib/messaging/controls/batch.rb
65
65
  - lib/messaging/controls/handler.rb
66
66
  - lib/messaging/controls/id.rb
67
+ - lib/messaging/controls/local_properties.rb
67
68
  - lib/messaging/controls/message.rb
68
69
  - lib/messaging/controls/message_data.rb
69
70
  - lib/messaging/controls/metadata.rb
71
+ - lib/messaging/controls/properties.rb
70
72
  - lib/messaging/controls/random.rb
71
73
  - lib/messaging/controls/settings.rb
72
74
  - lib/messaging/controls/stream_name.rb