package org.openprovenance.prov.xml;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import org.openprovenance.prov.model.DOMProcessing;
/** Adapter convert an Attribute to DOM and vice-versa.
* @author lavm
* @see javax.xml.bind.annotation.adapters.XmlAdapter
*
*/
public class AnyAdapter extends
XmlAdapter<Object, org.openprovenance.prov.model.Attribute> {
final org.openprovenance.prov.model.ProvFactory pFactory;
final DOMProcessing domProcessor;
public AnyAdapter() {
pFactory= new ProvFactory();
domProcessor=new DOMProcessing(pFactory);
vconv=new ValueConverter(pFactory);
}
public AnyAdapter(org.openprovenance.prov.model.ProvFactory pFactory) {
this.pFactory= pFactory;
domProcessor=new DOMProcessing(pFactory);
vconv=new ValueConverter(pFactory);
}
final ValueConverter vconv;
/** Unmarshals an Object (expect to be a DOM Element) into an Attribute.
* @see javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal(java.lang.Object)
*/
public org.openprovenance.prov.model.Attribute unmarshal(Object value) {
// System.out.println("AnyAdapter unmarshalling for " + value);
if (value instanceof org.w3c.dom.Element) {
org.w3c.dom.Element el = (org.w3c.dom.Element) value;
return domProcessor.unmarshallAttribute(el,pFactory,vconv);
}
/*
if (value instanceof JAXBElement) {
JAXBElement<?> je = (JAXBElement<?>) value;
return pFactory.newAttribute(je.getName(), je.getValue(), vconv);
}
*/
return null;
}
/** Marshals an Attribute to a DOM Element.
* @see javax.xml.bind.annotation.adapters.XmlAdapter#marshal(java.lang.Object)
*/
public Object marshal(org.openprovenance.prov.model.Attribute attribute) {
return DOMProcessing.marshalAttribute(attribute);
}
}