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
|
# File 'lib/javonet-ruby-sdk/utils/exceptions/exception_serializer.rb', line 5
def self.serialize_exception(exception, command)
exception_command = Command.new(command.runtime_name, CommandType::EXCEPTION, [])
begin
stack_trace = exception.backtrace
exception_message = exception.message
exception_name = exception.class.to_s
stack_classes = ""
stack_methods = ""
stack_lines = ""
stack_files = ""
if !stack_trace.nil? && !stack_trace.empty?
stack_trace.each_with_index do |value, index|
stack_file, stack_class, stack_line, stack_method = parse_stack_frame(value)
unless stack_file.include?("javonet-ruby-sdk") or stack_file.include?("Binaries/Ruby")
append_to_string(stack_classes, stack_class)
append_to_string(stack_methods, stack_method)
append_to_string(stack_lines, stack_line)
append_to_string(stack_files, stack_file)
if index != stack_trace.length - 1
append_to_string(stack_classes, "|")
append_to_string(stack_methods, "|")
append_to_string(stack_lines, "|")
append_to_string(stack_files, "|")
end
end
end
end
exception_command = exception_command.add_arg_to_payload(get_exception_code(exception_name.to_s))
exception_command = exception_command.add_arg_to_payload(command.to_string)
exception_command = exception_command.add_arg_to_payload(exception_name.to_s)
exception_command = exception_command.add_arg_to_payload(exception_message)
exception_command = exception_command.add_arg_to_payload(stack_classes)
exception_command = exception_command.add_arg_to_payload(stack_methods)
exception_command = exception_command.add_arg_to_payload(stack_lines)
exception_command = exception_command.add_arg_to_payload(stack_files)
rescue Exception => e
exception_command = Command.new(RuntimeNameJavonet::RUBY, CommandType::EXCEPTION, [])
exception_command = exception_command.add_arg_to_payload(ExceptionType::EXCEPTION)
if command.nil?
exception_command = exception_command.add_arg_to_payload("Command is nil")
else
exception_command = exception_command.add_arg_to_payload(command.to_string)
end
exception_command = exception_command.add_arg_to_payload("Ruby Exception Serialization Error")
exception_command = exception_command.add_arg_to_payload(e.message)
exception_command = exception_command.add_arg_to_payload("ExceptionSerializer")
exception_command = exception_command.add_arg_to_payload("serialize_exception")
exception_command = exception_command.add_arg_to_payload("undefined")
exception_command = exception_command.add_arg_to_payload(__FILE__)
end
exception_command
end
|