evt-messaging 2.5.8.1 → 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: ccafb945cdd024a0fa0d3b90b2bb197973f0a6111f778657e2c8dcc7514e944f
4
- data.tar.gz: 64be2ec439b541414bd50e9d0ad2490cb6069d9e617bd12d8f44b5dad8231f64
3
+ metadata.gz: bdc052cd505024a0dc1c9ee66b8c7bf9233f1deb8efb4cc07f8bc67ac37dc1ca
4
+ data.tar.gz: 25087356a05e7d159345ef0f268d2fcb671dcac86f931236c7be25a49dd003d7
5
5
  SHA512:
6
- metadata.gz: 13a6e341c068157a89e0e3336afd19c3518149bc766bcfca8b73fc72d74a97948854838b5e35d9ba9adb127e660ef679ada4f1b4d928d7bb08307f816f3cfbac
7
- data.tar.gz: c017e5d29247eb7601db7828574f03348429e38f51cd69c7c65dbf394723b9f5ca592d68589bcb1782055c6fa9562d6be5602fa91bf6834e0de8296b705c16d3
6
+ metadata.gz: cdf114d68c3a8102adf5a675eb2b784e36e51882b08b66e9ffeffeaf5cc0597741ae70a2326b6d14db69c3ab2ed5c9a41566f98eadaae3fec653617fa88ce067
7
+ data.tar.gz: 9438c70a8643db857dd6102f2ae22c5f4ca71e4dde416096a303e267a89c8ed0b6c71730fde5f9c1a5c1ab66db65c9eaad19f2128a6cab2c2e6a8584cf8a3a7c
data/lib/messaging.rb CHANGED
@@ -7,7 +7,6 @@ require 'messaging/stream_name'
7
7
 
8
8
  require 'messaging/message'
9
9
  require 'messaging/message/metadata'
10
- require 'messaging/message/metadata/property'
11
10
  require 'messaging/message/copy'
12
11
  require 'messaging/message/follow'
13
12
  require 'messaging/message/sequence_accessor'
@@ -8,6 +8,7 @@ require 'messaging/controls/time'
8
8
  require 'messaging/controls/id'
9
9
  require 'messaging/controls/stream_name'
10
10
  require 'messaging/controls/properties'
11
+ require 'messaging/controls/local_properties'
11
12
  require 'messaging/controls/metadata'
12
13
  require 'messaging/controls/message_data'
13
14
  require 'messaging/controls/message'
@@ -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
@@ -4,9 +4,8 @@ module Messaging
4
4
  def self.example
5
5
  data = self.data
6
6
 
7
- ## Remove this once Metadata can be built
8
- ## from Raw data (Scott, Fri Feb 5 20201)
9
- data[:properties] = Properties.example
7
+ data[:properties] = properties
8
+ data[:local_properties] = local_properties
10
9
 
11
10
  Messaging::Message::Metadata.build(data)
12
11
  end
@@ -63,6 +62,14 @@ module Messaging
63
62
  Time::Raw.example
64
63
  end
65
64
 
65
+ def self.properties
66
+ Properties.example
67
+ end
68
+
69
+ def self.local_properties
70
+ LocalProperties.example
71
+ end
72
+
66
73
  def self.data
