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 2007/07/20 23:02:37 UTC

svn commit: r558140 - in /incubator/tuscany/java/sdo/tools/src: main/java/org/apache/tuscany/sdo/generate/XSD2JavaGenerator.java test/java/org/apache/tuscany/sdo/test/AllTests.java test/java/org/apache/tuscany/sdo/test/GeneratedPackagesTestCase.java

Author: kelvingoodson
Date: Fri Jul 20 14:02:35 2007
New Revision: 558140

URL: http://svn.apache.org/viewvc?view=rev&rev=558140
Log:
fix for TUSCANY-1428

Added:
    incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/GeneratedPackagesTestCase.java
Modified:
    incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/XSD2JavaGenerator.java
    incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/AllTests.java

Modified: incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/XSD2JavaGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/XSD2JavaGenerator.java?view=diff&rev=558140&r1=558139&r2=558140
==============================================================================
--- incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/XSD2JavaGenerator.java (original)
+++ incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/XSD2JavaGenerator.java Fri Jul 20 14:02:35 2007
@@ -34,6 +34,7 @@
 import org.apache.tuscany.sdo.helper.XSDHelperImpl;
 import org.apache.tuscany.sdo.util.DataObjectUtil;
 import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
 import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
 import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
 import org.eclipse.emf.common.util.URI;
@@ -167,7 +168,6 @@
   {
     GenModel genModel = null;  
       
-    DataObjectUtil.initRuntime();
     HelperContext hc = new HelperContextImpl(extendedMetaData, false);
     XSDHelper xsdHelper = hc.getXSDHelper();
     ((XSDHelperImpl)xsdHelper).setRedefineBuiltIn(regenerateBuiltIn);
@@ -384,36 +384,34 @@
       for (Iterator iterClass = genClasses.iterator(); iterClass.hasNext();)
       {
         GenClass genClass = (GenClass)iterClass.next();
-        if( !("DocumentRoot".equals(genClass.getInterfaceName())))
-        {
           String name  = extendedMetaData.getName(genClass.getEcoreClass());
           String className = genPackage.getInterfacePackageName() + "." + genClass.getInterfaceName();
           classes.add( new PackageClassInfo( name, className, false, null ) );
-          EClass documentRoot = extendedMetaData.getDocumentRoot(ePackage);
-          if( documentRoot != null )
+        List features = genClass.getGenFeatures();
+        for (Iterator iterFeatures = features.iterator(); iterFeatures.hasNext();)
           {
-            List rootElements = extendedMetaData.getElements(documentRoot);
-            for (Iterator iterRoot = rootElements.iterator(); iterRoot.hasNext();)
-            {
-              EStructuralFeature element = (EStructuralFeature)iterRoot.next();
+          GenFeature feature = (GenFeature)iterFeatures.next();
+          EStructuralFeature element = feature.getEcoreFeature();
               EClassifier elementType = element.getEType();
               if( elementType instanceof EClass )
               {
                 // complex type
                 EClass eClass = (EClass)elementType;
                 GenClass genEClass = (GenClass)eclassGenClassMap.get(elementType);
+            if( genEClass != null )
+            {    
                 name = extendedMetaData.getName(element);
                 String interfaceName = genEClass.getGenPackage().getInterfacePackageName()
                        + '.' + genEClass.getInterfaceName();
                 boolean anonymous = extendedMetaData.isAnonymous(eClass);
                             
-                // Build list of property class names
+              // Build list of property names
                 List propertyClassNames = new ArrayList();
                 List properties = eClass.getEStructuralFeatures(); 
                 for (Iterator iterProperties = properties.iterator(); iterProperties.hasNext();)
                 {
-                  EStructuralFeature feature = (EStructuralFeature)iterProperties.next();
-                  EClassifier propertyType = feature.getEType();
+                EStructuralFeature property = (EStructuralFeature)iterProperties.next();
+                EClassifier propertyType = property.getEType();
                   if (propertyType instanceof EClass) 
                   {
                     GenClass propertyGenClass = (GenClass)eclassGenClassMap.get(propertyType);
@@ -432,6 +430,7 @@
                 }
                 classes.add( new PackageClassInfo( name, interfaceName, anonymous, propertyClassNames ) );
               }
+          }    
               else
               {
                 // simple type
@@ -442,8 +441,6 @@
             }    
           }
         }
-      }   
-    }
       
     public class PackageClassInfo
     {

Modified: incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/AllTests.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/AllTests.java?view=diff&rev=558140&r1=558139&r2=558140
==============================================================================
--- incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/AllTests.java (original)
+++ incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/AllTests.java Fri Jul 20 14:02:35 2007
@@ -35,6 +35,7 @@
         suite.addTestSuite(InheritanceTestCase.class);
         suite.addTestSuite(OpenContentTestCase.class);
         suite.addTestSuite(SimpleStaticTestCase.class);
+        suite.addTestSuite(GeneratedPackagesTestCase.class);
 
         return suite;
     }

Added: incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/GeneratedPackagesTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/GeneratedPackagesTestCase.java?view=auto&rev=558140
==============================================================================
--- incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/GeneratedPackagesTestCase.java (added)
+++ incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/GeneratedPackagesTestCase.java Fri Jul 20 14:02:35 2007
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sdo.test;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.tuscany.sdo.generate.XSD2JavaGenerator;
+
+import junit.framework.TestCase;
+
+
+public class GeneratedPackagesTestCase extends TestCase
+{
+    static String expectedNamespace = "http://www.example.com/sequences";
+    
+    public void testPackageValidity()
+    {
+        XSD2JavaGenerator codeGen = new XSD2JavaGenerator();
+        String [] genArgs = { "-schemaNamespace", "all", "-noGenerate", "src/test/resources/sequences.xsd" };
+        codeGen.generateFromXMLSchema( genArgs );
+        List packages = codeGen.getGeneratedPackageInfo();
+        
+        for (Iterator iter = packages.iterator(); iter.hasNext();)
+        {
+            XSD2JavaGenerator.GeneratedPackage packageInfo = (XSD2JavaGenerator.GeneratedPackage)iter.next();
+            assertTrue(expectedNamespace.equals(packageInfo.getNamespace()));
+            
+            String name;
+            boolean validatedDocRoot = false;
+            boolean validatedMixedQuote = false;
+            boolean validatedSymbol = false;
+            for (Iterator iterClass = packageInfo.getClasses().iterator(); iterClass.hasNext();)
+            {
+                XSD2JavaGenerator.GeneratedPackage.PackageClassInfo classInfo = (XSD2JavaGenerator.GeneratedPackage.PackageClassInfo)iterClass.next();
+                name = classInfo.getName();
+                
+                if( "MixedQuote".equals(name))
+                {
+                    assertTrue("com.example.sequences.MixedQuote".equals(classInfo.getClassName()));
+                    validatedMixedQuote = true;
+                }
+                if( "".equals(name))
+                {
+                    assertTrue("com.example.sequences.DocumentRoot".equals(classInfo.getClassName()));
+                    validatedDocRoot = true;
+                }
+                if( "symbol".equals(name))
+                {
+                    assertTrue("java.lang.String".equals(classInfo.getClassName()));
+                    validatedSymbol = true;
+                }
+            }
+            assertTrue(validatedMixedQuote);
+            assertTrue(validatedDocRoot);
+            assertTrue(validatedSymbol);
+        }    
+    }
+}



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