From ae5bb5df7a499d0e5e6494efbf89b0930d23e04a Mon Sep 17 00:00:00 2001 From: zhangduo Date: Mon, 25 Feb 2019 21:32:14 +0800 Subject: [PATCH] HBASE-21947 TestShell is broken after we remove the jackson dependencies --- .../src/main/ruby/hbase/taskmonitor.rb | 47 ++++++++++--------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/hbase-shell/src/main/ruby/hbase/taskmonitor.rb b/hbase-shell/src/main/ruby/hbase/taskmonitor.rb index 27aaa021f1..f52d13ac43 100644 --- a/hbase-shell/src/main/ruby/hbase/taskmonitor.rb +++ b/hbase-shell/src/main/ruby/hbase/taskmonitor.rb @@ -33,20 +33,21 @@ module Hbase # Represents information reported by a server on a single MonitoredTask class Task - def initialize(taskMap,host) - - taskMap.each_pair do |k,v| + def initialize(taskMap, host) + taskMap.entrySet.each do |entry| + k = entry.getKey + v = entry.getValue case k - when "statustimems" - @statustime = Time.at(v/1000) - when "status" - @status = v - when "starttimems" - @starttime = Time.at(v/1000) - when "description" - @description = v - when "state" - @state = v + when 'statustimems' + @statustime = Time.at(v.getAsLong / 1000) + when 'status' + @status = v.getAsString + when 'starttimems' + @starttime = Time.at(v.getAsLong / 1000) + when 'description' + @description = v.getAsString + when 'state' + @state = v.getAsString end end @@ -82,7 +83,8 @@ module Hbase def tasksOnHost(filter,host) java_import 'java.net.URL' - java_import 'com.fasterxml.jackson.databind.ObjectMapper' + java_import 'java.io.InputStreamReader' + java_import 'org.apache.hbase.thirdparty.com.google.gson.JsonParser' infoport = @admin.getClusterStatus().getLoad(host).getInfoServerPort().to_s @@ -96,16 +98,19 @@ module Hbase schema = "http://" url = schema + host.hostname + ":" + infoport + "/rs-status?format=json&filter=" + filter - json = URL.new(url) - mapper = ObjectMapper.new + json = URL.new(url).openStream + parser = JsonParser.new # read and parse JSON - tasksArrayList = mapper.readValue(json,java.lang.Object.java_class) - + begin + tasks_array_list = parser.parse(InputStreamReader.new(json, 'UTF-8')).getAsJsonArray + ensure + json.close + end # convert to an array of TaskMonitor::Task instances - tasks = Array.new - tasksArrayList.each do |t| - tasks.unshift Task.new(t,host) + tasks = [] + tasks_array_list.each do |t| + tasks.unshift Task.new(t.getAsJsonObject, host) end return tasks -- 2.17.2 (Apple Git-113)