json 1.6.7-java → 1.6.8-java

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of json might be problematic. Click here for more details.

@@ -293,21 +293,28 @@ module JSON
293
293
  attr_accessor :load_default_options
294
294
  end
295
295
  self.load_default_options = {
296
- :max_nesting => false,
297
- :allow_nan => true,
298
- :quirks_mode => true,
296
+ :max_nesting => false,
297
+ :allow_nan => true,
298
+ :quirks_mode => true,
299
+ :create_additions => true,
299
300
  }
300
301
 
301
302
  # Load a ruby data structure from a JSON _source_ and return it. A source can
302
303
  # either be a string-like object, an IO-like object, or an object responding
303
304
  # to the read method. If _proc_ was given, it will be called with any nested
304
- # Ruby object as an argument recursively in depth first order. The default
305
- # options for the parser can be changed via the load_default_options method.
305
+ # Ruby object as an argument recursively in depth first order. To modify the
306
+ # default options pass in the optional _options_ argument as well.
307
+ #
308
+ # BEWARE: This method is meant to serialise data from trusted user input,
309
+ # like from your own database server or clients under your control, it could
310
+ # be dangerous to allow untrusted users to pass JSON sources into it. The
311
+ # default options for the parser can be changed via the load_default_options
312
+ # method.
306
313
  #
307
314
  # This method is part of the implementation of the load/dump interface of
308
315
  # Marshal and YAML.
309
- def load(source, proc = nil)
310
- opts = load_default_options
316
+ def load(source, proc = nil, options = {})
317
+ opts = load_default_options.merge options
311
318
  if source.respond_to? :to_str
312
319
  source = source.to_str
313
320
  elsif source.respond_to? :to_io
Binary file
Binary file
@@ -63,9 +63,9 @@ module JSON
63
63
  # * *symbolize_names*: If set to true, returns symbols for the names
64
64
  # (keys) in a JSON object. Otherwise strings are returned, which is also
65
65
  # the default.
66
- # * *create_additions*: If set to false, the Parser doesn't create
67
- # additions even if a matchin class and create_id was found. This option
68
- # defaults to true.
66
+ # * *create_additions*: If set to true, the Parser creates
67
+ # additions when if a matching class and create_id was found. This
68
+ # option defaults to false.
69
69
  # * *object_class*: Defaults to Hash
70
70
  # * *array_class*: Defaults to Array
71
71
  # * *quirks_mode*: Enables quirks_mode for parser, that is for example
@@ -88,7 +88,7 @@ module JSON
88
88
  if opts.key?(:create_additions)
89
89
  @create_additions = !!opts[:create_additions]
90
90
  else
91
- @create_additions = true
91
+ @create_additions = false
92
92
  end
93
93
  @create_id = @create_additions ? JSON.create_id : nil
94
94
  @object_class = opts[:object_class] || Hash
@@ -1,6 +1,6 @@
1
1
  module JSON
2
2
  # JSON version
3
- VERSION = '1.6.7'
3
+ VERSION = '1.6.8'
4
4
  VERSION_ARRAY = VERSION.split(/\./).map { |x| x.to_i } # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -329,12 +329,12 @@ class TestJSON < Test::Unit::TestCase
329
329
  def test_generate_core_subclasses_with_new_to_json
330
330
  obj = SubHash2["foo" => SubHash2["bar" => true]]
331
331
  obj_json = JSON(obj)
332
- obj_again = JSON(obj_json)
332
+ obj_again = JSON.parse(obj_json, :create_additions => true)
333
333
  assert_kind_of SubHash2, obj_again
334
334
  assert_kind_of SubHash2, obj_again['foo']
335
335
  assert obj_again['foo']['bar']
336
336
  assert_equal obj, obj_again
337
- assert_equal ["foo"], JSON(JSON(SubArray2["foo"]))
337
+ assert_equal ["foo"], JSON(JSON(SubArray2["foo"]), :create_additions => true)
338
338
  end
339
339
 
