/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.exceptions.base;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class TraceBuilder {
private String[] methods = {};
private String[] classes = {};
public Throwable toThrowable() {
RuntimeException exception = new RuntimeException();
exception.setStackTrace(toTraceArray());
return exception;
}
private List<StackTraceElement> toTraceList() {
assert methods.length == 0 || classes.length == 0;
List<StackTraceElement> trace = new LinkedList<StackTraceElement>();
for (String method : methods) {
trace.add(new StackTraceElement("SomeClass", method, "SomeClass.java", 50));
}
for (String clazz : classes) {
trace.add(new StackTraceElement(clazz, "someMethod", clazz + ".java", 50));
}
Collections.reverse(trace);
return trace;
}
public StackTraceElement[] toTraceArray() {
return toTraceList().toArray(new StackTraceElement[0]);
}
public TraceBuilder classes(String ... classes) {
this.classes = classes;
return this;
}
public TraceBuilder methods(String ... methods) {
this.methods = methods;
return this;
}
}