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