*/
public class DataObject2OMElement extends BaseTransformer<DataObject, OMElement> implements
PullTransformer<DataObject, OMElement> {
public OMElement transform(DataObject source, TransformationContext context) {
HelperContext helperContext = SDOContextHelper.getHelperContext(context);
OMFactory factory = OMAbstractFactory.getOMFactory();
OMNamespace namespace = null;
String localName = ROOT_ELEMENT.getLocalPart();
if (context != null) {
DataType dataType = context.getTargetDataType();
Object logical = dataType == null ? null : dataType.getLogical();
if (logical instanceof XMLType) {
XMLType xmlType = (XMLType)logical;
if (xmlType.isElement()) {
namespace = factory.createOMNamespace(xmlType.getElementName().getNamespaceURI(), xmlType
.getElementName().getPrefix());
localName = xmlType.getElementName().getLocalPart();
}
}
}
if (namespace == null) {
namespace = factory.createOMNamespace(ROOT_ELEMENT.getNamespaceURI(), ROOT_ELEMENT.getPrefix());
}
XMLDocument document = helperContext.getXMLHelper().createDocument(source,
namespace.getNamespaceURI(),
localName);
SDODataSource dataSource = new SDODataSource(document, helperContext);
OMElement element = factory.createOMElement(dataSource, localName, namespace);
return element;