norikra 1.0.6-java → 1.0.7-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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 49f70a10326048c87cd3366f588d7bf814e1bb97
4
- data.tar.gz: f7e844d23d9c25442ea1c1a06973de2e049c06cf
3
+ metadata.gz: 89c004c84e1c294cb0a07cb42fb8af1f09ce5bb9
4
+ data.tar.gz: 5d8907d43f09fd2c772c55dc7e1bfc97bbc2508b
5
5
  SHA512:
6
- metadata.gz: 16797110955adb8367955627ff11b691a9b5b68c5d369b154fabd8407cd1b24a064b55b0097d89bef53c9a21cdd8cfc7a3479e7768de957b804a0c5dee9f0a05
7
- data.tar.gz: 0646b5f217ee7b94b394c34be4506f8de1e30259a29dc0673ab60b5880b82359b232149faa63cf19397d57ade775b2fc55b910422a0c7942e1b508ccdff2580d
6
+ metadata.gz: ebb8eb23d2656c6006f12a780be1c839d09a581cb13de2da983d27424dadc2f603a61633ca564353d71456781f13f969563e8af93a98fcc1137fef4027cd1581
7
+ data.tar.gz: 26b751b08b6686c9925c91956835f96f71a4746168368eb6c83d15d405118b0c743023caa36605615f092dbf1c647a7b3dcf1cbe45baf669b929ce46f996fe68
data/Changes.md CHANGED
@@ -3,6 +3,10 @@
3
3
  Changes of norikra.
4
4
 
5
5
  ## v1
6
+ * v1.0.7:
7
+ * Fix bug to set nested values as always required if the first event includes container fields (issue #51)
8
+ * v1.0.6:
9
+ * Fix bug not to receive events on '/send' of JSON API
6
10
  * v1.0.5:
7
11
  * Add option `--log4j-properties-path` to specify logger configurations by log4j.properties file
8
12
  * Add HTTP RPC headers to allow requests from different origins
@@ -172,13 +172,19 @@ module Norikra
172
172
  true
173
173
  end
174
174
 
175
- def simple_guess(data, optional=true, strict=false)
175
+ def simple_guess(data, opts={})
176
+ unless opts.has_key?(:optional)
177
+ opts[:optional] = true
178
+ end
179
+
176
180
  flatten_key_value_pairs = []
177
181
 
178
182
  data.each do |key,value|
179
- next if strict && !(@fields.has_key?(key) || @waiting_fields.include?(key) || value.is_a?(Hash) || value.is_a?(Array))
183
+ next if opts[:strict] && !(@fields.has_key?(key) || @waiting_fields.include?(key) || value.is_a?(Hash) || value.is_a?(Array))
180
184
 
181
185
  if value.is_a?(Hash) || value.is_a?(Array)
186
+ next if opts[:baseset]
187
+
182
188
  Norikra::FieldSet.leaves(value).map{|chain| [key] + chain}.each do |chain|
183
189
  value = chain.pop
184
190
  key = Norikra::Field.regulate_key_chain(chain).join('.')
@@ -203,34 +209,14 @@ module Norikra
203
209
  }
204
210
  ]
205
211
 
206
- FieldSet.new(mapping, optional)
212
+ FieldSet.new(mapping, opts[:optional])
207
213
  end
208
214
 
209
- # def self.guess(data, optional=true)
210
- # mapping = Hash[
211
- # data.map{|key,value|
212
- # sval = value.to_s
213
- # type = case
214
- # when val.is_a?(TrueClass) || val.is_a?(FalseClass) || sval =~ /^(?:true|false)$/i
215
- # 'boolean'
216
- # when val.is_a?(Integer) || sval =~ /^-?\d+[lL]?$/
217
- # 'long'
218
- # when val.is_a?(Float) || sval =~ /^-?\d+\.\d+(?:[eE]-?\d+|[dDfF])?$/
219
- # 'double'
220
- # else
221
- # 'string'
222
- # end
223
- # [key,type]
224
- # }
225
- # ]
226
- # self.new(mapping, optional)
227
- # end
228
-
229
215
  def refer(data, strict=false)
230
216
  field_names_key = FieldSet.field_names_key(data, self, strict, @waiting_fields)
231
217
  return @set_map[field_names_key] if @set_map.has_key?(field_names_key)
232
218
 
233
- guessed = self.simple_guess(data, false, strict)
219
+ guessed = self.simple_guess(data, optional: false, strict: strict)
234
220
  guessed_fields = guessed.fields
235
221
  @fields.each do |key,field|
236
222
  if guessed_fields.has_key?(key)
@@ -101,7 +101,7 @@ module Norikra
101
101
  end
102
102
 
103
103
  def generate_base_fieldset(target, event)
