On Tue, Aug 12, 2008 at 9:40 PM, <[EMAIL PROTECTED]> 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
