BatchFailures.java

  1. package org.jbehave.core.failures;

  2. import java.io.PrintWriter;
  3. import java.io.StringWriter;
  4. import java.util.concurrent.ConcurrentHashMap;

  5. @SuppressWarnings("serial")
  6. public class BatchFailures extends ConcurrentHashMap<String, Throwable> {

  7.     private final boolean verbose;

  8.     public BatchFailures() {
  9.         this(false);
  10.     }

  11.     public BatchFailures(boolean verbose) {
  12.         this.verbose = verbose;
  13.     }

  14.     @Override
  15.     public String toString() {
  16.         StringBuilder sb = new StringBuilder();
  17.         for (String name : keySet()) {
  18.             Throwable failure = get(name);
  19.             sb.append("\n");
  20.             sb.append(name);
  21.             sb.append(": ");
  22.             sb.append(verbose ? stackTraceOf(failure) : failure);
  23.         }
  24.         return sb.toString();
  25.     }

  26.     private String stackTraceOf(Throwable failure) {
  27.         StringWriter writer = new StringWriter();
  28.         failure.printStackTrace(new PrintWriter(writer));
  29.         return writer.toString();
  30.     }

  31. }