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