Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
Currently it is not possible to define multiple XSD files in same namespace in same helper context even if extensible namespaces set to true. The last XSD "overwrites" previous.
Here is patch for /tuscany-sdo-impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java method define().
It use copy of the original "targetNamespaceToEPackageMap" to track newly defined types instead of "touching" ecoreBuilder.
Index: src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java
===================================================================
— src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java
+++ src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java (working copy)
@@ -239,7 +239,7 @@
String targetNamespace = schema.getTargetNamespace();
EPackage ePackage = extendedMetaData.getPackage(targetNamespace);
if (extensibleNamespaces || ePackage == null || TypeHelperImpl.getBuiltInModels().contains(ePackage)) {
- Map targetNamespaceToEPackageMap = ecoreBuilder.getTargetNamespaceToEPackageMap();
+ Map targetNamespaceToEPackageMap = new HashMap(ecoreBuilder.getTargetNamespaceToEPackageMap());
targetNamespaceToEPackageMap.remove(targetNamespace);
Collection originalEPackages = new HashSet(targetNamespaceToEPackageMap.values());
==========