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
|
# File 'lib/javonet-ruby-sdk/utils/exceptions/exception_serializer.rb', line 4
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)
next if 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)
next unless 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
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_s)
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)
exception_command = if command.nil?
exception_command.add_arg_to_payload('Command is nil')
else
exception_command.add_arg_to_payload(command.to_s)
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
|