You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ke...@apache.org on 2006/11/27 16:31:37 UTC

svn commit: r479662 - /incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java

Author: kelvingoodson
Date: Mon Nov 27 07:31:36 2006
New Revision: 479662

URL: http://svn.apache.org/viewvc?view=rev&rev=479662
Log:
permit user xsd file import of commonj.sdo models without overriding built in runtime model 

Modified:
    incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java

Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java?view=diff&rev=479662&r1=479661&r2=479662
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java Mon Nov 27 07:31:36 2006
@@ -26,6 +26,7 @@
 
 import org.apache.tuscany.sdo.SDOExtendedMetaData;
 import org.apache.tuscany.sdo.model.ModelFactory;
+import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl;
 import org.apache.tuscany.sdo.util.SDOUtil;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EClass;
@@ -39,7 +40,9 @@
 import org.eclipse.xsd.XSDComponent;
 import org.eclipse.xsd.XSDConcreteComponent;
 import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDImport;
 import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSchema;
 import org.eclipse.xsd.XSDSimpleTypeDefinition;
 import org.eclipse.xsd.XSDTypeDefinition;
 import org.eclipse.xsd.ecore.XSDEcoreBuilder;
@@ -55,6 +58,7 @@
  */
 public class SDOXSDEcoreBuilder extends XSDEcoreBuilder
 {
+  
   public SDOXSDEcoreBuilder(ExtendedMetaData extendedMetaData)
   {
     super(extendedMetaData);
@@ -77,6 +81,8 @@
         getBuiltInEClassifier(
           xsdTypeDefinition.getURI(), 
           xsdTypeDefinition.getName());
+    } else if (ModelFactoryImpl.NAMESPACE_URI.equals(xsdTypeDefinition.getTargetNamespace())) {
+      eClassifier = ((ModelFactoryImpl)ModelFactory.INSTANCE).getEClassifier(xsdTypeDefinition.getName());
     } else {
       eClassifier = super.getEClassifier(xsdTypeDefinition);
     }
@@ -455,4 +461,26 @@
     return qualifiedPackageName.toString().toLowerCase(); //make sure it's lower case .. we can't work with Axis if not.
   }
 
+
+  public void generate(XSDSchema xsdSchema) {
+    // permits schemas to be valid by having an import of sdoModel.xsd without
+    // that import causing masking of the singleton instance of the generated model
+    if(!ModelFactoryImpl.NAMESPACE_URI.equals(xsdSchema.getTargetNamespace())) {
+      List contents = xsdSchema.getContents();
+      List commonjImports = new ArrayList();
+      for (Iterator i = contents.iterator(); i.hasNext(); )
+      {
+        Object content = i.next();
+        if (content instanceof XSDImport)
+        {
+          XSDImport xsdImport = (XSDImport)content;
+          if (ModelFactoryImpl.NAMESPACE_URI.equals(xsdImport.getNamespace())) {
+            commonjImports.add(xsdImport);
+          }
+        }
+      }
+      contents.removeAll(commonjImports);
+      super.generate(xsdSchema);
+    }
+  }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org