[ 
https://issues.apache.org/jira/browse/TUSCANY-2465?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Scott Kurz resolved TUSCANY-2465.
---------------------------------

    Resolution: Fixed

That looks good.  Thanks for the fix.

> J2W Interface2WSDLGenerator should only call SchemaBuilder once per TNS
> -----------------------------------------------------------------------
>
>                 Key: TUSCANY-2465
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-2465
>             Project: Tuscany
>          Issue Type: Bug
>          Components: Java SCA Data Binding Runtime
>         Environment: Roughly SCA Java 1.3
>            Reporter: Scott Kurz
>            Assignee: Raymond Feng
>
> When trying the equivalent of the itest/databindings/jaxb-bottom-up test with 
> a newer version of XMLSchema (newer than the 1.3.2 version Tuscany depends 
> on), I hit an error 
> org.apache.ws.commons.schema.XmlSchemaException: Schema name conflict in 
> collection. Namespace: http://jaxb.dev.java.net/array
>       at 
> org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:104)
>       at 
> org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:83)
>       at 
> org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:424)
>       at 
> org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:418)
>       at 
> org.apache.tuscany.sca.interfacedef.wsdl.interface2wsdl.Interface2WSDLGenerator.loadXSD(Interface2WSDLGenerator.java:354)
>       at 
> org.apache.tuscany.sca.interfacedef.wsdl.interface2wsdl.Interface2WSDLGenerator.addSchemaExtension(Interface2WSDLGenerator.java:336)
>       at 
> org.apache.tuscany.sca.interfacedef.wsdl.interface2wsdl.Interface2WSDLGenerator.generate(Interface2WSDLGenerator.java:213)
> The problem lies in Interface2WSDLGenerator.generate(), with this excerpt:
>         for (Map.Entry<String, List<DataType>> en: getDataTypes(interfaze, 
> false).entrySet()) {
>             XMLTypeHelper helper = helpers.get(en.getKey());
>             if (helper == null) {
>                 continue;
>             }
>             List<XSDefinition> xsDefinitions = 
> helper.getSchemaDefinitions(xsdFactory, resolver, en.getValue());
>             for (XSDefinition xsDef: xsDefinitions) {
>                 addSchemaExtension(xsDef, schemaCollection, wsdlDefinition, 
> definition);
>             }
>         }
> The getDataTypes(interfaze,false) does its introspection of the DataType(s) 
> and returns a pair of Map.Entry(s).  One has key:  simpleType, and one has 
> key: complexType.    For each of these keys, the call to 
> helpers.get(en.getKey()) returns the JAXTypeHelper, and each results into 
> addSchemaExtension() which in turn calls loadXSD() which I showed in the 
> stack trace.   And the problem is each call involves an XMLSchema def with 
> the same TNS, http://jaxb.dev.java.net/array.
> Somehow we need to reduce this to one call to SchemaBuilder or we'll break 
> this test when we upgrade our XMLSchema dependency.   (Not sure what if 
> anything is broken on this level of XMLSchema since the 2nd call ends up as a 
> no-op).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to