summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-07-12 18:07:15 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-07-12 18:07:15 +0000
commit57c7cd8e88c2e19fe34c5f4e69febba1ffe34a81 (patch)
treebdd804cfbb40dffdbcb8f915e08c0b61716fe8a4 /branches/sca-java-1.x
parentb3e5ca8c0bf46a2f85c3f9e113d90421e96de4cd (diff)
Use GenModel to find the class name for static SDOs
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@793385 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.x')
-rw-r--r--branches/sca-java-1.x/tools/databinding/sdo/src/main/java/org/apache/tuscany/tools/wsdl2java/sdo/SDODatabinding.java64
1 files changed, 50 insertions, 14 deletions
diff --git a/branches/sca-java-1.x/tools/databinding/sdo/src/main/java/org/apache/tuscany/tools/wsdl2java/sdo/SDODatabinding.java b/branches/sca-java-1.x/tools/databinding/sdo/src/main/java/org/apache/tuscany/tools/wsdl2java/sdo/SDODatabinding.java
index de7e23ec71..91e445bec5 100644
--- a/branches/sca-java-1.x/tools/databinding/sdo/src/main/java/org/apache/tuscany/tools/wsdl2java/sdo/SDODatabinding.java
+++ b/branches/sca-java-1.x/tools/databinding/sdo/src/main/java/org/apache/tuscany/tools/wsdl2java/sdo/SDODatabinding.java
@@ -29,6 +29,7 @@ import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Hashtable;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -42,6 +43,10 @@ import org.apache.cxf.tools.wsdlto.core.DataBindingProfile;
import org.apache.tuscany.sdo.api.SDOUtil;
import org.apache.tuscany.sdo.generate.XSD2JavaGenerator;
import org.apache.tuscany.sdo.helper.HelperContextImpl;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
@@ -64,6 +69,7 @@ public class SDODatabinding extends XSD2JavaGenerator implements DataBindingProf
private boolean dynamic;
private ExtendedMetaData extendedMetaData;
+ private GenModel genModel;
public void generate(ToolContext context) throws ToolException {
if (dynamic) {
@@ -106,10 +112,11 @@ public class SDODatabinding extends XSD2JavaGenerator implements DataBindingProf
try {
processArguments(args);
- run(args);
+ genModel = runXSD2Java(args);
} catch (Exception e) {
e.printStackTrace();
printUsage();
+ return;
}
HelperContext hc = new HelperContextImpl(extendedMetaData, false);
@@ -118,21 +125,21 @@ public class SDODatabinding extends XSD2JavaGenerator implements DataBindingProf
}
- protected void run(String args[]) {
+ protected GenModel runXSD2Java(String args[]) {
String xsdFileName = args[inputIndex];
EPackage.Registry packageRegistry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
extendedMetaData = new BasicExtendedMetaData(packageRegistry);
String packageURI = getSchemaNamespace(xsdFileName);
Hashtable packageInfoTable =
createPackageInfoTable(packageURI, schemaNamespace, javaPackage, prefix, namespaceInfo);
- generateFromXMLSchema(xsdFileName,
- packageRegistry,
- extendedMetaData,
- targetDirectory,
- packageInfoTable,
- genOptions,
- generateBuiltIn,
- allNamespaces);
+ return generateFromXMLSchema(xsdFileName,
+ packageRegistry,
+ extendedMetaData,
+ targetDirectory,
+ packageInfoTable,
+ genOptions,
+ generateBuiltIn,
+ allNamespaces);
}
private static Hashtable createPackageInfoTable(String packageURI,
@@ -216,13 +223,42 @@ public class SDODatabinding extends XSD2JavaGenerator implements DataBindingProf
}
private String getClassName(Type type) {
- EClassifier eClass = (EClassifier)type;
- String name = eClass.getInstanceClassName();
- if (name == null) {
+ EClassifier eClassifier = (EClassifier)type;
+ String name = eClassifier.getInstanceClassName();
+ if (name != null) {
+ return name;
+ }
+
+ if (genModel == null) {
return type.getName();
+ }
+
+ List<GenPackage> packages = genModel.getGenPackages();
+ Hashtable<EClassifier, GenClass> genClasses = new Hashtable<EClassifier, GenClass>();
+ for (Iterator<GenPackage> iter = packages.iterator(); iter.hasNext();) {
+ // loop through the list, once to build up the eclass to genclass mapper
+ GenPackage genPackage = iter.next();
+ List<GenClass> classes = genPackage.getGenClasses();
+ for (Iterator<GenClass> classIter = classes.iterator(); classIter.hasNext();) {
+ GenClass genClass = classIter.next();
+ genClasses.put(genClass.getEcoreClass(), genClass);
+ }
+ }
+
+ if (eClassifier instanceof EClass) {
+ // complex type
+ EClass eClass = (EClass)eClassifier;
+ GenClass genEClass = (GenClass)genClasses.get(eClassifier);
+ if (genEClass != null) {
+ name = genEClass.getGenPackage().getInterfacePackageName() + '.' + genEClass.getInterfaceName();
+
+ }
} else {
- return name;
+ // simple type
+ name = eClassifier.getInstanceClass().getName();
}
+ return name;
+
}
public String getWrappedElementType(QName wrapperElement, QName item) {