logstash-input-jms 3.1.0-java → 3.2.1-java

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.
@@ -1,11 +1,8 @@
1
1
  require_relative '../spec_helper'
2
2
  require 'logstash/inputs/jms'
3
- require 'jms'
4
- require 'json'
3
+ require 'logstash/plugin_mixins/ecs_compatibility_support/spec_helper'
5
4
  require 'securerandom'
6
5
 
7
-
8
-
9
6
  shared_examples_for "a JMS input" do
10
7
  context 'when inputting messages' do
11
8
  let (:destination) { "#{pub_sub ? 'topic' : 'queue'}://#{queue_name}"}
@@ -15,7 +12,7 @@ shared_examples_for "a JMS input" do
15
12
  let(:message) { "Hello There" }
16
13
 
17
14
  context 'when properties are skipped' do
18
- let (:jms_config) { super.merge({'skip_properties' => ['this', 'that']})}
15
+ let (:config) { super().merge({'skip_properties' => ['this', 'that']})}
19
16
 
20
17
  it 'should skip the specified property and process other properties, headers and the message' do
21
18
  send_message do |session|
@@ -25,17 +22,17 @@ shared_examples_for "a JMS input" do
25
22
  msg.set_string_property('the_other', 'the_other_prop')
26
23
  msg
27
24
  end
28
- expect(queue.first.get('message')).to eql (message)
29
- expect(queue.first.get('jms_destination')).to_not be_nil
30
- expect(queue.first.get('jms_timestamp')).to_not be_nil
31
- expect(queue.first.get('this')).to be_nil
32
- expect(queue.first.get('that')).to be_nil
33
- expect(queue.first.get('the_other')).to eql('the_other_prop')
25
+ expect(queue.first.get('message')).to eql(message)
26
+ expect(queue.first).to have_header('jms_destination')
27
+ expect(queue.first).to have_header('jms_timestamp')
28
+ expect(queue.first).not_to have_property('this')
29
+ expect(queue.first).not_to have_property('this')
30
+ expect(queue.first).to have_property_value('the_other', 'the_other_prop')
34
31
  end
35
32
  end
36
33
 
37
34
  context 'when using message selectors' do
38
- let (:jms_config) { super.merge({'selector' => selector }) }
35
+ let (:config) { super().merge({'selector' => selector }) }
39
36
 
40
37
  context 'with multiple selector query parameter' do
41
38
  let (:selector) { "this = 3 OR this = 4" }
@@ -47,9 +44,9 @@ shared_examples_for "a JMS input" do
47
44
  msg.set_int_property('this', 4)
48
45
  msg
49
46
  end
50
- expect(queue.first.get('message')).to eql (message)
51
- expect(queue.first.get('this')).to eql(4)
52
- expect(queue.first.get('that')).to eql('that_prop')
47
+ expect(queue.first.get('message')).to eql(message)
48
+ expect(queue.first).to have_property_value('this', 4)
49
+ expect(queue.first).to have_property_value('that', 'that_prop')
53
50
  end
54
51
 
55
52
  it 'does not process messages that do not conform to the message selector' do
@@ -73,9 +70,9 @@ shared_examples_for "a JMS input" do
73
70
  msg.set_int_property('this', 3)
74
71
  msg
75
72
  end
76
- expect(queue.first.get('message')).to eql (message)
77
- expect(queue.first.get('this')).to eql(3)
78
- expect(queue.first.get('that')).to eql('that_prop')
73
+ expect(queue.first.get('message')).to eql(message)
74
+ expect(queue.first).to have_property_value('this', 3)
75
+ expect(queue.first).to have_property_value('that', 'that_prop')
79
76
  end
80
77
 
81
78
  it 'does not process messages that do not conform to the message selector' do
@@ -100,8 +97,8 @@ shared_examples_for "a JMS input" do
100
97
  msg
101
98
  end
102
99
  expect(queue.first.get('message')).to eql(message)
103
- expect(queue.first.get('this')).to be_within(0.001).of(3.1)
104
- expect(queue.first.get('that')).to eql('that_prop')
100
+ expect(get_property_value(queue.first, 'this')).to be_within(0.001).of(3.1)
101
+ expect(queue.first).to have_property_value('that', 'that_prop')
105
102
  end
106
103
 
107
104
  it 'does not process messages that do not conform to the message selector' do
