diff --git a/Gemfile.jruby-1.9.lock b/Gemfile.jruby-1.9.lock index 781f92c5d..50941b629 100644 --- a/Gemfile.jruby-1.9.lock +++ b/Gemfile.jruby-1.9.lock @@ -8,7 +8,7 @@ PATH filesize (= 0.0.4) gems (~> 0.8.3) i18n (= 0.6.9) - jrjackson (~> 0.2.9) + jrjackson (~> 0.3.5) minitar (~> 0.5.4) pry (~> 0.10.1) stud (~> 0.0.19) @@ -66,10 +66,10 @@ GEM domain_name (~> 0.5) i18n (0.6.9) insist (1.0.0) - jrjackson (0.2.9) - json (1.8.3-java) - kramdown (1.9.0) - logstash-devutils (0.0.18-java) + jrjackson (0.3.5) + json (1.8.2-java) + kramdown (1.8.0) + logstash-devutils (0.0.15-java) gem_publisher insist (= 1.0.0) kramdown diff --git a/lib/logstash/json.rb b/lib/logstash/json.rb index 5079de759..adbabff18 100644 --- a/lib/logstash/json.rb +++ b/lib/logstash/json.rb @@ -32,15 +32,23 @@ module LogStash ### JRuby def jruby_load(data, options = {}) - options[:symbolize_keys] ? JrJackson::Raw.parse_sym(data) : JrJackson::Raw.parse_raw(data) + # TODO [guyboertje] remove these comments in 5.0 + # options[:symbolize_keys] ? JrJackson::Raw.parse_sym(data) : JrJackson::Raw.parse_raw(data) + + JrJackson::Ruby.parse(data, options) + rescue JrJackson::ParseError => e raise LogStash::Json::ParserError.new(e.message) end def jruby_dump(o) + # TODO [guyboertje] remove these comments in 5.0 # test for enumerable here to work around an omission in JrJackson::Json.dump to # also look for Java::JavaUtil::ArrayList, see TODO submit issue - o.is_a?(Enumerable) ? JrJackson::Raw.generate(o) : JrJackson::Json.dump(o) + # o.is_a?(Enumerable) ? JrJackson::Raw.generate(o) : JrJackson::Json.dump(o) + + JrJackson::Base.generate(o, {}) + rescue => e raise LogStash::Json::GeneratorError.new(e.message) end diff --git a/logstash-core.gemspec b/logstash-core.gemspec index fff132510..1b4531b02 100644 --- a/logstash-core.gemspec +++ b/logstash-core.gemspec @@ -39,7 +39,7 @@ Gem::Specification.new do |gem| if RUBY_PLATFORM == 'java' gem.platform = RUBY_PLATFORM - gem.add_runtime_dependency "jrjackson", "~> 0.2.9" #(Apache 2.0 license) + gem.add_runtime_dependency "jrjackson", "~> 0.3.5" #(Apache 2.0 license) else gem.add_runtime_dependency "oj" #(MIT-style license) end