340
340
  def test_generate_core_subclasses_with_default_to_json
@@ -493,6 +493,12 @@ EOT
493
493
  assert_equal nil, JSON.load('')
494
494
  end
495
495
 
496
+ def test_load_with_options
497
+ small_hash = JSON("foo" => 'bar')
498
+ symbol_hash = { :foo => 'bar' }
499
+ assert_equal symbol_hash, JSON.load(small_hash, nil, :symbolize_names => true)
500
+ end
501
+
496
502
  def test_dump
497
503
  too_deep = '[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]'
498
504
  assert_equal too_deep, JSON.dump(eval(too_deep))
@@ -73,11 +73,19 @@ class TestJSONAddition < Test::Unit::TestCase
73
73
  a = A.new(666)
74
74
  assert A.json_creatable?
75
75
  json = generate(a)
76
- a_again = JSON.parse(json)
76
+ a_again = JSON.parse(json, :create_additions => true)
77
77
  assert_kind_of a.class, a_again
78
78
  assert_equal a, a_again
79
79
  end
80
80
 
81
+ def test_extended_json_default
82
+ a = A.new(666)
83
+ assert A.json_creatable?
84
+ json = generate(a)
85
+ a_hash = JSON.parse(json)
86
+ assert_kind_of Hash, a_hash
87
+ end
88
+
81
89
  def test_extended_json_disabled
82
90
  a = A.new(666)
83
91
  assert A.json_creatable?
@@ -104,7 +112,7 @@ class TestJSONAddition < Test::Unit::TestCase
104
112
  c = C.new
105
113
  assert !C.json_creatable?
106
114
  json = generate(c)
107
- assert_raises(ArgumentError, NameError) { JSON.parse(json) }
115
+ assert_raises(ArgumentError, NameError) { JSON.parse(json, :create_additions => true) }
108
116
  end
109
117
 
110
118
  def test_raw_strings
@@ -122,7 +130,7 @@ class TestJSONAddition < Test::Unit::TestCase
122
130
  assert_match(/\A\{.*\}\Z/, json)
123
131
  assert_match(/"json_class":"String"/, json)
124
132
  assert_match(/"raw":\[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255\]/, json)
125
- raw_again = JSON.parse(json)
133
+ raw_again = JSON.parse(json, :create_additions => true)
126
134
  assert_equal raw, raw_again
127
135
  end
128
136
 
@@ -130,17 +138,17 @@ class TestJSONAddition < Test::Unit::TestCase
130
138
 
131
139
  def test_core
132
140
  t = Time.now
133
- assert_equal t, JSON(JSON(t))
141
+ assert_equal t, JSON(JSON(t), :create_additions => true)
134
142
  d = Date.today
135
- assert_equal d, JSON(JSON(d))
143
+ assert_equal d, JSON(JSON(d), :create_additions => true)
136
144
  d = DateTime.civil(2007, 6, 14, 14, 57, 10, Rational(1, 12), 2299161)
137
- assert_equal d, JSON(JSON(d))
138
- assert_equal 1..10, JSON(JSON(1..10))
139
- assert_equal 1...10, JSON(JSON(1...10))
140
- assert_equal "a".."c", JSON(JSON("a".."c"))
141
- assert_equal "a"..."c", JSON(JSON("a"..."c"))
145
+ assert_equal d, JSON(JSON(d), :create_additions => true)
146
+ assert_equal 1..10, JSON(JSON(1..10), :create_additions => true)
147
+ assert_equal 1...10, JSON(JSON(1...10), :create_additions => true)
148
+ assert_equal "a".."c", JSON(JSON("a".."c"), :create_additions => true)
149
+ assert_equal "a"..."c", JSON(JSON("a"..."c"), :create_additions => true)
142
150
  s = MyJsonStruct.new 4711, 'foot'
143
- assert_equal s, JSON(JSON(s))
151
+ assert_equal s, JSON(JSON(s), :create_additions => true)
144
152
  struct = Struct.new :foo, :bar