@@ -126,9 +123,9 @@ shared_examples_for "a JMS input" do
126
123
  msg.set_string_property('that', 'that_prop')
127
124
  msg
128
125
  end
129
- expect(queue.first.get('message')).to eql (message)
130
- expect(queue.first.get('this')).to eql('this_prop')
131
- expect(queue.first.get('that')).to eql('that_prop')
126
+ expect(queue.first.get('message')).to eql(message)
127
+ expect(queue.first).to have_property_value('this', 'this_prop')
128
+ expect(queue.first).to have_property_value('that', 'that_prop')
132
129
  end
133
130
 
134
131
  it 'does not process messages that do not conform to the message selector' do
@@ -145,7 +142,8 @@ shared_examples_for "a JMS input" do
145
142
  end
146
143
 
147
144
  context 'when headers are skipped' do
148
- let (:jms_config) { super.merge({'skip_headers' => ['jms_destination', 'jms_reply_to']})}
145
+ let (:config) { super().merge('skip_headers' => ['jms_destination', 'jms_reply_to']) }
146
+
149
147
  it 'should skip the specified header and process other headers, properties and the message' do
150
148
  send_message do |session|
151
149
  msg = session.message(message)
@@ -155,42 +153,133 @@ shared_examples_for "a JMS input" do
155
153
  msg.set_string_property('the_other', 'the_other_prop')
156
154
  msg
157
155
  end
158
- expect(queue.first.get('message')).to eql (message)
159
- expect(queue.first.get('jms_destination')).to be_nil
160
- expect(queue.first.get('jms_timestamp')).to_not be_nil
161
- expect(queue.first.get('this')).to eq('this_prop')
162
- expect(queue.first.get('that')).to eq('that_prop')
163
- expect(queue.first.get('the_other')).to eq('the_other_prop')
156
+ expect(queue.first.get('message')).to eql(message)
157
+ expect(queue.first).not_to have_header('jms_destination')
158
+ expect(queue.first).to have_header('jms_timestamp')
159
+ expect(queue.first).to have_property_value('this', 'this_prop')
160
+ expect(queue.first).to have_property_value('that', 'that_prop')
161
+ expect(queue.first).to have_property_value('the_other', 'the_other_prop')
164
162
  end
165
163
  end
166
164
 
167
- context 'when neither header nor property is skipped ' do
168
- it 'should process properties, headers and the message' do
165
+ context 'when include_headers => false' do
166
+ let (:config) { super().merge('include_headers' => 'false') }
167
+
168
+ it 'should skip all headers' do
169
169
  send_message do |session|
170
170
  msg = session.message(message)
171
- msg.set_string_property('this', 'this_prop')
172
- msg.set_string_property('that', 'that_prop')
173
- msg.set_string_property('the_other', 'the_other_prop')
171
+ msg.reply_to = session.create_destination(:topic_name => SecureRandom.hex(8))
172
+ msg.set_string_property('some', 'property')
173
+ msg
174
+ end
175
+ event = queue.first.to_hash_with_metadata
176
+ expect( event.keys.find { |name| name.start_with?('jms_') } ).to be nil
177
+ end
178
+ end
179
+
180
+ context 'when include_header => false (deprecated)' do
181
+ let (:config) { super().merge('include_header' => 'false') }
182
+
183
+ it 'should skip all headers' do
184
+ send_message do |session|
185
+ msg = session.message(message)
186
+ msg.reply_to = session.create_destination(:topic_name => SecureRandom.hex(8))
187
+ msg.set_string_property('some', 'property')
174
188
  msg
175
189
  end
176
- expect(queue.first.get('message')).to eql (message)
177
- expect(queue.first.get('jms_timestamp')).to_not be_nil
178
- expect(queue.first.get('jms_destination')).to_not be_nil
179
- expect(queue.first.get('this')).to eq('this_prop')
180
- expect(queue.first.get('that')).to eq('that_prop')
181
- expect(queue.first.get('the_other')).to eq('the_other_prop')
190
+ event = queue.first.to_hash_with_metadata
191
+ expect( event.keys.find { |name| name.start_with?('jms_') } ).to be nil
192
+ end
193
+ end
194
+
195
+ context 'when neither header nor property is skipped', :ecs_compatibility_support do
196
+ ecs_compatibility_matrix(:disabled, :v1, :v8) do |ecs_select|
197
+
198
+ let(:ecs_compatibility?) { ecs_select.active_mode != :disabled }
199
+
200
+ let (:config) { super().merge('ecs_compatibility' => ecs_select.active_mode) }
201
+
202
+ it 'should process properties, headers and the message' do
203
+ send_message do |session|
204
+ msg = session.message(message)
205
+ msg.set_string_property('this', 'this_prop')
206
+ msg.set_int_property('camelCase', 42)
207
+ msg.set_boolean_property('JMSFlag', true)
208
+ msg
209
+ end
210
+
211
+ event = queue.first
212
+
213
+ expect(event.get('message')).to eql(message)
214
+
215
+ # headers
216
+ if ecs_compatibility?
217
+ expect(event.include?('jms_timestamp')).to be false
218
+ expect(event.include?('jms_destination')).to be false
219
+ expect(event.get('[@metadata][input][jms][headers][jms_timestamp]')).to be_a Integer
220
+ expect(event.get('[@metadata][input][jms][headers][jms_destination]')).to_not be nil
221
+ expect(event.include?("[@metadata][input][jms][headers][jms_delivery_mode_sym]")).to be false
222
+ expect(event.include?("[@metadata][input][jms][headers][jms_delivery_mode]")).to be true
223
+ else
224
+ expect(event.get('jms_timestamp')).to be_a Integer
225
+ expect(event.get('jms_destination')).to_not be nil
226
+ expect(event.include?("jms_delivery_mode_sym")).to be true
227
+ end
228
+
229
+ # properties
230
+ if ecs_compatibility?
231
+ expect(event.include?('this')).to be false
232
+ expect(event.get('[@metadata][input][jms][properties][this]')).to eq 'this_prop'
233
+ expect(event.get('[@metadata][input][jms][properties][camelCase]')).to eq 42
234
+ expect(event.get('[@metadata][input][jms][properties][JMSFlag]')).to be true
235
+ else
236
+ expect(event.get('this')).to eq 'this_prop'
237
+ expect(event.get('camelCase')).to eq 42
238
+ expect(event.get('JMSFlag')).to be true
239
+ end
240
+ end
241
+
182
242
  end
183
243
  end
184
244
  end
185
245
 
186
- context 'when the message is map message' do
187
- let(:message) { {:one => 1} }
188
- it 'should read the message' do
189
- send_message
190
- expect(queue.size).to eql 1
191
- expect(queue.first.get('one')).to eql (1)
192
- expect(queue.first.get("jms_destination")).to eql(destination)
246
+ context 'when the message is map message', :ecs_compatibility_support do
247
+
248
+ ecs_compatibility_matrix(:disabled, :v1, :v8) do |ecs_select|
249
+
250
+ let(:ecs_compatibility?) { ecs_select.active_mode != :disabled }
251
+
252
+ let (:config) { super().merge('ecs_compatibility' => ecs_select.active_mode) }
253
+
254
+ let(:message) { {:one => 1} }
255
+
256
+ before do
257
+ if ecs_compatibility?
258
+ expect(subject.logger).to receive(:info).once.with /ECS compatibility is enabled but `target` option was not specified/i
259
+ end
260
+ end
261
+
262
+ it 'should read the message' do
263
+ send_message
264
+
265
+ expect(queue.size).to eql 1
266
+ event = queue.first
267
+ expect(event.get('one')).to eql 1
268
+
269
+ if ecs_compatibility?
270
+ expect(event.get('[@metadata][input][jms][headers][jms_destination]')).to eql(destination)
271
+ expect(event.get('[@metadata][input][jms][headers][jms_delivery_mode]')).to eql 'persistent'
272
+ expect(event.include?('[@metadata][input][jms][headers][jms_delivery_mode_sym]')).to be false
273
+ else
274
+ expect(event.get("jms_destination")).to eql(destination)
275
+ expect(event.get("jms_delivery_mode_sym")).to eql :persistent
276
+ end
277
+
278
+ send_message # should not log the ECS warning again
279
+ end
280
+
193
281
  end
282
+
194
283
  end
195
284
 
196
285
  context 'when the message is a bytes message' do
@@ -203,17 +292,26 @@ shared_examples_for "a JMS input" do
203
292
  jms_message
204
293
  end
205
294
  expect(queue.size).to eql 1
