/*
 * Copyright 2000-2009 JetBrains s.r.o.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.intellij.testFramework;

import com.intellij.openapi.util.text.StringUtil;
import org.apache.log4j.Logger;
import org.jetbrains.annotations.NotNull;

public class LoggedErrorProcessor {
  private static final LoggedErrorProcessor DEFAULT = new LoggedErrorProcessor();

  private static LoggedErrorProcessor ourInstance = DEFAULT;

  @NotNull
  public static LoggedErrorProcessor getInstance() {
    return ourInstance;
  }

  public static void setNewInstance(@NotNull LoggedErrorProcessor newInstance) {
    ourInstance = newInstance;
  }

  public static void restoreDefaultProcessor() {
    ourInstance = DEFAULT;
  }

  public void processWarn(String message, Throwable t, @NotNull Logger logger) {
    logger.warn(message, t);
  }

  @SuppressWarnings("UseOfSystemOutOrSystemErr")
  public void processError(String message, Throwable t, String[] details, @NotNull Logger logger) {
    logger.info(message, t);

    if (details != null && details.length > 0) {
      message += "\n Details:" + StringUtil.join(details, "\n   ");
    }

    throw new RuntimeException(message, t);
  }
}

@@ -635,58 +635,8 @@
 k;%0A%0A
-import com.intellij.openapi.util.text.StringUtil;%0A
 impo
@@ -1480,120 +1480,268 @@
     
-if (details != null && details.length %3E 0) %7B%0A      message += %22%5Cn Details:%22 + StringUtil.join(details, %22%5Cn   %22);
+System.err.println(%22ERROR: %22 + message);%0A    if (t != null) t.printStackTrace(System.err);%0A    if (details != null && details.length %3E 0) %7B%0A      System.out.println(%22details: %22);%0A      for (String detail : details) %7B%0A        System.out.println(detail);%0A      %7D
 %0A   
@@ -1762,32 +1762,30 @@
 new 
-RuntimeException
+AssertionError
 (message
 , t)
@@ -1776,24 +1776,21 @@
 rror(message
-, t
 );%0A  %7D%0A%7D%0A

revert "less stderr on test failures" until we are on jdk 1.7