diff --git a/pom.xml b/pom.xml
index 875fd29..e43c69d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -146,7 +146,6 @@
${maven.compiler.release}
- oracle
diff --git a/src/main/java/com/nordstrom/common/base/StackTrace.java b/src/main/java/com/nordstrom/common/base/StackTrace.java
new file mode 100644
index 0000000..f264434
--- /dev/null
+++ b/src/main/java/com/nordstrom/common/base/StackTrace.java
@@ -0,0 +1,50 @@
+package com.nordstrom.common.base;
+
+/**
+ * Throwable created purely for the purposes of reporting a stack trace.
+ *
+ * This is not an Error or an Exception and is not expected to be thrown or caught.
+ * This blog post provided the
+ * original implementation.
+ * @author Peter K Lawrey
+ */
+
+public class StackTrace extends Throwable {
+
+ private static final long serialVersionUID = -3623586250962214453L;
+
+ public StackTrace() {
+ this("stack trace");
+ }
+
+ public StackTrace(String message) {
+ this(message, null);
+ }
+
+ public StackTrace(String message, Throwable cause) {
+ super(message + " on " + Thread.currentThread().getName(), cause);
+ }
+
+ public static StackTrace forThread(Thread t) {
+ if (t == null) return null;
+
+ StackTrace st = new StackTrace(t.toString());
+ StackTraceElement[] stackTrace = t.getStackTrace();
+ int start = 0;
+
+ if (stackTrace.length > 2) {
+ if (stackTrace[0].isNativeMethod()) {
+ start++;
+ }
+ }
+
+ if (start > 0) {
+ StackTraceElement[] ste2 = new StackTraceElement[stackTrace.length - start];
+ System.arraycopy(stackTrace, start, ste2, 0, ste2.length);
+ stackTrace = ste2;
+ }
+
+ st.setStackTrace(stackTrace);
+ return st;
+ }
+}