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 10:42:54 UTC

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

Author: kelvingoodson
Date: Mon Nov 27 01:42:53 2006
New Revision: 479558

URL: http://svn.apache.org/viewvc?view=rev&rev=479558
Log:
permit import of commonj.sdo models into user xsds (for validation purposes) without causing override of SDO core 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=479558&r1=479557&r2=479558
==============================================================================
--- 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 01:42:53 2006
@@ -20,12 +20,14 @@
 package org.apache.tuscany.sdo.helper;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
 import org.apache.tuscany.sdo.SDOExtendedMetaData;
 import org.apache.tuscany.sdo.model.ModelFactory;
+import org.apache.tuscany.sdo.model.impl.ModelPackageImpl;
 import org.apache.tuscany.sdo.util.SDOUtil;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EClass;
@@ -39,6 +41,7 @@
 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.XSDSimpleTypeDefinition;
 import org.eclipse.xsd.XSDTypeDefinition;
@@ -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 (ModelPackageImpl.eNS_URI.equals(xsdTypeDefinition.getTargetNamespace())) {
+      eClassifier = ModelPackageImpl.eINSTANCE.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(!ModelPackageImpl.eNS_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 (ModelPackageImpl.eNS_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