/* ResolvableException.java created 2007-09-19
*
*/
package org.signalml.exception;
import java.util.LinkedList;
import java.util.List;
import org.signalml.plugin.export.SignalMLException;
import org.springframework.context.MessageSourceResolvable;
import static org.signalml.app.util.i18n.SvarogI18n._;
@Deprecated
/** ResolvableException
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class ResolvableException extends SignalMLException implements MessageSourceResolvable {
private static final long serialVersionUID = 1L;
private final String[] codes;
private final Object[] arguments;
private final String defaultMessage;
public ResolvableException(String code) {
super(code);
this.codes = new String[] { code };
this.arguments = new Object[0];
this.defaultMessage = code;
}
public ResolvableException(String code, Object[] arguments) {
super(code);
this.codes = new String[] { code };
this.arguments = arguments;
this.defaultMessage = code;
}
public ResolvableException(String[] codes, Object[] arguments) {
super((codes.length > 0 ? codes[0] : ""));
this.codes = codes;
this.arguments = arguments;
this.defaultMessage = (codes.length > 0 ? codes[0] : "");
}
public ResolvableException(String[] codes, Object[] arguments, String defaultMessage) {
super(defaultMessage);
this.codes = codes;
this.arguments = arguments;
this.defaultMessage = defaultMessage;
}
public ResolvableException(String code, Throwable cause) {
super(cause);
this.codes = new String[] { code };
this.arguments = new Object[0];
this.defaultMessage = code;
}
public ResolvableException(Throwable cause) {
super(cause);
if (cause instanceof MessageSourceResolvable) {
MessageSourceResolvable resolvable = (MessageSourceResolvable) cause;
this.codes = resolvable.getCodes();
this.arguments = resolvable.getArguments();
this.defaultMessage = resolvable.getDefaultMessage();
} else {
String message = cause.getMessage();
List<String> codes = new LinkedList<String>();
if (message != null) {
codes.add(cause.getMessage());
}
Class<?> clazz = cause.getClass();
while (clazz != null) {
codes.add(clazz.getName());
clazz = clazz.getSuperclass();
}
codes.add(_("Exception [{0}] with message [{1}]"));
this.codes = new String[codes.size()];
codes.toArray(this.codes);
this.arguments = new String[] { cause.getClass().getName(), message != null ? message : "" };
this.defaultMessage = message != null ? message : "Exception occured";
}
}
@Override
public Object[] getArguments() {
return arguments;
}
@Override
public String[] getCodes() {
return codes;
}
@Override
public String getDefaultMessage() {
return defaultMessage;
}
}