1 /* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5 6 package org.mockito.exceptions.base; 7 8 import java.util.Collections; 9 import java.util.LinkedList; 10 import java.util.List; 11 12 public class TraceBuilder { 13 14 private String[] methods = {}; 15 private String[] classes = {}; 16 toThrowable()17 public Throwable toThrowable() { 18 RuntimeException exception = new RuntimeException(); 19 exception.setStackTrace(toTraceArray()); 20 return exception; 21 } 22 toTraceList()23 private List<StackTraceElement> toTraceList() { 24 assert methods.length == 0 || classes.length == 0; 25 26 List<StackTraceElement> trace = new LinkedList<StackTraceElement>(); 27 for (String method : methods) { 28 trace.add(new StackTraceElement("SomeClass", method, "SomeClass.java", 50)); 29 } 30 for (String clazz : classes) { 31 trace.add(new StackTraceElement(clazz, "someMethod", clazz + ".java", 50)); 32 } 33 34 Collections.reverse(trace); 35 return trace; 36 } 37 toTraceArray()38 public StackTraceElement[] toTraceArray() { 39 return toTraceList().toArray(new StackTraceElement[0]); 40 } 41 classes(String .... classes)42 public TraceBuilder classes(String ... classes) { 43 this.classes = classes; 44 return this; 45 } 46 methods(String .... methods)47 public TraceBuilder methods(String ... methods) { 48 this.methods = methods; 49 return this; 50 } 51 } 52