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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to