Class: ExceptionSerializer
- Inherits:
-
Object
- Object
- ExceptionSerializer
- Defined in:
- lib/javonet-ruby-sdk/utils/exceptions/exception_serializer.rb,
lib/javonet-ruby-sdk/Binaries/Ruby/Linux/X64/utils/exceptions/exception_serializer.rb,
lib/javonet-ruby-sdk/Binaries/Ruby/MacOs/X64/utils/exceptions/exception_serializer.rb,
lib/javonet-ruby-sdk/Binaries/Ruby/Windows/X64/utils/exceptions/exception_serializer.rb
Class Method Summary collapse
- .append_to_string(string, value) ⇒ Object
- .get_exception_code(exception_name) ⇒ Object
- .parse_stack_frame(stack_frame) ⇒ Object
- .serialize_exception(exception, command) ⇒ Object
Class Method Details
.append_to_string(string, value) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/javonet-ruby-sdk/utils/exceptions/exception_serializer.rb', line 43 def self.append_to_string(string, value) if value.nil? string << "undefined" else string << value end end |
.get_exception_code(exception_name) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/javonet-ruby-sdk/utils/exceptions/exception_serializer.rb', line 71 def self.get_exception_code(exception_name) case exception_name when "Exception" return ExceptionType::EXCEPTION when "IOError" return ExceptionType::IO_EXCEPTION when "Errno::ENOENT" return ExceptionType::FILE_NOT_FOUND_EXCEPTION when "RuntimeError" return ExceptionType::RUNTIME_EXCEPTION when "ZeroDivisionError" return ExceptionType::ARITHMETIC_EXCEPTION when "ArgumentError" return ExceptionType::ILLEGAL_ARGUMENT_EXCEPTION when "IndexError" return ExceptionType::INDEX_OUT_OF_BOUNDS_EXCEPTION when "TypeError" return ExceptionType::NULL_POINTER_EXCEPTION else return exception_name end end |
.parse_stack_frame(stack_frame) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/javonet-ruby-sdk/utils/exceptions/exception_serializer.rb', line 51 def self.parse_stack_frame(stack_frame) # Extract the file path, line number, and method name using regular expressions match = /(.+):(\d+):in `(.+)'/.match(stack_frame) # Extract the name of the file without the full path file_name = File.basename(match[1]) # Extract the class name and method name method_name = match[3] file_name = File.basename(match[1], ".rb") class_name = file_name.split('_').map(&:capitalize).join('') if method_name =~ /(.+)#(.+)/ class_name = $1.split('::')[-1] method_name = $2 end # Return the four variables as an array [match[1], class_name, match[2], method_name] end |
.serialize_exception(exception, command) ⇒ Object
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 |
# File 'lib/javonet-ruby-sdk/utils/exceptions/exception_serializer.rb', line 5 def self.serialize_exception(exception, command) exception_command = Command.new(RuntimeName::RUBY, CommandType::EXCEPTION, []) stack_trace = exception.backtrace = exception. exception_name = exception.class stack_classes = "" stack_methods = "" stack_lines = "" stack_files = "" 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 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_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) return exception_command end |