You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Simon Laws <si...@googlemail.com> on 2008/08/12 22:53:22 UTC
Re: svn commit: r685307 - in /tuscany/branches/sca-java-1.3/modules: binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/ binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/ databinding-jaxb/src/main/java/or
On Tue, Aug 12, 2008 at 9:40 PM, <na...@apache.org> wrote:
> Author: nash
> Date: Tue Aug 12 13:40:20 2008
> New Revision: 685307
>
> URL: http://svn.apache.org/viewvc?rev=685307&view=rev
> Log:
> Fix TUSCANY-2531
>
> Modified:
>
> tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
>
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
>
> tuscany/branches/sca-java-1.3/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBTypeHelper.java
>
> Modified:
> tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java?rev=685307&r1=685306&r2=685307&view=diff
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
> (original)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
> Tue Aug 12 13:40:20 2008
> @@ -536,10 +536,12 @@
> if (obj instanceof XmlSchemaExternal) {
> XmlSchemaExternal extSchema = (XmlSchemaExternal)obj;
> String location = extSchema.getSchemaLocation();
> - if (location.indexOf(":/") < 0 & location.indexOf("?xsd=")
> < 0) {
> + if (location.length() > 0 && location.indexOf(":/") < 0 &&
> location.indexOf("?xsd=") < 0) {
> extSchema.setSchemaLocation(name + "?xsd=" + location);
> }
> - updateSchemaRefs(extSchema.getSchema(), name);
> + if (extSchema.getSchema() != null) {
> + updateSchemaRefs(extSchema.getSchema(), name);
> + }
> }
> }
> }
>
> Modified:
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java?rev=685307&r1=685306&r2=685307&view=diff
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
> (original)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGenerator.java
> Tue Aug 12 13:40:20 2008
> @@ -76,6 +76,8 @@
> import org.apache.ws.commons.schema.utils.NamespaceMap;
> import org.w3c.dom.Document;
> import org.w3c.dom.Element;
> +import org.w3c.dom.Node;
> +import org.w3c.dom.NodeList;
>
> /**
> * @version $Rev: 670103 $ $Date: 2008-06-21 01:35:00 +0100 (Sat, 21 Jun
> 2008) $
> @@ -325,7 +327,10 @@
> }
> QName typeName = element.getType().getQName();
> String nsURI = typeName.getNamespaceURI();
> - if ("".equals(nsURI) ||
> targetNS.equals(nsURI)) {
> + if ("".equals(nsURI)) {
> + xsElement.setAttribute("type",
> typeName.getLocalPart());
> + addSchemaImport(schema, "", schemaDoc);
> + } else if (targetNS.equals(nsURI)) {
> xsElement.setAttribute("type",
> typeName.getLocalPart());
> } else if (SCHEMA_NS.equals(nsURI)) {
> xsElement.setAttribute("type", "xs:" +
> typeName.getLocalPart());
> @@ -336,6 +341,7 @@
> prefix = "ns" + i++;
> prefixMap.put(nsURI, prefix);
> schema.setAttributeNS(XMLNS_NS,
> "xmlns:" + prefix, nsURI);
> + addSchemaImport(schema, nsURI,
> schemaDoc);
> }
> xsElement.setAttribute("type", prefix + ":"
> + typeName.getLocalPart());
> }
> @@ -354,7 +360,26 @@
>
> return definition;
> }
> -
> +
> + private static void addSchemaImport(Element schema, String nsURI,
> Document schemaDoc) {
> + Element imp = schemaDoc.createElementNS(SCHEMA_NS, "xs:import");
> + if (!"".equals(nsURI)) {
> + imp.setAttribute("namespace", nsURI);
> + }
> + NodeList childNodes = schema.getChildNodes();
> + for (int i = 0; i < childNodes.getLength(); i++) {
> + Node childNode = childNodes.item(i);
> + if (childNode instanceof Element) {
> + schema.insertBefore(imp, childNode);
> + imp = null;
> + break;
> + }
> + }
> + if (imp != null) {
> + schema.appendChild(imp);
> + }
> + }
> +
> private void addSchemaExtension(XSDefinition xsDef,
> XmlSchemaCollection schemaCollection,
> WSDLDefinition wsdlDefinition,
>
> Modified:
> tuscany/branches/sca-java-1.3/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBTypeHelper.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBTypeHelper.java?rev=685307&r1=685306&r2=685307&view=diff
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBTypeHelper.java
> (original)
> +++
> tuscany/branches/sca-java-1.3/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBTypeHelper.java
> Tue Aug 12 13:40:20 2008
> @@ -19,7 +19,6 @@
>
> package org.apache.tuscany.sca.databinding.jaxb;
>
> -import java.beans.Introspector;
> import java.io.IOException;
> import java.io.StringReader;
> import java.io.StringWriter;
> @@ -74,13 +73,43 @@
> xmlType = ((XMLType)logical).getTypeName();
> }
> if (xmlType == null) {
> - xmlType =
> - new QName(JavaXMLMapper.getNamespace(javaType),
> Introspector.decapitalize(javaType.getSimpleName()));
> + xmlType = new
> QName(jaxbRIDecapitalize(javaType.getSimpleName()));
> }
> return new TypeInfo(xmlType, false, null);
> }
> }
>
> + /**
> + * The JAXB RI doesn't implement the decapitalization algorithm in the
> + * JAXB spec. See Sun bug 6505643 for details. This means that we
> need
> + * to mimic the incorrect algorithm for references from wrapper
> schemas.
> + */
> + private String jaxbRIDecapitalize(String name) {
> + // find first lower case char in name
> + int lower = name.length();
> + for (int i = 0; i < name.length(); i++) {
> + if (Character.isLowerCase(name.charAt(i))) {
> + lower = i;
> + break;
> + }
> + }
> +
> + int decap;
> + if (name.length() == 0) {
> + decap = 0; // empty string: nothing to do
> + } else if (lower == 0) {
> + decap = 0; // first char is lower case: nothing to do
> + } else if (lower == 1) {
> + decap = 1; // one upper followed by lower: decapitalize 1
> char
> + } else if (lower < name.length()) {
> + decap = lower - 1; // n uppers followed by at least one
> lower: decapitalize n-1 chars
> + } else {
> + decap = name.length(); // all upper case: decapitalize all
> chars
> + }
> +
> + return name.substring(0, decap).toLowerCase() +
> name.substring(decap);
> + }
> +
> /*
> public List<XSDefinition> getSchemaDefinitions(XSDFactory factory,
> ModelResolver resolver) {
> List<XSDefinition> definitions = new ArrayList<XSDefinition>();
>
>
>
Was this intended to be a 1.3 change or a 1.3.1 change?
Simon