/* * ==================================================================== * Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://svnkit.com/license.html * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.tmatesoft.svn.core.internal.wc; import java.util.logging.Level; import org.tmatesoft.svn.core.SVNAuthenticationException; import org.tmatesoft.svn.core.SVNCancelException; import org.tmatesoft.svn.core.SVNErrorCode; import org.tmatesoft.svn.core.SVNErrorMessage; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.util.SVNDebugLog; import org.tmatesoft.svn.util.SVNLogType; /** * @version 1.3 * @author TMate Software Ltd. */ public class SVNErrorManager { public static void cancel(String message, SVNLogType logType) throws SVNCancelException { cancel(message, Level.FINE, logType); } public static void cancel(String message, Level logLevel, SVNLogType logType) throws SVNCancelException { SVNDebugLog.getDefaultLog().log(logType, message, logLevel); throw new SVNCancelException(SVNErrorMessage.create(SVNErrorCode.CANCELLED, message)); } public static void authenticationFailed(String message, Object messageObject) throws SVNAuthenticationException { authenticationFailed(message, messageObject, Level.FINE); } public static void authenticationFailed(String message, Object messageObject, Level logLevel) throws SVNAuthenticationException { SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.RA_NOT_AUTHORIZED, message, messageObject); SVNDebugLog.getDefaultLog().log(SVNLogType.NETWORK, err.getMessage(), logLevel); throw new SVNAuthenticationException(err); } public static void error(SVNErrorMessage err, SVNLogType logType) throws SVNException { error(err, Level.FINE, logType); } public static void error(SVNErrorMessage err, Level logLevel, SVNLogType logType) throws SVNException { if (err == null) { err = SVNErrorMessage.create(SVNErrorCode.UNKNOWN); } SVNDebugLog.getDefaultLog().log(logType, err.getFullMessage(), logLevel); if (err.getErrorCode() == SVNErrorCode.CANCELLED) { throw new SVNCancelException(err); } else if (err.getErrorCode().isAuthentication()) { throw new SVNAuthenticationException(err); } else { throw new SVNException(err); } } public static void error(SVNErrorMessage err, Throwable cause, SVNLogType logType) throws SVNException { error(err, cause, Level.FINE, logType); } public static void error(SVNErrorMessage err, Throwable cause, Level logLevel, SVNLogType logType) throws SVNException { if (err == null) { err = SVNErrorMessage.create(SVNErrorCode.UNKNOWN); } SVNDebugLog.getDefaultLog().log(logType, err.getMessage(), logLevel); if (cause != null) { SVNDebugLog.getDefaultLog().log(logType, cause, logLevel); } if (err.getErrorCode() == SVNErrorCode.CANCELLED) { throw new SVNCancelException(err); } else if (err.getErrorCode().isAuthentication()) { throw new SVNAuthenticationException(err); } else { throw new SVNException(err, cause); } } public static void error(SVNErrorMessage err1, SVNErrorMessage err2, SVNLogType logType) throws SVNException { error(err1, err2, Level.FINE, logType); } public static void error(SVNErrorMessage err1, SVNErrorMessage err2, Level logLevel, SVNLogType logType) throws SVNException { if (err1 == null) { error(err2, logLevel, logType); } else if (err2 == null) { error(err1, logLevel, logType); } err1.setChildErrorMessage(err2); SVNDebugLog.getDefaultLog().log(logType, err1.getMessage(), logLevel); if (err1.getErrorCode() == SVNErrorCode.CANCELLED || err2.getErrorCode() == SVNErrorCode.CANCELLED) { throw new SVNCancelException(err1); } else if (err1.getErrorCode().isAuthentication() || err2.getErrorCode().isAuthentication()) { throw new SVNAuthenticationException(err1); } throw new SVNException(err1); } public static void error(SVNErrorMessage err1, SVNErrorMessage err2, Throwable cause, SVNLogType logType) throws SVNException { error(err1, err2, cause, Level.FINE, logType); } public static void error(SVNErrorMessage err1, SVNErrorMessage err2, Throwable cause, Level logLevel, SVNLogType logType) throws SVNException { if (err1 == null) { error(err2, cause, logLevel, logType); } else if (err2 == null) { error(err1, cause, logLevel, logType); } err1.setChildErrorMessage(err2); SVNDebugLog.getDefaultLog().log(logType, err1.getMessage(), logLevel); if (err1.getErrorCode() == SVNErrorCode.CANCELLED || err2.getErrorCode() == SVNErrorCode.CANCELLED) { throw new SVNCancelException(err1, cause); } else if (err1.getErrorCode().isAuthentication() || err2.getErrorCode().isAuthentication()) { throw new SVNAuthenticationException(err1, cause); } throw new SVNException(err1, cause); } public static void assertionFailure(boolean isTrueCondition, String optionalMessage, SVNLogType logType) throws SVNException { if (!isTrueCondition) { try { throw new Exception(); } catch (Exception e) { StackTraceElement[] stackTraceElements = e.getStackTrace(); StackTraceElement callerStackElement = stackTraceElements[1]; String genericAssertionFailureReport = "Assertion failure in class ''{0}'' (file {1}) in method ''{2}'' on line {3}"; genericAssertionFailureReport = optionalMessage != null ? genericAssertionFailureReport + ": {4}" : genericAssertionFailureReport; SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.ASSERTION_FAIL, genericAssertionFailureReport, new Object[] { callerStackElement.getClassName(), callerStackElement.getFileName(), callerStackElement.getMethodName(), String.valueOf(callerStackElement.getLineNumber()), optionalMessage }); error(err, logType); } } } }