Home | History | Annotate | Download | only in base
      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 
     17     public Throwable toThrowable() {
     18         RuntimeException exception = new RuntimeException();
     19         exception.setStackTrace(toTraceArray());
     20         return exception;
     21     }
     22 
     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 
     38     public StackTraceElement[] toTraceArray() {
     39         return toTraceList().toArray(new StackTraceElement[0]);
     40     }
     41 
     42     public TraceBuilder classes(String ... classes) {
     43         this.classes = classes;
     44         return this;
     45     }
     46 
     47     public TraceBuilder methods(String ... methods) {
     48         this.methods = methods;
     49         return this;
     50     }
     51 }
     52