67
74
  {
68
75
  stream_name: stream_name,
@@ -77,7 +84,8 @@ module Messaging
77
84
 
78
85
  reply_stream_name: reply_stream_name,
79
86
 
80
- properties: Properties.data,
87
+ properties: Properties.example,
88
+ local_properties: LocalProperties.example,
81
89
 
82
90
  time: time,
83
91
 
@@ -110,6 +118,11 @@ module Messaging
110
118
 
111
119
  module Random
112
120
  def self.example
121
+ data = self.data
122
+
123
+ data[:properties] = properties
124
+ data[:local_properties] = local_properties
125
+
113
126
  Messaging::Message::Metadata.build(data)
114
127
  end
115
128
 
@@ -161,10 +174,19 @@ module Messaging
161
174
  (::Time.now + Controls::Random::Number.example).utc
162
175
  end
163
176
 
177
+ def self.properties
178
+ Properties::Random.example
179
+ end
180
+
181
+ def self.local_properties
182
+ LocalProperties::Random.example
183
+ end
184
+
164
185
  def self.data
165
186
  {
166
187
  stream_name: stream_name,
167
188
  position: position,
189
+ global_position: global_position,
168
190
 
169
191
  causation_message_stream_name: causation_message_stream_name,
170
192
  causation_message_position: causation_message_position,
@@ -174,7 +196,9 @@ module Messaging
174
196
 
175
197
  reply_stream_name: reply_stream_name,
176
198
 
177
- global_position: global_position,
199
+ properties: Properties::Random.example,
200
+ local_properties: LocalProperties::Random.example,
201
+
178
202
  time: time,
179
203
 
180
204
  schema_version: schema_version
@@ -2,33 +2,14 @@ module Messaging
2
2
  module Controls
3
3
  module Properties
4
4
  def self.example
5
- [
6
- SomeProperty.example,
7
- SomeLocalProperty.example
8
- ]
9
- end
10
-
11
- def self.data
12
- [
13
- SomeProperty.data,
14
- SomeLocalProperty.data
15
- ]
5
+ {
6
+ SomeProperty.name => SomeProperty.value
7
+ }
16
8
  end
17
9
 
18
10
  module SomeProperty
19
- def self.example
20
- Messaging::Message::Metadata::Property.new(name, value)
21
- end
22
-
23
- def self.data
24
- {
25
- name: name,
26
- value: value
27
- }
28
- end
29
-
30
11
  def self.name
31
- 'some_property'
12
+ :some_property
32
13
  end
33
14
 
34
15
  def self.value
@@ -36,25 +17,21 @@ module Messaging
36
17
  end
37
18
  end
38
19
 
39
- module SomeLocalProperty
20
+ module Random
40
21
  def self.example
41
- Messaging::Message::Metadata::Property.new(name, value, true)
42
- end
43
-
44
- def self.data
45
22
  {
46
- name: name,
47
- value: value,
48
- local: true
23
+ SomeProperty.name => SomeProperty.value
49
24
  }
50
25
  end
51
26
 
52
- def self.name
53
- 'some_local_property'
54
- end
27
+ module SomeProperty
28
+ def self.name
29
+ :some_property
30
+ end
55
31
 
56
- def self.value
57
- 'some local property value'
32
+ def self.value
33
+ SecureRandom.hex
34
+ end
58
35
  end
59
36
  end
60
37
  end
@@ -32,13 +32,12 @@ module Messaging
32
32
  end
33
33
 
34
34
  if metadata
35
- metadata_include = source.metadata.class.attribute_names - [:properties]
35
+ metadata_include = source.metadata.class.attribute_names - [:properties, :local_properties]
36
36
 
37
37
  SetAttributes.(receiver.metadata, source.metadata, include: metadata_include)
38
38
 
39
- source.metadata.properties.each do |property|
40
- receiver.metadata.properties << property.dup
41
- end
39
+ receiver.metadata.properties = source.metadata.properties.dup
40
+ receiver.metadata.local_properties = source.metadata.local_properties.dup
42
41
  end
43
42
 
44
43
  receiver
@@ -33,7 +33,8 @@ module Messaging
33
33
 
34
34
  attribute :reply_stream_name, String
35
35
 
36
- attribute :properties, Array, default: -> { Array.new }
36
+ attribute :properties, Hash, default: -> { Hash.new }
37
+ attribute :local_properties, Hash, default: -> { Hash.new }
37
38
 
38
39
  attribute :time, Time
39
40
 
@@ -60,12 +61,8 @@ module Messaging
60
61
 
61
62
  self.reply_stream_name = preceding_metadata.reply_stream_name
62
63
 
63
- preceding_metadata.properties.each do |property|
64
- if property.local?
65
- next
66
- end
67
-
68
- properties << property.dup
64
+ preceding_metadata.properties.each do |name, value|
65
+ properties[name] = value
69
66
  end
70
67
  end
71
68
 
@@ -136,49 +133,64 @@ module Messaging
136
133
  end
137
134
  alias :correlates? :correlated?
138
135
 
139
- def set_property(name, value, local: nil)
140
- if not name.is_a?(String)
141
- raise Error, "Property name must be a string: #{name.inspect}"
136
+ def set_property(name, value)
137
+ if not name.is_a?(Symbol)
138
+ raise Error, "Property name must be a symbol: #{name.inspect}"
142
139
  end
143
140
 
144
- local ||= false
141
+ properties[name] = value
145
142
 
146
- delete_property(name)
143
+ value
144
+ end
145
+
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
147
150
 
148
- property = Property.new(name, value, local)
151
+ properties[name]
152
+ end
149
153
 
150
- properties << property
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
151
158
 
152
- property
159
+ properties.delete(name)
153
160
  end
154
161
 
155
- def set_local_property(name, value)
156
- set_property(name, value, local: true)
162
+ def clear_properties
163
+ properties.clear
157
164
  end
158
165
 
159
- def get_property(name)
160
- if not name.is_a?(String)
161
- raise Error, "Property name must be a string: #{name.inspect}"
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}"
162
169
  end
163
170
 
164
- property = properties.find { |property| property.name == name }
165
- property&.value
171
+ local_properties[name] = value
172
+
173
+ value
166
174
  end
167
175
 
168
- def delete_property(name)
169
- if not name.is_a?(String)
170
- raise Error, "Property name must be a string: #{name.inspect}"
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}"
171
179
  end
172
180
 
173
- i = properties.index { |property| property.name == name }
181
+ local_properties[name]
182
+ end
174
183
 
175
- return nil if i.nil?
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
176
188
 
177
- properties.delete_at(i).value
189
+ local_properties.delete(name)
178
190
  end
179
191
 
180
- def clear_properties
181
- properties.clear
192
+ def clear_local_properties
193
+ local_properties.clear
182
194
  end
183
195
 
184
196
  def self.source_attribute_names
@@ -26,12 +26,12 @@ module Messaging
26
26
 
27
27
  metadata = message.metadata.to_h
28
28
 
29
- properties = metadata[:properties]
30
-
31
- if properties.empty?
29
+ if metadata[:properties].empty?
32
30
  metadata.delete(:properties)
33
- else
34
- metadata[:properties] = Properties.write(properties)
31
+ end
32
+
33
+ if metadata[:local_properties].empty?
34
+ metadata.delete(:local_properties)
35
35
  end
36
36
 
37
37
  metadata.delete_if { |k, v| v.nil? }
@@ -41,28 +41,13 @@ module Messaging
41
41
  message_data
42
42
  end
43
43
 
44
- module Properties
45
- def self.write(properties)
46
- properties.map do |property|
47
- property_hash = property.to_h
48
-
49
- if not property_hash[:local]
50
- property_hash.delete(:local)
51
- end
52
-
53
- property_hash
54
- end
55
- end
56
- end
57
-
58
44
  def self.read(message_data)
59
45
  data = message_data.to_h
60
46
 
61
- ## TODO change to positive "if"
62
- unless data[:metadata].nil?
63
- data[:metadata] = data[:metadata].clone
64
- else
47
+ if data[:metadata].nil?
65
48
  data[:metadata] = {}
49
+ else
50
+ data[:metadata] = data[:metadata].clone
66
51
  end
67
52
 
68
53
  metadata = data[:metadata]
@@ -73,15 +58,8 @@ module Messaging
73
58
  metadata[:global_position] = data[:global_position]
74
59
  metadata[:time] = data[:time]
75
60
 
76
- if metadata[:properties].nil?
77
- metadata[:properties] = []
78
- end
79
-
80
- properties = metadata[:properties].map do |property_data|
81
- Metadata::Property.new(*property_data.values_at(*Metadata::Property.members))
82
- end
83
-
84
- metadata[:properties] = properties
61
+ metadata[:properties] ||= {}
62
+ metadata[:local_properties] ||= {}
85
63
 
86
64
  data
87
65
  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.8.1
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-02-09 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,6 +64,7 @@ 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
@@ -82,7 +83,6 @@ files:
82
83
  - lib/messaging/message/follow.rb
83
84
  - lib/messaging/message/import.rb
84
85
  - lib/messaging/message/metadata.rb
85
- - lib/messaging/message/metadata/property.rb
86
86
  - lib/messaging/message/sequence_accessor.rb
87
87
  - lib/messaging/message/transform.rb
88
88
  - lib/messaging/message_registry.rb
@@ -1,22 +0,0 @@
1
- module Messaging
2
- module Message
3
- class Metadata
4
- Property = Struct.new(
5
- :name,
6
- :value,
7
- :local
8
- ) do
9
- def local?
10
- local == true
11
- end
12
-
13
- def ==(other)
14
- equal =
15
- name == other.name &&
16
- value == other.value &&
17
- !!local == !!other.local
18
- end
19
- end
20
- end
21
- end
22
- end