public RetryInterceptorBinding() {
super("retry-interceptor");
}
public Object parse(Element element, Parse parse, Parser parser) {
RetryInterceptor retryInterceptor = null;
String type = XmlUtil.attribute(element, "type");
if ("jta".equals(type)) {
retryInterceptor = new JtaRetryInterceptor();
} else {
retryInterceptor = new RetryInterceptor();
}
if (element.hasAttribute("retries")) {
String retriesText = element.getAttribute("retries");
try {
int retries = Integer.parseInt(retriesText);
retryInterceptor.setRetries(retries);
} catch (NumberFormatException e) {
parse.addProblem("couldn't parse retries "+retriesText, element);
}
}
if (element.hasAttribute("delay")) {
String delayText = element.getAttribute("delay");
try {
long delay = Long.parseLong(delayText);
retryInterceptor.setDelay(delay);
} catch (NumberFormatException e) {
parse.addProblem("couldn't parse delay "+delayText, element);
}
}
if (element.hasAttribute("delay-factor")) {
String delayFactorText = element.getAttribute("delay-factor");
try {
long delayFactor = Long.parseLong(delayFactorText);
retryInterceptor.setDelayFactor(delayFactor);
} catch (NumberFormatException e) {
parse.addProblem("couldn't parse delay-factor "+delayFactorText, element);
}
}