206
- expect(queue.first.get('message')).to eql ('hello world')
207
- expect(queue.first.get("jms_destination")).to eql(destination)
295
+ expect(queue.first.get('message')).to eql 'hello world'
296
+ expect(queue.first).to have_header_value("jms_destination", destination)
208
297
  end
209
298
  end
210
299
  end
211
300
  end
212
301
 
213
- describe "input/jms", :integration => true do
302
+ describe LogStash::Inputs::Jms, :integration => true do
214
303
  let (:message) { "hello World" }
215
304
  let (:queue_name) { SecureRandom.hex(8)}
216
305
 
306
+ let (:yaml_section) { 'activemq' }
307
+ let (:config) {{'yaml_file' => fixture_path("jms.yml"),
308
+ 'yaml_section' => yaml_section,
309
+ 'destination' => queue_name,
310
+ 'pub_sub' => pub_sub,
311
+ 'interval' => 2}}
312
+
313
+ subject(:input) { described_class.new(config) }
314
+
217
315
  before :each do
218
316
  allow(input).to receive(:jms_config_from_yaml) do |yaml_file, section|
219
317
  settings = YAML.load_file(yaml_file)[section]
@@ -222,14 +320,6 @@ describe "input/jms", :integration => true do
222
320
  end
223
321
  end
224
322
 
225
- let (:yaml_section) { 'activemq' }
226
- let (:jms_config) {{'yaml_file' => fixture_path("jms.yml"),
227
- 'yaml_section' => yaml_section,
228
- 'destination' => queue_name,
229
- 'pub_sub' => pub_sub,
230
- 'interval' => 2}}
231
- let(:input) { LogStash::Plugin.lookup("input", "jms").new(jms_config) }
232
-
233
323
  after :each do
234
324
  input.close unless input.nil?
235
325
  end
@@ -241,7 +331,7 @@ describe "input/jms", :integration => true do
241
331
  end
242
332
 
243
333
  context 'with pub_sub true and durable subscriber' do
