Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 51209 invoked from network); 30 Jul 2009 19:21:40 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 30 Jul 2009 19:21:40 -0000 Received: (qmail 77711 invoked by uid 500); 30 Jul 2009 19:21:40 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 77641 invoked by uid 500); 30 Jul 2009 19:21:40 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 77632 invoked by uid 99); 30 Jul 2009 19:21:40 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 30 Jul 2009 19:21:40 +0000 X-ASF-Spam-Status: No, hits=-1998.5 required=10.0 tests=ALL_TRUSTED,WEIRD_PORT X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 30 Jul 2009 19:21:27 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 21BC1238893B; Thu, 30 Jul 2009 19:21:05 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r799415 - in /cxf/trunk/rt/databinding/sdo/src: main/java/org/apache/cxf/sdo/ main/java/org/apache/cxf/sdo/tools/ test/java/org/apache/cxf/sdo/ test/resources/wsdl_sdo/ Date: Thu, 30 Jul 2009 19:21:04 -0000 To: commits@cxf.apache.org From: dkulp@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090730192105.21BC1238893B@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dkulp Date: Thu Jul 30 19:21:04 2009 New Revision: 799415 URL: http://svn.apache.org/viewvc?rev=799415&view=rev Log: Update SDO databinding and tools to handle wsdl and schema imports by just using the schemas already processed in the schema collection Added: cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService.wsdl - copied, changed from r799394, cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_static.wsdl Modified: cxf/trunk/rt/databinding/sdo/src/main/java/org/apache/cxf/sdo/SDODataBinding.java cxf/trunk/rt/databinding/sdo/src/main/java/org/apache/cxf/sdo/tools/SDODatabinding.java cxf/trunk/rt/databinding/sdo/src/test/java/org/apache/cxf/sdo/AbstractHelloWorldTest.java cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_dynamic.wsdl cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_static.wsdl Modified: cxf/trunk/rt/databinding/sdo/src/main/java/org/apache/cxf/sdo/SDODataBinding.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/sdo/src/main/java/org/apache/cxf/sdo/SDODataBinding.java?rev=799415&r1=799414&r2=799415&view=diff ============================================================================== --- cxf/trunk/rt/databinding/sdo/src/main/java/org/apache/cxf/sdo/SDODataBinding.java (original) +++ cxf/trunk/rt/databinding/sdo/src/main/java/org/apache/cxf/sdo/SDODataBinding.java Thu Jul 30 19:21:04 2009 @@ -19,7 +19,8 @@ package org.apache.cxf.sdo; -import java.io.InputStream; +import java.io.StringReader; +import java.io.StringWriter; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; @@ -33,17 +34,17 @@ import org.w3c.dom.Node; +import org.apache.cxf.common.xmlschema.XmlSchemaConstants; import org.apache.cxf.databinding.AbstractDataBinding; import org.apache.cxf.databinding.DataReader; import org.apache.cxf.databinding.DataWriter; import org.apache.cxf.databinding.WrapperCapableDatabinding; import org.apache.cxf.databinding.WrapperHelper; import org.apache.cxf.interceptor.Fault; -import org.apache.cxf.resource.ExtendedURIResolver; import org.apache.cxf.service.Service; -import org.apache.cxf.service.model.DescriptionInfo; import org.apache.cxf.service.model.ServiceInfo; import org.apache.tuscany.sdo.api.SDOUtil; +import org.apache.ws.commons.schema.XmlSchema; import commonj.sdo.DataObject; import commonj.sdo.Type; @@ -149,13 +150,13 @@ } } for (ServiceInfo serviceInfo : service.getServiceInfos()) { - DescriptionInfo dInfo = serviceInfo.getDescription(); - if (dInfo != null) { - String uri = dInfo.getBaseURI(); - ExtendedURIResolver resolver = new ExtendedURIResolver(); - InputStream ins = resolver.resolve(uri, "").getByteStream(); - context.getXSDHelper().define(ins, uri); - resolver.close(); + for (XmlSchema schema : serviceInfo.getXmlSchemaCollection().getXmlSchemas()) { + if (schema.getTargetNamespace().equals(XmlSchemaConstants.XSD_NAMESPACE_URI)) { + continue; + } + StringWriter writer = new StringWriter(); + schema.write(writer); + context.getXSDHelper().define(new StringReader(writer.toString()), schema.getSourceURI()); } } } Modified: cxf/trunk/rt/databinding/sdo/src/main/java/org/apache/cxf/sdo/tools/SDODatabinding.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/sdo/src/main/java/org/apache/cxf/sdo/tools/SDODatabinding.java?rev=799415&r1=799414&r2=799415&view=diff ============================================================================== --- cxf/trunk/rt/databinding/sdo/src/main/java/org/apache/cxf/sdo/tools/SDODatabinding.java (original) +++ cxf/trunk/rt/databinding/sdo/src/main/java/org/apache/cxf/sdo/tools/SDODatabinding.java Thu Jul 30 19:21:04 2009 @@ -20,11 +20,10 @@ package org.apache.cxf.sdo.tools; import java.io.File; -import java.io.IOException; -import java.io.InputStream; +import java.io.StringReader; +import java.io.StringWriter; import java.net.URI; import java.net.URISyntaxException; -import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.Hashtable; @@ -34,6 +33,8 @@ import javax.xml.namespace.QName; +import org.apache.cxf.common.xmlschema.SchemaCollection; +import org.apache.cxf.common.xmlschema.XmlSchemaConstants; import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.tools.common.ToolConstants; import org.apache.cxf.tools.common.ToolContext; @@ -41,9 +42,10 @@ import org.apache.cxf.tools.common.model.DefaultValueWriter; import org.apache.cxf.tools.util.ClassCollector; 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.apache.tuscany.sdo.helper.XSDHelperImpl; +import org.apache.ws.commons.schema.XmlSchema; import org.eclipse.emf.codegen.ecore.genmodel.GenClass; import org.eclipse.emf.codegen.ecore.genmodel.GenModel; import org.eclipse.emf.codegen.ecore.genmodel.GenPackage; @@ -71,23 +73,19 @@ private ExtendedMetaData extendedMetaData; private GenModel genModel; private Map genClasses = new HashMap(); - + private SchemaCollection schemaCollection; + public void generate(ToolContext context) throws ToolException { - if (dynamic) { - // Node XSD2Java is needed for dynamic SDO - return; - } - Map ns2pkgMap = context.getNamespacePackageMap(); String outputDir = (String)context.get(ToolConstants.CFG_OUTPUTDIR); String pkg = context.getPackageName(); - String wsdl = (String)context.get(ToolConstants.CFG_WSDLLOCATION); // preparing the directories where files to be written. File targetDir; if (outputDir == null) { + String wsdl = (String)context.get(ToolConstants.CFG_WSDLLOCATION); try { outputDir = new File(new URI(wsdl)).getParentFile().getAbsolutePath(); } catch (URISyntaxException e) { @@ -105,33 +103,60 @@ argList.add("-javaPackage"); argList.add(pkg); } + schemaCollection = (SchemaCollection) context.get(ToolConstants.XML_SCHEMA_COLLECTION); - // We need to copy the wsdl to a local file if it is not - argList.add(new File(URI.create(wsdl)).getAbsolutePath()); - + argList.add(""); //bogus arg String[] args = argList.toArray(new String[argList.size()]); ClassCollector classCollector = context.get(ClassCollector.class); + EPackage.Registry packageRegistry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE); + extendedMetaData = new BasicExtendedMetaData(packageRegistry); + HelperContext hc = new HelperContextImpl(extendedMetaData, false); + xsdHelper = hc.getXSDHelper(); + typeHelper = hc.getTypeHelper(); + + try { processArguments(args); - genModel = runXSD2Java(args, ns2pkgMap); - List packages = CastUtils.cast(genModel.getGenPackages()); - for (Iterator iter = packages.iterator(); iter.hasNext();) { - // loop through the list, once to build up the eclass to genclass mapper - GenPackage genPackage = iter.next(); - List classes = CastUtils.cast(genPackage.getGenClasses()); - for (Iterator classIter = classes.iterator(); classIter.hasNext();) { - GenClass genClass = classIter.next(); - genClasses.put(genClass.getEcoreClass(), genClass); - - //This gets the "impl" classes, how do we get everything else? - String s = genClass.getQualifiedClassName(); - String p = s.substring(0, s.lastIndexOf('.')); - s = s.substring(s.lastIndexOf('.') + 1); - classCollector.addTypesClassName(p, - s, - genClass.getQualifiedClassName()); + + ((XSDHelperImpl)xsdHelper).setRedefineBuiltIn(generateBuiltIn); + + Map packageInfoTable = + createPackageInfoTable(schemaCollection, ns2pkgMap); + for (XmlSchema schema : schemaCollection.getXmlSchemas()) { + if (schema.getTargetNamespace().equals(XmlSchemaConstants.XSD_NAMESPACE_URI)) { + continue; + } + StringWriter writer = new StringWriter(); + schema.write(writer); + xsdHelper.define(new StringReader(writer.toString()), schema.getSourceURI()); + } + if (!dynamic) { + // No XSD2Java is needed for dynamic SDO + + genModel = generatePackages(packageRegistry.values(), targetDirectory, + new Hashtable(packageInfoTable), + genOptions, allNamespaces); + + + List packages = CastUtils.cast(genModel.getGenPackages()); + for (Iterator iter = packages.iterator(); iter.hasNext();) { + // loop through the list, once to build up the eclass to genclass mapper + GenPackage genPackage = iter.next(); + List classes = CastUtils.cast(genPackage.getGenClasses()); + for (Iterator classIter = classes.iterator(); classIter.hasNext();) { + GenClass genClass = classIter.next(); + genClasses.put(genClass.getEcoreClass(), genClass); + + //This gets the "impl" classes, how do we get everything else? + String s = genClass.getQualifiedClassName(); + String p = s.substring(0, s.lastIndexOf('.')); + s = s.substring(s.lastIndexOf('.') + 1); + classCollector.addTypesClassName(p, + s, + genClass.getQualifiedClassName()); + } } } } catch (Exception e) { @@ -140,32 +165,10 @@ return; } - HelperContext hc = new HelperContextImpl(extendedMetaData, false); - xsdHelper = hc.getXSDHelper(); - typeHelper = hc.getTypeHelper(); } - protected GenModel runXSD2Java(String args[], Map ns2PkgMap) { - String xsdFileName = args[inputIndex]; - EPackage.Registry packageRegistry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE); - extendedMetaData = new BasicExtendedMetaData(packageRegistry); - String packageURI = getSchemaNamespace(xsdFileName); - Map packageInfoTable = - createPackageInfoTable(packageURI, schemaNamespace, javaPackage, prefix, ns2PkgMap); - return generateFromXMLSchema(xsdFileName, - packageRegistry, - extendedMetaData, - targetDirectory, - new Hashtable(packageInfoTable), - genOptions, - generateBuiltIn, - allNamespaces); - } - private static Map createPackageInfoTable(String packageURI, - String schemaNamespace, - String javaPackage, - String prefix, + private Map createPackageInfoTable(SchemaCollection schemas, Map ns2PkgMap) { Map packageInfoTable = new HashMap(); @@ -174,11 +177,9 @@ packageInfoTable.put(e.getKey(), new PackageInfo(e.getValue(), null, e.getKey(), null)); } } else { - if (schemaNamespace != null) { - packageInfoTable.put(schemaNamespace, - new PackageInfo(javaPackage, prefix, schemaNamespace, null)); - } else if (packageURI != null) { - packageInfoTable.put(packageURI, new PackageInfo(javaPackage, prefix, null, null)); + for (XmlSchema schema : schemas.getXmlSchemas()) { + packageInfoTable.put(schema.getTargetNamespace(), + new PackageInfo(javaPackage, prefix, schema.getTargetNamespace(), null)); } } return packageInfoTable; @@ -191,24 +192,6 @@ } generatedPackages = null; - String wsdl = (String)context.get(ToolConstants.CFG_WSDLLOCATION); - - if (dynamic) { - HelperContext helperContext = SDOUtil.createHelperContext(); - xsdHelper = helperContext.getXSDHelper(); - URL location; - try { - location = new URL(wsdl); - InputStream is = location.openStream(); - xsdHelper.define(is, wsdl); - } catch (IOException e) { - throw new ToolException(e); - } - this.typeHelper = helperContext.getTypeHelper(); - } - - - } public String getType(QName qName, boolean element) { @@ -264,6 +247,7 @@ Property property = xsdHelper.getGlobalProperty(wrapperElement.getNamespaceURI(), wrapperElement.getLocalPart(), true); + if (property != null) { type = property.getType(); Property itemProp = type.getProperty(item.getLocalPart()); Modified: cxf/trunk/rt/databinding/sdo/src/test/java/org/apache/cxf/sdo/AbstractHelloWorldTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/sdo/src/test/java/org/apache/cxf/sdo/AbstractHelloWorldTest.java?rev=799415&r1=799414&r2=799415&view=diff ============================================================================== --- cxf/trunk/rt/databinding/sdo/src/test/java/org/apache/cxf/sdo/AbstractHelloWorldTest.java (original) +++ cxf/trunk/rt/databinding/sdo/src/test/java/org/apache/cxf/sdo/AbstractHelloWorldTest.java Thu Jul 30 19:21:04 2009 @@ -20,8 +20,13 @@ package org.apache.cxf.sdo; +import java.util.Collection; + +import org.w3c.dom.Document; import org.w3c.dom.Node; +import junit.framework.AssertionFailedError; + import org.junit.Test; @@ -51,10 +56,17 @@ @Test public void testWSDL() throws Exception { - Node doc = getWSDLDocument("TestService"); - assertNotNull(doc); - assertValid("/wsdl:definitions/wsdl:types/xsd:schema" - + "[@targetNamespace='http://apache.org/hello_world_soap_http/types']", - doc); + Collection docs = getWSDLDocuments("TestService"); + for (Document doc : docs) { + try { + assertValid("/wsdl:definitions/wsdl:types/xsd:schema" + + "[@targetNamespace='http://apache.org/hello_world_soap_http/types']", + doc); + return; + } catch (AssertionFailedError ex) { + //ignore + } + } + fail("Did not find schemas"); } } Copied: cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService.wsdl (from r799394, cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_static.wsdl) URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService.wsdl?p2=cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService.wsdl&p1=cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_static.wsdl&r1=799394&r2=799415&rev=799415&view=diff ============================================================================== --- cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_static.wsdl (original) +++ cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService.wsdl Thu Jul 30 19:21:04 2009 @@ -209,9 +209,4 @@ - - - - - Modified: cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_dynamic.wsdl URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_dynamic.wsdl?rev=799415&r1=799414&r2=799415&view=diff ============================================================================== --- cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_dynamic.wsdl (original) +++ cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_dynamic.wsdl Thu Jul 30 19:21:04 2009 @@ -20,195 +20,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Modified: cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_static.wsdl URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_static.wsdl?rev=799415&r1=799414&r2=799415&view=diff ============================================================================== --- cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_static.wsdl (original) +++ cxf/trunk/rt/databinding/sdo/src/test/resources/wsdl_sdo/HelloService_static.wsdl Thu Jul 30 19:21:04 2009 @@ -20,195 +20,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -