You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by fu...@apache.org on 2007/09/13 15:59:32 UTC

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

Author: fuhwei
Date: Thu Sep 13 06:59:31 2007
New Revision: 575317

URL: http://svn.apache.org/viewvc?rev=575317&view=rev
Log:
Fixed for TUSCANY-1673

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/GeneratedPackagesTestCase.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?rev=575317&r1=575316&r2=575317&view=diff
==============================================================================
--- 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 Thu Sep 13 06:59:31 2007
@@ -391,15 +391,15 @@
   
   public class GeneratedPackage
   {
-    private String namespace;
-    private List   classes;
+    private String  namespace;
+    private Hashtable classes;
     
     public String getNamespace() {return namespace;}
-    public List getClasses() {return classes;}
+    public List getClasses() {return new ArrayList(classes.values());}
     
     GeneratedPackage(GenPackage genPackage, ExtendedMetaData extendedMetaData, Hashtable eclassGenClassMap )
     {
-      classes = new ArrayList();
+      classes = new Hashtable();
          
       EPackage ePackage = genPackage.getEcorePackage();
       namespace     = extendedMetaData.getNamespace(ePackage);
@@ -408,64 +408,71 @@
       for (Iterator iterClass = genClasses.iterator(); iterClass.hasNext();)
       {
         GenClass genClass = (GenClass)iterClass.next();
-          String name  = extendedMetaData.getName(genClass.getEcoreClass());
-          String className = genPackage.getInterfacePackageName() + "." + genClass.getInterfaceName();
-          classes.add( new PackageClassInfo( name, className, false, null ) );
-        List features = genClass.getGenFeatures();
-        for (Iterator iterFeatures = features.iterator(); iterFeatures.hasNext();)
+        if ("DocumentRoot".equals(genClass.getEcoreClass().getName())) {
+	        List features = genClass.getGenFeatures();
+	        for (Iterator iterFeatures = features.iterator(); iterFeatures.hasNext();)
+	        {
+	          GenFeature feature = (GenFeature)iterFeatures.next();
+	          addGlobalElement(feature.getEcoreFeature(),extendedMetaData, eclassGenClassMap);
+	        }
+        }
+      }
+    }
+    
+    private void addGlobalElement(EStructuralFeature eFeature, ExtendedMetaData extendedMetaData, Hashtable eclassGenClassMap )
+    {
+        
+      String name               = eFeature.getName();
+      String classname          = "";
+      boolean anonymous         = false;
+      List propertyClassNames   = null;
+          
+      EClassifier eClassifier = eFeature.getEType();
+      
+      if( eClassifier instanceof EClass )
+      {
+        // complex type
+        EClass eClass = (EClass)eClassifier;
+        GenClass genEClass = (GenClass)eclassGenClassMap.get(eClassifier);
+        if( genEClass != null )
+        {    
+          classname = genEClass.getGenPackage().getInterfacePackageName()
+                 + '.' + genEClass.getInterfaceName();
+          anonymous = extendedMetaData.isAnonymous(eClass);
+                        
+          // Build list of property names
+          propertyClassNames = new ArrayList();
+          List properties = eClass.getEStructuralFeatures(); 
+          for (Iterator iterProperties = properties.iterator(); iterProperties.hasNext();)
           {
-          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 names
-                List propertyClassNames = new ArrayList();
-                List properties = eClass.getEStructuralFeatures(); 
-                for (Iterator iterProperties = properties.iterator(); iterProperties.hasNext();)
-                {
-                EStructuralFeature property = (EStructuralFeature)iterProperties.next();
-                EClassifier propertyType = property.getEType();
-                  if (propertyType instanceof EClass) 
-                  {
-                    GenClass propertyGenClass = (GenClass)eclassGenClassMap.get(propertyType);
-                    if( propertyGenClass != null )
-                    {    
-                      String propertyClassName =  propertyGenClass.getGenPackage().getInterfacePackageName() + '.'
-                                                  + propertyGenClass.getInterfaceName();
-                      propertyClassNames.add(propertyClassName);
-                    }        
-                  } 
-                  else if (propertyType instanceof EClassifier) 
-                  {
-                    String propertyClassName = propertyType.getInstanceClass().getName();
-                    propertyClassNames.add(propertyClassName);
-                  }
-                }
-                classes.add( new PackageClassInfo( name, interfaceName, anonymous, propertyClassNames ) );
-              }
-          }    
-              else
-              {
-                // simple type
-                name  = extendedMetaData.getName(element);
-                className = elementType.getInstanceClass().getName();
-                classes.add( new PackageClassInfo( name, className, false, null ) );
-              }
-            }    
+            EStructuralFeature property = (EStructuralFeature)iterProperties.next();
+            EClassifier propertyType = property.getEType();
+            if (propertyType instanceof EClass) 
+            {
+              GenClass propertyGenClass = (GenClass)eclassGenClassMap.get(propertyType);
+              if( propertyGenClass != null )
+              {    
+                String propertyClassName =  propertyGenClass.getGenPackage().getInterfacePackageName() + '.'
+                                            + propertyGenClass.getInterfaceName();
+                propertyClassNames.add(propertyClassName);
+              }        
+            } 
+            else if (propertyType instanceof EClassifier) 
+            {
+              String propertyClassName = propertyType.getInstanceClass().getName();
+              propertyClassNames.add(propertyClassName);
+            }
           }
         }
-      
+      }
+      else
+      {
+          // simple type
+          classname = eClassifier.getInstanceClass().getName();
+      }
+      classes.put( name, new PackageClassInfo( name, classname, anonymous, propertyClassNames ) );
+    }
+    
     public class PackageClassInfo
     {
       private String name;

Modified: 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?rev=575317&r1=575316&r2=575317&view=diff
==============================================================================
--- incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/GeneratedPackagesTestCase.java (original)
+++ incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/GeneratedPackagesTestCase.java Thu Sep 13 06:59:31 2007
@@ -44,33 +44,27 @@
             assertTrue(expectedNamespace.equals(packageInfo.getNamespace()));
             
             String name;
-            boolean validatedDocRoot = false;
             boolean validatedMixedQuote = false;
-            boolean validatedSymbol = false;
+            boolean validatedRC = 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))
+                if( "mixedStockQuote".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))
+                
+                if( "rc".equals(name))
                 {
-                    assertTrue("java.lang.String".equals(classInfo.getClassName()));
-                    validatedSymbol = true;
+                    assertTrue("com.example.sequences.RepeatingChoice".equals(classInfo.getClassName()));
+                    validatedRC = true;
                 }
             }
             assertTrue(validatedMixedQuote);
-            assertTrue(validatedDocRoot);
-            assertTrue(validatedSymbol);
+            assertTrue(validatedRC);
         }    
     }
 }



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