145
153
  s = struct.new 4711, 'foot'
146
154
  assert_raises(JSONError) { JSON(s) }
@@ -148,41 +156,41 @@ class TestJSONAddition < Test::Unit::TestCase
148
156
  raise TypeError, "test me"
149
157
  rescue TypeError => e
150
158
  e_json = JSON.generate e
151
- e_again = JSON e_json
159
+ e_again = JSON e_json, :create_additions => true
152
160
  assert_kind_of TypeError, e_again
153
161
  assert_equal e.message, e_again.message
154
162
  assert_equal e.backtrace, e_again.backtrace
155
163
  end
156
- assert_equal(/foo/, JSON(JSON(/foo/)))
157
- assert_equal(/foo/i, JSON(JSON(/foo/i)))
164
+ assert_equal(/foo/, JSON(JSON(/foo/), :create_additions => true))
165
+ assert_equal(/foo/i, JSON(JSON(/foo/i), :create_additions => true))
158
166
  end
159
167
 
160
168
  def test_utc_datetime
161
169
  now = Time.now
162
- d = DateTime.parse(now.to_s) # usual case
163
- assert_equal d, JSON.parse(d.to_json)
170
+ d = DateTime.parse(now.to_s, :create_additions => true) # usual case
171
+ assert_equal d, JSON.parse(d.to_json, :create_additions => true)
164
172
  d = DateTime.parse(now.utc.to_s) # of = 0
165
- assert_equal d, JSON.parse(d.to_json)
173
+ assert_equal d, JSON.parse(d.to_json, :create_additions => true)
166
174
  d = DateTime.civil(2008, 6, 17, 11, 48, 32, Rational(1,24))
167
- assert_equal d, JSON.parse(d.to_json)
175
+ assert_equal d, JSON.parse(d.to_json, :create_additions => true)
168
176
  d = DateTime.civil(2008, 6, 17, 11, 48, 32, Rational(12,24))
169
- assert_equal d, JSON.parse(d.to_json)
177
+ assert_equal d, JSON.parse(d.to_json, :create_additions => true)
170
178
  end
171
179
 
172
180
  def test_rational_complex
173
- assert_equal Rational(2, 9), JSON(JSON(Rational(2, 9)))
174
- assert_equal Complex(2, 9), JSON(JSON(Complex(2, 9)))
181
+ assert_equal Rational(2, 9), JSON.parse(JSON(Rational(2, 9)), :create_additions => true)
182
+ assert_equal Complex(2, 9), JSON.parse(JSON(Complex(2, 9)), :create_additions => true)
175
183
  end
176
184
 
177
185
  def test_bigdecimal
178
- assert_equal BigDecimal('3.141', 23), JSON(JSON(BigDecimal('3.141', 23)))
179
- assert_equal BigDecimal('3.141', 666), JSON(JSON(BigDecimal('3.141', 666)))
186
+ assert_equal BigDecimal('3.141', 23), JSON(JSON(BigDecimal('3.141', 23)), :create_additions => true)
187
+ assert_equal BigDecimal('3.141', 666), JSON(JSON(BigDecimal('3.141', 666)), :create_additions => true)
180
188
  end
181
189
 
182
190
  def test_ostruct
183
191
  o = OpenStruct.new
184
192
  # XXX this won't work; o.foo = { :bar => true }
185
193
  o.foo = { 'bar' => true }
186
- assert_equal o, JSON(JSON(o))
194
+ assert_equal o, JSON.parse(JSON(o), :create_additions => true)
187
195
  end
188
196
  end
@@ -27,14 +27,13 @@ class TestJSONStringMatching < Test::Unit::TestCase
27
27
  t = TestTime.new
28
28
  t_json = [ t ].to_json
29
29
  assert_equal [ t ],
30
- JSON.parse(t_json,
31
- :match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime })
30
+ JSON.parse(t_json, :create_additions => true,
31
+ :match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\z/ => TestTime })
32
32
  assert_equal [ t.strftime('%FT%T%z') ],
