
org.tango.utils.DevFailedUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of JTangoCommons Show documentation
Show all versions of JTangoCommons Show documentation
Common classes for tango java API
package org.tango.utils;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.esrf.Tango.DevError;
import fr.esrf.Tango.DevFailed;
import fr.esrf.Tango.ErrSeverity;
public final class DevFailedUtils {
private static final String TANGO_ERROR = "TANGO_ERROR";
private static final Logger LOGGER = LoggerFactory.getLogger(DevFailedUtils.class);
private DevFailedUtils() {
}
public static DevFailed newDevFailed(final String reason, final String desc) {
LOGGER.error("{}, {}", reason, desc);
final DevFailed ex = new DevFailed(reason, buildDevError(reason, desc, 3));
LOGGER.error("", ex);
return ex;
}
public static DevFailed newDevFailed(final String msg) {
LOGGER.error(msg);
final DevFailed ex = new DevFailed(msg, buildDevError(TANGO_ERROR, msg, 3));
LOGGER.error("", ex);
return ex;
}
public static void throwDevFailed(final String msg) throws DevFailed {
final DevFailed e = new DevFailed(msg, buildDevError(TANGO_ERROR, msg, 3));
LOGGER.error(msg);
LOGGER.error("", e);
throw e;
}
public static void throwDevFailed(final String reason, final String desc) throws DevFailed {
final DevFailed e = new DevFailed(reason, buildDevError(reason, desc, 3));
LOGGER.error("{}, {}", reason, desc);
LOGGER.error("", e);
throw e;
}
public static DevError[] buildDevError(final String reason, final String desc, final int stackLevel) {
final DevError[] err = new DevError[1];
err[0] = new DevError();
err[0].desc = desc;
err[0].severity = ErrSeverity.ERR;
err[0].reason = reason;
final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
// for (final StackTraceElement element : stackTrace) {
// System.err.println(element.toString());
// }
err[0].origin = stackTrace[stackLevel].toString();
return err;
}
public static DevFailed newDevFailed(final Throwable origin) throws DevFailed {
final DevError[] err = new DevError[1];
err[0] = new DevError();
err[0].desc = origin.getClass().getCanonicalName();
err[0].severity = ErrSeverity.PANIC;
err[0].reason = "NA";
final StringWriter sw = new StringWriter();
origin.printStackTrace(new PrintWriter(sw));
err[0].origin = sw.toString();
final DevFailed e = new DevFailed(origin.getLocalizedMessage(), err);
// DevFailedUtils.printDevFailed(e);
return e;
}
public static void throwDevFailed(final Throwable origin) throws DevFailed {
final DevFailed e = newDevFailed(origin);
// LOGGER.error("exception origin {}, at {}", origin.getClass());
LOGGER.error("throwing DevFailed from ", origin);
throw e;
}
/**
* Convert a DevFailed to a String
*
* @param e
* @return
*/
public static String toString(final DevFailed e) {
final StringBuilder buffer = new StringBuilder();
buffer.append("exception message is: ").append(e.getLocalizedMessage());
if (e.errors != null) {
for (int i = 0; i < e.errors.length; i++) {
buffer.append("\nError Level ").append(i).append(":\n");
buffer.append("\t - desc: ").append(e.errors[i].desc).append("\n");
buffer.append("\t - origin: ").append(e.errors[i].origin).append("\n");
buffer.append("\t - reason: ").append(e.errors[i].reason).append("\n");
String sev = "";
if (e.errors[i].severity.value() == ErrSeverity.ERR.value()) {
sev = "ERROR";
} else if (e.errors[i].severity.value() == ErrSeverity.PANIC.value()) {
sev = "PANIC";
} else if (e.errors[i].severity.value() == ErrSeverity.WARN.value()) {
sev = "WARN";
}
buffer.append("\t - severity: ").append(sev).append("\n");
}
} else {
buffer.append("EMPTY DevFailed");
}
return buffer.toString();
}
/**
* Convert a DevFailed to a String
*
* @param e
* @return
*/
public static void logDevFailed(final DevFailed e, final Logger logger) {
if (e.errors != null) {
for (int i = 0; i < e.errors.length; i++) {
logger.error("Error Level {} :", i);
logger.error("\t - desc: {}", e.errors[i].desc);
logger.error("\t - origin: {}", e.errors[i].origin);
logger.error("\t - reason: {}", e.errors[i].reason);
String sev = "";
if (e.errors[i].severity.value() == ErrSeverity.ERR.value()) {
sev = "ERROR";
} else if (e.errors[i].severity.value() == ErrSeverity.PANIC.value()) {
sev = "PANIC";
} else if (e.errors[i].severity.value() == ErrSeverity.WARN.value()) {
sev = "WARN";
}
logger.error("\t - severity: {}", sev);
}
} else {
logger.error("EMPTY DevFailed");
}
}
public static void printDevFailed(final DevFailed e) {
System.err.println(toString(e));
}
public static final String TANGO_BUILD_FAILED = "TANGO_BUILD_FAILED";
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy