summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/trunk/modules')
-rw-r--r--sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java118
-rw-r--r--sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java17
-rw-r--r--sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java28
-rw-r--r--sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java30
-rw-r--r--sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java5
-rw-r--r--sca-java-2.x/trunk/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer14
6 files changed, 146 insertions, 66 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java b/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
index 86c18378b8..fdea709b9a 100644
--- a/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
+++ b/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
@@ -85,6 +85,8 @@ import org.apache.tuscany.sca.xsd.XSDFactory;
import org.apache.tuscany.sca.xsd.XSDefinition;
import org.apache.ws.commons.schema.XmlSchema;
import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.XmlSchemaComplexContent;
+import org.apache.ws.commons.schema.XmlSchemaComplexContentExtension;
import org.apache.ws.commons.schema.XmlSchemaComplexType;
import org.apache.ws.commons.schema.XmlSchemaElement;
import org.apache.ws.commons.schema.XmlSchemaException;
@@ -197,10 +199,11 @@ public class Interface2WSDLGenerator {
if (db == null) {
return null;
}
- if ("java:array".equals(db)) {
- DataType dt = (DataType)type.getLogical();
- db = dt.getDataBinding();
- }
+ // TUSCANY-3800
+ while ("java:array".equals(db)) {
+ type = (DataType)type.getLogical();
+ db = type.getDataBinding();
+ }
return helpers.get(db);
}
@@ -373,7 +376,7 @@ public class Interface2WSDLGenerator {
// call each helper in turn to populate the wsdl.types element
XmlSchemaCollection schemaCollection = new XmlSchemaCollection();
- // TUSCANY-3283 - "true" here means also generate the include the wrapper types for xsd generation using JAXB
+ // TUSCANY-3283 - "true" here means also generate the wrapper types using JAXB
Map<XMLTypeHelper, List<DataType>> dataTypes = getDataTypes(interfaze, true, helpers);
for (Map.Entry<XMLTypeHelper, List<DataType>> en: dataTypes.entrySet()) {
XMLTypeHelper helper = en.getKey();
@@ -387,7 +390,9 @@ public class Interface2WSDLGenerator {
mergeNoNamespaceSchema(namespaceURI, xsDefinitions);
for (XSDefinition xsDef: xsDefinitions) {
- addSchemaExtension(xsDef, schemaCollection, wsdlDefinition, definition);
+ //addSchemaExtension(xsDef, schemaCollection, wsdlDefinition, definition);
+ loadXSD(schemaCollection, xsDef);
+ wsdlDefinition.getXmlSchemas().add(xsDef);
}
}
@@ -397,10 +402,17 @@ public class Interface2WSDLGenerator {
wrappers.remove(wrapperName);
}
}
+
+ // below we might generate wrapper schema into a DOM. If the schema are in a namespace
+ // that is already been loaded then we need to throw away the schema collection and reload
+ // it because you can't load a DOM into a schema collection if the schema for the namespace
+ // has already been loaded
+ boolean reloadSchema = false;
// generate schema elements for wrappers that aren't defined in the schemas
// TUSCANY-3283 - as we're generating wrappers with JAXB it won't
- // go through here for all wrappers???
+ // go through here for all wrappers. It will just have to do there ones
+ // where there is no JAXB mapping for the child types, e.g. SDO DataObject
if (wrappers.size() > 0) {
int i = 0;
int index = 0;
@@ -415,24 +427,25 @@ public class Interface2WSDLGenerator {
schemaDoc = xsDef.getDocument();
schema = schemaDoc.getDocumentElement();
} else {
- // TUSCANY-3283 - if we have to generate a new check to see if the
+ // TUSCANY-3283 - if we have to generate a new schema check to see if the
// WSDL doc already has a schema in this namespace
-// xsDef = wsdlDefinition.getSchema(targetNS);
-// if (xsDef != null) {
-// schemaDoc = xsDef.getDocument();
-// schema = schemaDoc.getDocumentElement();
-// wrapperXSDs.put(targetNS, xsDef);
-// Map<String, String> prefixMap = prefixMaps.get(schema);
-// if (prefixMap == null){
-// prefixMap = new HashMap<String, String>();
-// prefixMaps.put(schema, prefixMap);
-// String [] prefixes = xsDef.getSchema().getNamespaceContext().getDeclaredPrefixes();
-// for (int j = 0; j < prefixes.length; j++){
-// prefixMap.put(xsDef.getSchema().getNamespaceContext().getNamespaceURI(prefixes[j]),
-// prefixes[j]);
-// }
-// }
-// } else {
+ xsDef = wsdlDefinition.getSchema(targetNS);
+ if (xsDef != null) {
+ schemaDoc = xsDef.getDocument();
+ schema = schemaDoc.getDocumentElement();
+ //wrapperXSDs.put(targetNS, xsDef);
+ Map<String, String> prefixMap = prefixMaps.get(schema);
+ if (prefixMap == null){
+ prefixMap = new HashMap<String, String>();
+ prefixMaps.put(schema, prefixMap);
+ String [] prefixes = xsDef.getSchema().getNamespaceContext().getDeclaredPrefixes();
+ for (int j = 0; j < prefixes.length; j++){
+ prefixMap.put(xsDef.getSchema().getNamespaceContext().getNamespaceURI(prefixes[j]),
+ prefixes[j]);
+ }
+ }
+ reloadSchema = true;
+ } else {
schemaDoc = createDocument();
schema = schemaDoc.createElementNS(SCHEMA_NS, "xs:schema");
// The elementFormDefault should be set to unqualified, see TUSCANY-2388
@@ -441,8 +454,9 @@ public class Interface2WSDLGenerator {
schema.setAttribute("targetNamespace", targetNS);
schema.setAttributeNS(XMLNS_NS, "xmlns:xs", SCHEMA_NS);
schemaDoc.appendChild(schema);
- Schema schemaExt = createSchemaExt(definition);
- schemaExt.setElement(schema);
+ // TUSCANY-3283 - the extension is created at the bottom
+ //Schema schemaExt = createSchemaExt(definition);
+ //schemaExt.setElement(schema);
prefixMaps.put(schema, new HashMap<String, String>());
xsDef = xsdFactory.createXSDefinition();
xsDef.setUnresolved(true);
@@ -452,7 +466,8 @@ public class Interface2WSDLGenerator {
xsDef.setLocation(URI.create("xsd_" + index + ".xsd"));
index++;
wrapperXSDs.put(targetNS, xsDef);
-// }
+ wsdlDefinition.getXmlSchemas().add(xsDef);
+ }
}
Element wrapper = schemaDoc.createElementNS(SCHEMA_NS, "xs:element");
schema.appendChild(wrapper);
@@ -523,13 +538,19 @@ public class Interface2WSDLGenerator {
}
}
}
-
- // resolve XSDefinitions containing generated wrappers
- for (XSDefinition xsDef: wrapperXSDs.values()) {
- loadXSD(schemaCollection, xsDef);
- wsdlDefinition.getXmlSchemas().add(xsDef);
+ }
+
+ if (reloadSchema){
+ schemaCollection = new XmlSchemaCollection();
+ for (XSDefinition xsDef: wsdlDefinition.getXmlSchemas()){
+ xsDef.setSchema(null);
+ xsDef.setSchemaCollection(null);
}
}
+
+ for (XSDefinition xsDef: wsdlDefinition.getXmlSchemas()){
+ addSchemaExtension(xsDef, schemaCollection, wsdlDefinition, definition);
+ }
return definition;
}
@@ -618,6 +639,7 @@ public class Interface2WSDLGenerator {
// copy all the FROM items to the TO schema
XmlSchemaObjectCollection fromItems = fromSchema.getItems();
XmlSchemaObjectCollection toItems = toSchema.getItems();
+ List<XmlSchemaObject> movedItems = new ArrayList<XmlSchemaObject>();
Iterator<XmlSchemaObject> iter = fromItems.getIterator();
while(iter.hasNext()){
@@ -628,16 +650,20 @@ public class Interface2WSDLGenerator {
// do nothing
} else {
toItems.add(obj);
- // correct any references to the item just moved
- fixUpMovedTypeReferences(fromNamespace, toNamespace, obj, resultSchema);
+ movedItems.add(obj);
}
}
+ // check that all types in the TO namespace are now referred to correctly across the schema
+ for(XmlSchemaObject obj : movedItems){
+ fixUpMovedTypeReferences(fromNamespace, toNamespace, obj, resultSchema);
+ }
+
return resultSchema;
}
// TUSCANY-3283 - fix up any references to types moved to the default namespace schema
- public void fixUpMovedTypeReferences(String fromNamespace, String toNamespace, XmlSchemaObject fixUpObj, List<org.apache.ws.commons.schema.XmlSchema> relatedSchema){
+ public void fixUpMovedTypeReferences(String fromNamespace, String toNamespace, XmlSchemaObject fixUpObj, List<XmlSchema> relatedSchema){
if (!(fixUpObj instanceof XmlSchemaComplexType)){
return;
@@ -648,11 +674,7 @@ public class Interface2WSDLGenerator {
for (int i = 0; i < schema.getItems().getCount(); i++){
XmlSchemaObject obj = schema.getItems().getItem(i);
- // if this is not the TO schema then fix up all references
- // to items moved to the TO schema
- if(!schema.getTargetNamespace().equals(toNamespace)){
- processXMLSchemaObject(toNamespace, obj, fixUpObj);
- }
+ processXMLSchemaObject(toNamespace, obj, fixUpObj);
// remove FROM imports
if (obj instanceof XmlSchemaImport &&
@@ -671,6 +693,9 @@ public class Interface2WSDLGenerator {
public void processXMLSchemaObject(String toNamespace, XmlSchemaObject obj, XmlSchemaObject fixUpObj){
if (obj instanceof XmlSchemaComplexType){
processXMLSchemaObject(toNamespace, ((XmlSchemaComplexType)obj).getParticle(), fixUpObj);
+ processXMLSchemaObject(toNamespace, ((XmlSchemaComplexType)obj).getContentModel(), fixUpObj);
+ } else if (obj instanceof XmlSchemaComplexContent){
+ processXMLSchemaObject(toNamespace, ((XmlSchemaComplexContent)obj).getContent(), fixUpObj);
} else if (obj instanceof XmlSchemaElement){
XmlSchemaElement element = (XmlSchemaElement)obj;
if(element.getSchemaType() == fixUpObj){
@@ -685,6 +710,11 @@ public class Interface2WSDLGenerator {
while(iter.hasNext()){
processXMLSchemaObject(toNamespace, iter.next(), fixUpObj);
}
+ } else if (obj instanceof XmlSchemaComplexContentExtension){
+ XmlSchemaComplexContentExtension extension = (XmlSchemaComplexContentExtension)obj;
+ QName name = extension.getBaseTypeName();
+ QName newName = new QName(toNamespace, name.getLocalPart());
+ extension.setBaseTypeName(newName);
}
// TODO - what other structure items will be generated by JAXB?
}
@@ -765,7 +795,7 @@ public class Interface2WSDLGenerator {
}
}
loadXSD(schemaCollection, xsDef);
- wsdlDefinition.getXmlSchemas().add(xsDef);
+ //wsdlDefinition.getXmlSchemas().add(xsDef);
Element schema = document.getDocumentElement();
Schema schemaExt = createSchemaExt(definition);
schemaExt.setDocumentBaseURI(document.getDocumentURI());
@@ -1062,6 +1092,12 @@ public class Interface2WSDLGenerator {
element.setMany(javaType.isArray());
}
+ // TUSCANY-3298: Check the "many" flag set by databinding introspection
+ Object logical = dataType.getLogical();
+ if (logical instanceof XMLType && ((XMLType)logical).isMany()) {
+ element.setMany(true);
+ }
+
element.setNillable(!javaType.isPrimitive());
return element;
}
diff --git a/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java b/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java
index 3fb405064b..dfb6827762 100644
--- a/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java
+++ b/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java
@@ -113,13 +113,28 @@ public class Input2InputTransformer extends BaseTransformer<Object[], Object[]>
for (int i = 0; i < list1.size(); i++) {
String n1 = list1.get(i).getQName().getLocalPart();
String n2 = list2.get(i).getQName().getLocalPart();
- if (!n1.equals(n2)) {
+ // TUSCANY-3298: In the following situation:
+ // 1. The child is a java.util.Map type
+ // 2. The child's name is a Java keyword (e.g., return)
+ // 3. Tuscany is using a generated JAXB wrapper class for WSDL generation
+ // the Java to WSDL generation process results in the WSDL element name
+ // having a leading underscore added to the actual element name. This is
+ // because of a known JAXB issue that prevents the @XmlElement annotation
+ // being used on a java.util.Map type property field in the wrapper bean
+ // (see https://jaxb.dev.java.net/issues/show_bug.cgi?id=268).
+ // To prevent the compatibility match from failing in this situation,
+ // we strip any leading underscore before doing the comparison.
+ if (!stripLeadingUnderscore(n1).equals(stripLeadingUnderscore(n2))) {
return false;
}
}
return true;
}
+ private static String stripLeadingUnderscore(String name) {
+ return name.startsWith("_") ? name.substring(1) : name;
+ }
+
@SuppressWarnings("unchecked")
public Object[] transform(Object[] source, TransformationContext context) {
// Check if the source operation is wrapped
diff --git a/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java b/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java
index f59666127d..b12d75e513 100644
--- a/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java
+++ b/sca-java-2.x/trunk/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java
@@ -139,23 +139,27 @@ public class Output2OutputTransformer extends BaseTransformer<Object, Object> im
String n1 = list1.get(i).getQName().getLocalPart();
String n2 = list2.get(i).getQName().getLocalPart();
- // TUSCANY-3283 - strip off any leading "_" characters for this comparison.
- // Now we generate wrappers with JAXB it names the response
- // wrapper's child as "_return"
- if (n1.startsWith("_")){
- n1 = n1.substring(1);
- }
-
- if (n2.startsWith("_")){
- n2 = n2.substring(1);
- }
-
- if (!n1.equals(n2)) {
+ // TUSCANY-3298: In the following situation:
+ // 1. The child is a java.util.Map type
+ // 2. The child's name is a Java keyword (e.g., return)
+ // 3. Tuscany is using a generated JAXB wrapper class for WSDL generation
+ // the Java to WSDL generation process results in the WSDL element name
+ // having a leading underscore added to the actual element name. This is
+ // because of a known JAXB issue that prevents the @XmlElement annotation
+ // being used on a java.util.Map type property field in the wrapper bean
+ // (see https://jaxb.dev.java.net/issues/show_bug.cgi?id=268).
+ // To prevent the compatibility match from failing in this situation,
+ // we strip any leading underscore before doing the comparison.
+ if (!stripLeadingUnderscore(n1).equals(stripLeadingUnderscore(n2))) {
return false;
}
}
return true;
}
+
+ private static String stripLeadingUnderscore(String name) {
+ return name.startsWith("_") ? name.substring(1) : name;
+ }
@SuppressWarnings("unchecked")
public Object transform(Object response, TransformationContext context) {
diff --git a/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java b/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
index 0003e7d46f..ef46a2b3c7 100644
--- a/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
+++ b/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
@@ -19,8 +19,10 @@
package org.apache.tuscany.sca.databinding.sdo;
+import java.lang.reflect.ParameterizedType;
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.util.Collection;
import javax.xml.namespace.QName;
@@ -62,7 +64,7 @@ public class SDODataBinding extends BaseDataBinding {
@Override
public boolean introspect(DataType dataType, final Operation operation) {
- final Class javaType = dataType.getPhysical();
+ Class javaType = dataType.getPhysical();
// Allow privileged access to read system properties. Requires PropertyPermission
// java.specification.version read in security policy.
final HelperContext context = AccessController.doPrivileged(new PrivilegedAction<HelperContext>() {
@@ -74,11 +76,33 @@ public class SDODataBinding extends BaseDataBinding {
final Type type = context.getTypeHelper().getType(javaType);
if (type == null) {
// FIXME: Need a better to test dynamic SDO
+ // TUSCANY-3298: get underlying element type for collections
+ boolean isMany = false;
+ if (Collection.class.isAssignableFrom(javaType)) {
+ java.lang.reflect.Type genericType = dataType.getGenericType();
+ if (genericType instanceof ParameterizedType) {
+ java.lang.reflect.Type actualType = ((ParameterizedType)genericType).getActualTypeArguments()[0];
+ if (actualType instanceof Class) {
+ javaType = (Class)actualType;
+ isMany = true;
+ }
+ }
+ }
if (DataObject.class.isAssignableFrom(javaType)) {
// Dynamic SDO
dataType.setDataBinding(getName());
- if (dataType.getLogical() == null) {
- dataType.setLogical(XMLType.UNKNOWN);
+ // TUSCANY-3298: use XMLType many value to indicate a collection
+ Object logical = dataType.getLogical();
+ if (logical == null) {
+ if (!isMany) {
+ dataType.setLogical(XMLType.UNKNOWN);
+ } else {
+ XMLType xmlType = new XMLType(null, null);
+ xmlType.setMany(true);
+ dataType.setLogical(xmlType);
+ }
+ } else if (logical instanceof XMLType && isMany) {
+ ((XMLType)logical).setMany(true);
}
return true;
}
diff --git a/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java b/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java
index dc1b3fc4fa..4c2075fcc4 100644
--- a/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java
+++ b/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java
@@ -32,6 +32,7 @@ import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.databinding.XMLTypeHelper;
+import org.apache.tuscany.sca.databinding.impl.SimpleTypeMapperImpl;
import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.Interface;
import org.apache.tuscany.sca.interfacedef.Operation;
@@ -91,8 +92,8 @@ public class SDOTypeHelper implements XMLTypeHelper {
xmlType = ((XMLType)logical).getTypeName();
}
if (xmlType == null) {
- xmlType =
- new QName(JavaXMLMapper.getNamespace(javaType), Introspector.decapitalize(javaType.getSimpleName()));
+ // TUSCANY-3298: dynamic SDO or collection of dynamic SDO
+ return new TypeInfo(SimpleTypeMapperImpl.XSD_ANYTYPE, true, null);
}
return new TypeInfo(xmlType, false, null);
}
diff --git a/sca-java-2.x/trunk/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer b/sca-java-2.x/trunk/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
index b1916fd32a..a172eef34b 100644
--- a/sca-java-2.x/trunk/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
+++ b/sca-java-2.x/trunk/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
@@ -17,11 +17,11 @@
# Implementation classes for the transformers
org.apache.tuscany.sca.databinding.sdo.DataObject2String;source=commonj.sdo.DataObject,target=java.lang.String,weight=510
-org.apache.tuscany.sca.databinding.sdo.DataObject2XMLStreamReader;source=commonj.sdo.DataObject,target=javax.xml.stream.XMLStreamReader,weight=490
-org.apache.tuscany.sca.databinding.sdo.XMLDocument2String;source=commonj.sdo.helper.XMLDocument,target=java.lang.String,weight=510
+#org.apache.tuscany.sca.databinding.sdo.DataObject2XMLStreamReader;source=commonj.sdo.DataObject,target=javax.xml.stream.XMLStreamReader,weight=490
+#org.apache.tuscany.sca.databinding.sdo.XMLDocument2String;source=commonj.sdo.helper.XMLDocument,target=java.lang.String,weight=510
org.apache.tuscany.sca.databinding.sdo.String2DataObject;source=java.lang.String,target=commonj.sdo.DataObject,weight=500
-org.apache.tuscany.sca.databinding.sdo.XMLDocument2XMLStreamReader;source=commonj.sdo.helper.XMLDocument,target=javax.xml.stream.XMLStreamReader,weight=490
-org.apache.tuscany.sca.databinding.sdo.XMLStreamReader2DataObject;source=javax.xml.stream.XMLStreamReader,target=commonj.sdo.DataObject,weight=490
-org.apache.tuscany.sca.databinding.sdo.XMLStreamReader2XMLDocument;source=javax.xml.stream.XMLStreamReader,target=commonj.sdo.helper.XMLDocument,weight=490
-org.apache.tuscany.sca.databinding.sdo.DataObject2Node;source=commonj.sdo.DataObject,target=org.w3c.dom.Node,weight=500
-org.apache.tuscany.sca.databinding.sdo.Node2DataObject;source=org.w3c.dom.Node,target=commonj.sdo.DataObject,weight=500
+#org.apache.tuscany.sca.databinding.sdo.XMLDocument2XMLStreamReader;source=commonj.sdo.helper.XMLDocument,target=javax.xml.stream.XMLStreamReader,weight=490
+#org.apache.tuscany.sca.databinding.sdo.XMLStreamReader2DataObject;source=javax.xml.stream.XMLStreamReader,target=commonj.sdo.DataObject,weight=490
+#org.apache.tuscany.sca.databinding.sdo.XMLStreamReader2XMLDocument;source=javax.xml.stream.XMLStreamReader,target=commonj.sdo.helper.XMLDocument,weight=490
+#org.apache.tuscany.sca.databinding.sdo.DataObject2Node;source=commonj.sdo.DataObject,target=org.w3c.dom.Node,weight=500
+#org.apache.tuscany.sca.databinding.sdo.Node2DataObject;source=org.w3c.dom.Node,target=commonj.sdo.DataObject,weight=500