コード例 #1
0
  private Throwable removeFrameworkFramesAndAppendStepLocation(
      Throwable error, StackTraceElement stepLocation) {
    StackTraceElement[] stackTraceElements = error.getStackTrace();
    if (stackTraceElements.length == 0 || stepLocation == null) {
      return error;
    }

    int newStackTraceLength;
    for (newStackTraceLength = 1;
        newStackTraceLength < stackTraceElements.length;
        ++newStackTraceLength) {
      if (stepDefinition.isDefinedAt(stackTraceElements[newStackTraceLength - 1])) {
        break;
      }
    }
    StackTraceElement[] newStackTrace = new StackTraceElement[newStackTraceLength + 1];
    System.arraycopy(stackTraceElements, 0, newStackTrace, 0, newStackTraceLength);
    newStackTrace[newStackTraceLength] = stepLocation;
    error.setStackTrace(newStackTrace);
    return error;
  }