blob: d7d1c35b5cd2e5b645636c79a6c57328437e706a [file] [log] [blame]
/*
* Copyright 2002-2004 The Apache Software Foundation.
*
* 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 org.apache.axis;
import org.apache.axis.components.logger.LogFactory;
import org.apache.axis.utils.JavaUtils;
import org.apache.commons.logging.Log;
import java.io.IOException;
/**
* ConfigurationException is thrown when an error occurs trying to
* use an EngineConfiguration.
*
* @author Glyn Normington (glyn@apache.org)
*/
public class ConfigurationException extends IOException {
/**
* The contained exception if present.
*/
private Exception containedException=null;
private String stackTrace="";
/**
* Flag wether to copy the orginal exception by default.
*/
protected static boolean copyStackByDefault= true;
/**
* The <code>Log</code> used by this class for logging all messages.
*/
protected static Log log =
LogFactory.getLog(ConfigurationException.class.getName());
/**
* Construct a ConfigurationException from a String. The string is wrapped
* in an exception, enabling a stack traceback to be obtained.
* @param message String form of the error
*/
public ConfigurationException(String message) {
super(message);
if(copyStackByDefault) {
stackTrace= JavaUtils.stackToString(this);
}
logException( this);
}
/**
* Construct a ConfigurationException from an Exception.
* @param exception original exception which was unexpected
*/
public ConfigurationException(Exception exception) {
this(exception,copyStackByDefault);
}
/**
* Stringify, including stack trace.
*
* @return a <code>String</code> view of this object
*/
public String toString() {
String stack;
if(stackTrace.length()== 0) {
stack = "";
} else {
stack="\n"+stackTrace;
}
return super.toString()+stack;
}
/**
* Construct a ConfigurationException from an Exception.
* @param exception original exception which was unexpected
* @param copyStack set to true to copy the orginal exception's stack
*/
public ConfigurationException(Exception exception, final boolean copyStack) {
super(exception.toString() + (copyStack ? "\n"
+ JavaUtils.stackToString(exception) : "" ));
containedException = exception;
if(copyStack) {
stackTrace = JavaUtils.stackToString(this);
}
// Log the exception the first time it appears.
if (!(exception instanceof ConfigurationException)) {
logException(exception);
}
}
/**
* single point for logging exceptions.
* @param exception
*/
private void logException(Exception exception) {
log.debug("Exception: ", exception);
}
/**
* Get any contained exception.
*
* @return base exception or null
* @since axis1.1
*/
public Exception getContainedException() {
return containedException;
}
}