package org.jbpm.wire.binding;
import org.jbpm.wire.descriptor.AbstractDescriptor;
import org.jbpm.xml.Binding;
import org.jbpm.xml.Parse;
import org.jbpm.xml.Parser;
import org.jbpm.xml.XmlUtil;
import org.w3c.dom.Element;
public abstract class BasicTypeBinding implements Binding {
public Object parse(Element element, Parse parse, Parser parser) {
AbstractDescriptor descriptor = null;
if (element.hasAttribute("value")) {
try {
String value = element.getAttribute("value");
descriptor = createDescriptor(value);
} catch (IllegalArgumentException e) {
parse.addProblem(XmlUtil.getTagName(element)+" has invalid formatted value attribute: "+(e.getMessage()!=null ? e.getMessage()+": " : "")+XmlUtil.toString(element), e);
}
} else {
parse.addProblem("attribute 'value' is required in element '"+XmlUtil.getTagName(element)+"': "+XmlUtil.toString(element));
}
return descriptor;
}
protected abstract AbstractDescriptor createDescriptor(String value);
}