244
- let (:jms_config) { super.merge({'durable_subscriber' => true,
334
+ let (:config) { super().merge({'durable_subscriber' => true,
245
335
  'durable_subscriber_client_id' => SecureRandom.hex(8),
246
336
  'durable_subscriber_name' => SecureRandom.hex(8) } ) }
247
337
 
@@ -258,8 +348,8 @@ describe "input/jms", :integration => true do
258
348
 
259
349
  context 'with tls', :tls => true do
260
350
  let (:yaml_section) { 'activemq_tls' }
261
- let (:jms_config) { super.merge({"keystore" => fixture_path("keystore.jks"), "keystore_password" => "changeit",
262
- "truststore" => fixture_path("keystore.jks"), "truststore_password" => "changeit"})}
351
+ let (:config) { super().merge({"keystore" => fixture_path("keystore.jks"), "keystore_password" => "changeit",
352
+ "truststore" => fixture_path("keystore.jks"), "truststore_password" => "changeit"})}
263
353
 
264
354
  context 'with pub_sub true' do
265
355
  let (:pub_sub) { true }
@@ -267,7 +357,7 @@ describe "input/jms", :integration => true do
267
357
  end
268
358
 
269
359
  context 'with pub_sub true and durable subscriber' do
270
- let (:jms_config) { super.merge({'durable_subscriber' => true,
360
+ let (:config) { super().merge({'durable_subscriber' => true,
271
361
  'durable_subscriber_client_id' => SecureRandom.hex(8),
272
362
  'durable_subscriber_name' => SecureRandom.hex(8) } ) }
273
363
 
@@ -32,6 +32,42 @@ def send_message(&block)
32
32
  end
33
33
  input.run(queue)
34
34
 
35
- destination = "#{pub_sub ? 'topic' : 'queue'}://#{queue_name}"
36
35
  tt.join(3)
37
36
  end
37
+
38
+
39
+ def get_value(type, actual, name)
40
+ actual.get(name) || actual.get("[@metadata][input][jms][#{type}][#{name}]")
41
+ end
42
+
43
+ def get_header_value(actual, name)
44
+ get_value('headers', actual, name)
45
+ end
46
+
47
+ def get_property_value(actual, name)
48
+ get_value('properties', actual, name)
49
+ end
50
+
51
+ RSpec::Matchers.define :have_header do |expected|
52
+ match do |actual|
53
+ get_header_value(actual, expected)
54
+ end
55
+ end
56
+
57
+ RSpec::Matchers.define :have_property do |expected|
58
+ match do |actual|
59
+ get_property_value(actual, expected)
60
+ end
61
+ end
62
+
63
+ RSpec::Matchers.define :have_header_value do |header, expected|
64
+ match do |actual|
65
+ expected == get_header_value(actual, header)
66
+ end
67
+ end
68
+
69
+ RSpec::Matchers.define :have_property_value do |property, expected|
70
+ match do |actual|
71
+ expected == get_property_value(actual, property)
72
+ end
73
+ end
@@ -1,9 +1,9 @@
1
1
  require_relative '../spec_helper'
2
2
  require 'logstash/inputs/jms'
3
- require 'jms'
4
- require 'json'
3
+ require 'logstash/plugin_mixins/ecs_compatibility_support/spec_helper'
4
+ require 'securerandom'
5
5
 
6
- describe "inputs/jms" do
6
+ describe LogStash::Inputs::Jms do
7
7
  let (:queue_name) {SecureRandom.hex(8)}
8
8
  let (:jms_config) {{'destination' => queue_name}}
9
9
 
@@ -37,10 +37,10 @@ describe "inputs/jms" do
37
37
  context 'configuration check' do
38
38
  context 'if threads is > 1' do
39
39
  let(:thread_count) { 2 }
40
- let(:jms_config) { super.merge({'threads' => thread_count})}
40
+ let(:jms_config) { super().merge({'threads' => thread_count})}
41
41
 
42
42
  context 'with pub_sub set to true' do
43
- let(:jms_config) { super.merge({'pub_sub' => true})}
43
+ let(:jms_config) { super().merge({'pub_sub' => true})}
44
44
 
45
45
  it 'should raise a configuration error' do
46
46
  expect { plugin.register }.to raise_error(LogStash::ConfigurationError)
@@ -48,7 +48,7 @@ describe "inputs/jms" do
48
48
  end
49
49
 
50
50
  context 'with pub_sub set to false' do
51
- let(:jms_config) { super.merge({'pub_sub' => false})}
51
+ let(:jms_config) { super().merge({'pub_sub' => false})}
52
52
 
53
53
  it 'should not raise a configuration error' do
54
54
  plugin.register
@@ -58,13 +58,13 @@ describe "inputs/jms" do
58
58
  end
59
59
 
60
60
  context 'with durable_subscriber set' do
61
- let(:jms_config) { super.merge({ 'pub_sub' => true,
61
+ let(:jms_config) { super().merge({ 'pub_sub' => true,
62
62
  'durable_subscriber' => true,
63
63
  'durable_subscriber_name' => SecureRandom.hex(8),
64
64
  'durable_subscriber_client_id' => SecureRandom.hex(8)})}
65
65
 
66
66
  context 'if durable_subscriber_client_id is not set' do
67
- let(:jms_config) { super.tap { |h| h.delete('durable_subscriber_client_id') } }
67
+ let(:jms_config) { super().tap { |h| h.delete('durable_subscriber_client_id') } }
68
68
 
69
69
  it 'should set client_id to Logstash' do
70
70
  plugin.register
@@ -73,7 +73,7 @@ describe "inputs/jms" do
73
73
  end
74
74
 
75
75
  context 'if durable_subscriber_name is not set' do
76
- let(:jms_config) { super.tap { |h| h.delete('durable_subscriber_name') } }
76
+ let(:jms_config) { super().tap { |h| h.delete('durable_subscriber_name') } }
77
77
 
78
78
  it 'should set name to the topic name' do
79
79
  plugin.register
@@ -83,7 +83,7 @@ describe "inputs/jms" do
83
83
 
84
84
 
85
85
  context 'if pub_sub is set to false' do
86
- let(:jms_config) { super.merge({'pub_sub' => false})}
86
+ let(:jms_config) { super().merge({'pub_sub' => false})}
87
87
  it 'should raise a configuration error' do
88
88
  expect { plugin.register }.to raise_error(LogStash::ConfigurationError)
89
89
  end
@@ -253,4 +253,60 @@ describe "inputs/jms" do
253
253
  end
254
254
  end
255
255
  end
256
+
257
+ context 'invalid configuration' do
258
+ let (:jms_config) { super().merge('include_headers' => true, 'include_header' => false) }
259
+
260
+ it 'should raise a configuration error' do
261
+ expect { subject.register }.to raise_error LogStash::ConfigurationError,
262
+ /Both `include_headers => true` and `include_header => false` options are specified/i
263
+ end
264
+ end
265
+
266
+ context 'targets', :ecs_compatibility_support do
267
+
268
+ ecs_compatibility_matrix(:disabled, :v1, :v8) do |ecs_select|
269
+
270
+ let (:jms_config) do
271
+ super().merge(
272
+ 'include_body' => false,
273
+ 'include_headers' => true, 'headers_target' => '@metadata',
274
+ 'include_properties' => true, 'properties_target' => '[@metadata]'
275
+ )
276
+ end
277
+
278
+ let(:jms_timestamp) { 1 }
279
+
280
+ let(:jms_message_double) do
281
+ message = double('jms-message-stub')
282
+ allow(message).to receive(:jms_timestamp).and_return(jms_timestamp)
283
+ allow_any_instance_of(described_class).to receive(:map_headers).and_return(
284
+ 'jms_message_id' => 'id1', 'jms_timestamp' => jms_timestamp, 'jms_expiration' => nil
285
+ )
286
+ allow(message).to receive(:properties).and_return(:foo => 'bar', 'the-baz' => 42)
287
+ message
288
+ end
289
+
290
+ before(:each) do
291
+ allow_any_instance_of(described_class).to receive(:ecs_compatibility).and_return(ecs_compatibility)
292
+
293
+ plugin.register
294
+ plugin.queue_event(jms_message_double, queue = [])
295
+ expect(queue.size).to eql 1
296
+ @event = queue.first
297
+ end
298
+
299
+ it 'sets headers into meta-data' do
300
+ expect( @event.get('[@metadata][jms_timestamp]') ).to eql jms_timestamp
301
+ expect( @event.get('[@metadata][jms_message_id]') ).to_not be nil
302
+ end
303
+
304
+ it 'sets properties as meta-data' do
305
+ expect( @event.get('[@metadata][foo]') ).to eql 'bar'
306
+ expect( @event.get('[@metadata][the-baz]') ).to eql 42
307
+ end
308
+
309
+ end
310
+
311
+ end
256
312
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-jms
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.1
5
5
  platform: java
6
6
  authors:
7
7
  - Elasticsearch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-17 00:00:00.000000000 Z
11
+ date: 2022-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -61,17 +61,45 @@ dependencies:
61
61
  - !ruby/object:Gem::Dependency
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - "<"
64
+ - - "~>"
65
65
  - !ruby/object:Gem::Version
66
- version: 4.0.0
67
- name: semantic_logger
66
+ version: '1.3'
67
+ name: logstash-mixin-ecs_compatibility_support
68
68
  prerelease: false
69
69
  type: :runtime
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "<"
72
+ - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 4.0.0
74
+ version: '1.3'
75
+ - !ruby/object:Gem::Dependency
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '1.0'
81
+ name: logstash-mixin-event_support
82
+ prerelease: false
83
+ type: :runtime
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.0'
89
+ - !ruby/object:Gem::Dependency
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.0'
95
+ name: logstash-mixin-validator_support
96
+ prerelease: false
97
+ type: :runtime
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.0'
75
103
  - !ruby/object:Gem::Dependency
76
104
  requirement: !ruby/object:Gem::Requirement
77
105
  requirements:
@@ -86,6 +114,20 @@ dependencies:
86
114
  - - ">="
87
115
  - !ruby/object:Gem::Version
88
116
  version: 1.2.0
117
+ - !ruby/object:Gem::Dependency
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "<"
121
+ - !ruby/object:Gem::Version
122
+ version: 4.0.0
123
+ name: semantic_logger
124
+ prerelease: false
125
+ type: :runtime
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "<"
129
+ - !ruby/object:Gem::Version
130
+ version: 4.0.0
89
131
  - !ruby/object:Gem::Dependency
90
132
  requirement: !ruby/object:Gem::Requirement
91
133
  requirements:
@@ -144,8 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
186
  - !ruby/object:Gem::Version
145
187
  version: '0'
146
188
  requirements: []
147
- rubyforge_project:
148
- rubygems_version: 2.6.13
189
+ rubygems_version: 3.1.6
149
190
  signing_key:
150
191
  specification_version: 4
151
192
  summary: Reads events from a Jms Broker