RubyStackTraceElement.java

  1. package org.jruby.runtime.backtrace;

  2. public class RubyStackTraceElement {
  3.     public static final RubyStackTraceElement[] EMPTY_ARRAY = new RubyStackTraceElement[0];
  4.     private final StackTraceElement element;
  5.     private final boolean binding;
  6.     private final FrameType frameType;

  7.     public RubyStackTraceElement(StackTraceElement element) {
  8.         this.element = element;
  9.         this.binding = false;
  10.         this.frameType = FrameType.METHOD;
  11.     }

  12.     public RubyStackTraceElement(String cls, String method, String file, int line, boolean binding) {
  13.         this(cls, method, file, line, binding, FrameType.METHOD);
  14.     }

  15.     public RubyStackTraceElement(String cls, String method, String file, int line, boolean binding, FrameType frameType) {
  16.         this.element = new StackTraceElement(cls, method, file, line);
  17.         this.binding = binding;
  18.         this.frameType = frameType;
  19.     }

  20.     public StackTraceElement getElement() {
  21.         return element;
  22.     }

  23.     public boolean isBinding() {
  24.         return binding;
  25.     }

  26.     public String getClassName() {
  27.         return element.getClassName();
  28.     }

  29.     public String getFileName() {
  30.         return element.getFileName();
  31.     }

  32.     public int getLineNumber() {
  33.         return element.getLineNumber();
  34.     }

  35.     public String getMethodName() {
  36.         return element.getMethodName();
  37.     }

  38.     public FrameType getFrameType() {
  39.         return frameType;
  40.     }

  41.     public String toString() {
  42.         return element.toString();
  43.     }
  44.    
  45.     public String mriStyleString() {
  46.         return element.getFileName() + ":" + element.getLineNumber() + ":in `" + element.getMethodName() + "'";
  47.     }
  48. }