104
- guessed = @typedefs[target].simple_guess(event, false, false) # all fields are non-optional
104
+ guessed = @typedefs[target].simple_guess(event, optional: false, strict: false, baseset: true) # all fields are non-optional
105
105
  guessed.update(@typedefs[target].fields, false)
106
106
  guessed
107
107
  end
@@ -1,3 +1,3 @@
1
1
  module Norikra
2
- VERSION = "1.0.6"
2
+ VERSION = "1.0.7"
3
3
  end
data/spec/typedef_spec.rb CHANGED
@@ -334,7 +334,7 @@ describe Norikra::Typedef do
334
334
 
335
335
  it 'can guess about fields already known with strict mode' do
336
336
  typedef = Norikra::Typedef.new({'key1' => 'boolean', 'key2' => 'boolean', 'key3' => 'long'})
337
- t = typedef.simple_guess({'key1' => true, 'key2' => false, 'key3' => 10, 'key4' => 3.1415, 'key5' => 'foobar'}, true, true)
337
+ t = typedef.simple_guess({'key1' => true, 'key2' => false, 'key3' => 10, 'key4' => 3.1415, 'key5' => 'foobar'}, optional: true, strict: true)
338
338
  r = t.definition
339
339
  expect(r['key1']).to eql('boolean')
340
340
  expect(r['key2']).to eql('boolean')
@@ -348,7 +348,7 @@ describe Norikra::Typedef do
348
348
  typedef = Norikra::Typedef.new({'key1' => 'boolean', 'key2' => 'boolean', 'key3' => 'long'})
349
349
  typedef.waiting_fields = ['key5']
350
350
 
351
- t = typedef.simple_guess({'key1' => true, 'key2' => false, 'key3' => 10, 'key4' => 3.1415, 'key5' => 'foobar'}, true, true)
351
+ t = typedef.simple_guess({'key1' => true, 'key2' => false, 'key3' => 10, 'key4' => 3.1415, 'key5' => 'foobar'}, optional: true, strict: true)
352
352
  r = t.definition
353
353
  expect(r['key1']).to eql('boolean')
354
354
  expect(r['key2']).to eql('boolean')
@@ -368,7 +368,7 @@ describe Norikra::Typedef do
368
368
  'key3' => [{'k2' => 1, 'k3' => 'sssss', 'key4' => 'baz'}],
369
369
  'key4' => {'f1' => 'xxx', 'f2' => [30, true]},
370
370
  'key5' => 'foobar'
371
- }, true, true)
371
+ }, optional: true, strict: true)
372
372
  r = t.definition
373
373
  expect(r.size).to eql(6)
374
374
  expect(r['key1']).to eql('boolean')
@@ -379,7 +379,7 @@ describe Norikra::Typedef do
379
379
  expect(r['key5']).to eql('string')
380
380
  end
381
381
 
382
- it 'ignores empty container fieldss' do
382
+ it 'ignores empty container fields' do
383
383
  typedef = Norikra::Typedef.new({'key1' => 'boolean', 'key2' => 'long', 'key3.$0.key4' => 'string'})
384
384
  typedef.waiting_fields = ['key4.f1', 'key4.f2.$0', 'key5']
385
385
 
@@ -389,13 +389,34 @@ describe Norikra::Typedef do
389
389
  'key3' => [],
390
390
  'key4' => {},
391
391
  'key5' => 'foobar'
392
- }, true, true)
392
+ }, optional: true, strict: true)
393
393
  r = t.definition
394
394
  expect(r.size).to eql(3)
395
395
  expect(r['key1']).to eql('boolean')
396
396
  expect(r['key2']).to eql('long')
397
397
  expect(r['key5']).to eql('string')
398
398
  end
399
+
400
+ it 'ignores any container fields if baseset option specified' do
401
+ typedef = Norikra::Typedef.new(nil) # lazy typedef for baseset generation test
402
+ typedef.waiting_fields = ['key1.a1', 'key1.a2', 'key2.$0']
403
+
404
+ t = typedef.simple_guess({
405
+ 'key1' => {'a1' => 1, 'a2' => 2},
406
+ 'key2' => [3, 4],
407
+ }, optional: false, strict: false, baseset: true)
408
+ r = t.definition
409
+ expect(r.size).to eql(0)
410
+
411
+ t = typedef.simple_guess({
412
+ 'key1' => {'a1' => 1, 'a2' => 2},
413
+ 'key2' => [3, 4],
414
+ 'key3' => true,
415
+ }, optional: false, strict: false, baseset: true)
416
+ r = t.definition
417
+ expect(r.size).to eql(1)
418
+ expect(r['key3']).to eql('boolean')
419
+ end
399
420
  end
400
421
 
401
422
  describe '#refer' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: norikra
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  platform: java
6
6
  authors:
7
7
  - TAGOMORI Satoshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-28 00:00:00.000000000 Z
11
+ date: 2014-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mizuno