| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| package org.mockito.internal.debugging; |
| |
| import java.io.Serializable; |
| import org.mockito.internal.exceptions.stacktrace.StackTraceFilter; |
| import org.mockito.invocation.Location; |
| |
| public class LocationImpl implements Location, Serializable { |
| |
| private static final long serialVersionUID = -9054861157390980624L; |
| private final Throwable stackTraceHolder; |
| private final StackTraceFilter stackTraceFilter; |
| |
| public LocationImpl() { |
| this(new StackTraceFilter()); |
| } |
| |
| public LocationImpl(StackTraceFilter stackTraceFilter) { |
| this(stackTraceFilter, new Throwable()); |
| } |
| |
| public LocationImpl(Throwable stackTraceHolder) { |
| this(new StackTraceFilter(), stackTraceHolder); |
| } |
| |
| private LocationImpl(StackTraceFilter stackTraceFilter, Throwable stackTraceHolder) { |
| this.stackTraceFilter = stackTraceFilter; |
| this.stackTraceHolder = stackTraceHolder; |
| } |
| |
| @Override |
| public String toString() { |
| //TODO SF perhaps store the results after invocation? |
| StackTraceElement[] filtered = stackTraceFilter.filter(stackTraceHolder.getStackTrace(), false); |
| if (filtered.length == 0) { |
| return "-> at <<unknown line>>"; |
| } |
| return "-> at " + filtered[0].toString(); |
| } |
| } |