33
- JSON.parse(t_json,
34
- :match_string => { /\A\d{3}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime })
33
+ JSON.parse(t_json, :create_additions => true,
34
+ :match_string => { /\A\d{3}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\z/ => TestTime })
35
35
  assert_equal [ t.strftime('%FT%T%z') ],
36
36
  JSON.parse(t_json,
37
- :match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime },
38
- :create_additions => false)
37
+ :match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\z/ => TestTime })
39
38
  end
40
39
  end
metadata CHANGED
@@ -1,121 +1,114 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: json
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.6.7
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.6.8
6
6
  platform: java
7
- authors:
8
- - Daniel Luz
9
- autorequire:
7
+ authors:
8
+ - Daniel Luz
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-04-28 00:00:00 Z
12
+ date: 2013-02-10 00:00:00.000000000 Z
14
13
  dependencies: []
15
-
16
14
  description: A JSON implementation as a JRuby extension.
17
15
  email: dev+ruby@mernen.com
18
16
  executables: []
19
-
20
17
  extensions: []
21
-
22
18
  extra_rdoc_files: []
23
-
24
- files:
25
- - lib/json.rb
26
- - lib/json/version.rb
27
- - lib/json/common.rb
28
- - lib/json/ext.rb
29
- - lib/json/pure.rb
30
- - lib/json/light_object.rb
31
- - lib/json/add/symbol.rb
32
- - lib/json/add/struct.rb
33
- - lib/json/add/complex.rb
34
- - lib/json/add/rational.rb
35
- - lib/json/add/exception.rb
36
- - lib/json/add/time.rb
37
- - lib/json/add/bigdecimal.rb
38
- - lib/json/add/date_time.rb
39
- - lib/json/add/core.rb
40
- - lib/json/add/range.rb
41
- - lib/json/add/date.rb
42
- - lib/json/add/regexp.rb
43
- - lib/json/add/ostruct.rb
44
- - lib/json/pure/generator.rb
45
- - lib/json/pure/parser.rb
46
- - lib/json/ext/generator.jar
47
- - lib/json/ext/parser.jar
48
- - tests/test_json_string_matching.rb
49
- - tests/test_json_fixtures.rb
50
- - tests/setup_variant.rb
51
- - tests/test_json_unicode.rb
52
- - tests/test_json_addition.rb
53
- - tests/test_json_generate.rb
54
- - tests/test_json_encoding.rb
55
- - tests/test_json.rb
56
- - tests/fixtures/fail6.json
57
- - tests/fixtures/fail9.json
58
- - tests/fixtures/fail10.json
59
- - tests/fixtures/fail24.json
60
- - tests/fixtures/fail28.json
61
- - tests/fixtures/fail13.json
62
- - tests/fixtures/fail4.json
63
- - tests/fixtures/pass3.json
64
- - tests/fixtures/fail11.json
65
- - tests/fixtures/fail14.json
66
- - tests/fixtures/fail3.json
67
- - tests/fixtures/fail12.json
68
- - tests/fixtures/pass16.json
69
- - tests/fixtures/pass15.json
70
- - tests/fixtures/fail20.json
71
- - tests/fixtures/fail8.json
72
- - tests/fixtures/pass2.json
73
- - tests/fixtures/fail5.json
74
- - tests/fixtures/fail1.json
75
- - tests/fixtures/fail25.json
76
- - tests/fixtures/pass17.json
77
- - tests/fixtures/fail7.json
78
- - tests/fixtures/pass26.json
79
- - tests/fixtures/fail21.json
80
- - tests/fixtures/pass1.json
81
- - tests/fixtures/fail23.json
82
- - tests/fixtures/fail18.json
83
- - tests/fixtures/fail2.json
84
- - tests/fixtures/fail22.json
85
- - tests/fixtures/fail27.json
86
- - tests/fixtures/fail19.json
19
+ files:
20
+ - lib/json.rb
21
+ - lib/json/version.rb
22
+ - lib/json/common.rb
23
+ - lib/json/ext.rb
24
+ - lib/json/pure.rb
25
+ - lib/json/light_object.rb
26
+ - lib/json/add/symbol.rb
27
+ - lib/json/add/struct.rb
28
+ - lib/json/add/complex.rb
29
+ - lib/json/add/rational.rb
30
+ - lib/json/add/exception.rb
31
+ - lib/json/add/time.rb
32
+ - lib/json/add/bigdecimal.rb
33
+ - lib/json/add/date_time.rb
34
+ - lib/json/add/core.rb
35
+ - lib/json/add/range.rb
36
+ - lib/json/add/date.rb
37
+ - lib/json/add/regexp.rb
38
+ - lib/json/add/ostruct.rb
39
+ - lib/json/pure/generator.rb
40
+ - lib/json/pure/parser.rb
41
+ - lib/json/ext/generator.jar
42
+ - lib/json/ext/parser.jar
43
+ - tests/test_json_string_matching.rb
44
+ - tests/test_json_fixtures.rb
45
+ - tests/setup_variant.rb
46
+ - tests/test_json_unicode.rb
47
+ - tests/test_json_addition.rb
48
+ - tests/test_json_generate.rb
49
+ - tests/test_json_encoding.rb
50
+ - tests/test_json.rb
51
+ - tests/fixtures/fail6.json
52
+ - tests/fixtures/fail9.json
53
+ - tests/fixtures/fail10.json
54
+ - tests/fixtures/fail24.json
55
+ - tests/fixtures/fail28.json
56
+ - tests/fixtures/fail13.json
57
+ - tests/fixtures/fail4.json
58
+ - tests/fixtures/pass3.json
59
+ - tests/fixtures/fail11.json
60
+ - tests/fixtures/fail14.json
61
+ - tests/fixtures/fail3.json
62
+ - tests/fixtures/fail12.json
63
+ - tests/fixtures/pass16.json
64
+ - tests/fixtures/pass15.json
65
+ - tests/fixtures/fail20.json
66
+ - tests/fixtures/fail8.json
67
+ - tests/fixtures/pass2.json
68
+ - tests/fixtures/fail5.json
69
+ - tests/fixtures/fail1.json
70
+ - tests/fixtures/fail25.json
71
+ - tests/fixtures/pass17.json
72
+ - tests/fixtures/fail7.json
73
+ - tests/fixtures/pass26.json
74
+ - tests/fixtures/fail21.json
75
+ - tests/fixtures/pass1.json
76
+ - tests/fixtures/fail23.json
77
+ - tests/fixtures/fail18.json
78
+ - tests/fixtures/fail2.json
79
+ - tests/fixtures/fail22.json
80
+ - tests/fixtures/fail27.json
81
+ - tests/fixtures/fail19.json
87
82
  homepage: http://json-jruby.rubyforge.org/
88
83
  licenses: []
89
-
90
- post_install_message:
84
+ post_install_message:
91
85
  rdoc_options: []
92
-
93
- require_paths:
94
- - lib
95
- required_ruby_version: !ruby/object:Gem::Requirement
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ segments:
93
+ - 0
94
+ hash: 2
95
+ version: !binary |-
96
+ MA==
96
97
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 2
101
- segments:
102
- - 0
103
- version: "0"
104
- required_rubygems_version: !ruby/object:Gem::Requirement
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ segments:
103
+ - 0
104
+ hash: 2
105
+ version: !binary |-
106
+ MA==
105
107
  none: false
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- hash: 2
110
- segments:
111
- - 0
112
- version: "0"
113
108
  requirements: []
114
-
115
109
  rubyforge_project: json-jruby
116
- rubygems_version: 1.8.22
117
- signing_key:
110
+ rubygems_version: 1.8.24
111
+ signing_key:
118
112
  specification_version: 3
119
113
  summary: JSON implementation for JRuby
120
114
  test_files: []
121
-