Clover coverage report - DrJava Test Coverage (drjava-20120422-r5456)
Coverage timestamp: Sun Apr 22 2012 03:13:25 CDT
file stats: LOC: 97   Methods: 7
NCLOC: 47   Classes: 2
 
 Source file Conditionals Statements Methods TOTAL
RunnableEST.java 0% 0% 0% 0%
coverage
 1    /*BEGIN_COPYRIGHT_BLOCK
 2    *
 3    * Copyright (c) 2001-2010, JavaPLT group at Rice University (drjava@rice.edu)
 4    * All rights reserved.
 5    *
 6    * Redistribution and use in source and binary forms, with or without
 7    * modification, are permitted provided that the following conditions are met:
 8    * * Redistributions of source code must retain the above copyright
 9    * notice, this list of conditions and the following disclaimer.
 10    * * Redistributions in binary form must reproduce the above copyright
 11    * notice, this list of conditions and the following disclaimer in the
 12    * documentation and/or other materials provided with the distribution.
 13    * * Neither the names of DrJava, the JavaPLT group, Rice University, nor the
 14    * names of its contributors may be used to endorse or promote products
 15    * derived from this software without specific prior written permission.
 16    *
 17    * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 18    * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 19    * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 20    * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 21    * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 22    * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 23    * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 24    * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 25    * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 26    * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 27    * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 28    *
 29    * This software is Open Source Initiative approved Open Source Software.
 30    * Open Source Initative Approved is a trademark of the Open Source Initiative.
 31    *
 32    * This file is part of DrJava. Download the current version of this project
 33    * from http://www.drjava.org/ or http://sourceforge.net/projects/drjava/
 34    *
 35    * END_COPYRIGHT_BLOCK*/
 36   
 37    package edu.rice.cs.util;
 38   
 39    import java.io.*;
 40   
 41    import java.util.Date;
 42    import java.text.SimpleDateFormat;
 43    import java.util.TimeZone;
 44   
 45    /** Runnable with extended stack trace. Catches all thrown exceptions and rethrows them
 46    * with the stack trace of the creation site of this RunnableEST appended.
 47    * This makes it possible to find out where the Runnable was created.
 48    * Needs to override the runEST() method now.
 49    */
 50    public abstract class RunnableEST implements Runnable {
 51    public final RunnableEST.Exception _creation = new RunnableEST.Exception("Exception thrown in runnable.");
 52  0 public void run() {
 53  0 try {
 54  0 runEST();
 55    }
 56    catch(Throwable t) {
 57  0 _creation.initCause(t);
 58  0 throw _creation;
 59    }
 60    }
 61    public abstract void runEST();
 62   
 63    public static class Exception extends RuntimeException {
 64  0 public Exception(String reason) {
 65  0 super(reason);
 66    }
 67   
 68  0 public String getMessage() {
 69  0 return super.getCause().getMessage();
 70    }
 71   
 72  0 public String getLocalizedMessage() {
 73  0 return super.getCause().getMessage();
 74    }
 75   
 76  0 public Throwable getCause() {
 77  0 return super.getCause();
 78    }
 79   
 80  0 public Throwable initCause(Throwable t) {
 81  0 super.initCause(t);
 82  0 StackTraceElement[] ts = t.getStackTrace();
 83  0 StackTraceElement[] cs = super.getStackTrace();
 84  0 java.util.ArrayList<StackTraceElement> list = new java.util.ArrayList<StackTraceElement>();
 85  0 for(int i = 0; i < ts.length-9; ++i) list.add(ts[i]);
 86  0 for(int i=2; i < cs.length; ++i) list.add(cs[i]);
 87  0 setStackTrace(list.toArray(new StackTraceElement[list.size()]));
 88  0 return this;
 89    }
 90   
 91  0 public String toString() {
 92  0 String s = getClass().getName() + ": " + super.getCause().getClass();
 93  0 String message = getLocalizedMessage();
 94  0 return (message != null) ? (s + ": " + message) : s;
 95    }
 96    }
 97    }