norikra 1.0.6-java → 1.0.7-java

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
  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