• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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