package org.jbpm.pvm.internal.wire.binding;
|
|
import org.jbpm.pvm.internal.util.XmlUtil;
|
import org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor;
|
import org.jbpm.pvm.internal.xml.Parse;
|
import org.jbpm.pvm.internal.xml.Parser;
|
import org.w3c.dom.Element;
|
|
public abstract class BasicTypeBinding extends WireDescriptorBinding {
|
|
public BasicTypeBinding(String tagName) {
|
super(tagName);
|
}
|
|
public Object parse(Element element, Parse parse, Parser parser) {
|
AbstractDescriptor descriptor = null;
|
|
|
if (element.hasAttribute("value")) {
|
String value = element.getAttribute("value");
|
descriptor = createDescriptor(value, element, parse);
|
} else {
|
parse.addProblem("attribute 'value' is required in element '"+XmlUtil.getTagLocalName(element)+"': "+XmlUtil.toString(element), element);
|
}
|
|
return descriptor;
|
}
|
|
public String createValueExceptionMessage(String message, Element element) {
|
return XmlUtil.getTagLocalName(element)+" has invalid formatted value attribute: "+(message!=null ? message+": " : "")+XmlUtil.toString(element);
|
}
|
|
/** subclasses can be sure that the value is not null.
|
* subclasses should use {@link #createValueExceptionMessage(String, Element) for
|
* reporting format problems in the parse. */
|
protected abstract AbstractDescriptor createDescriptor(String value, Element element, Parse parse);
|
}
|