[ https://issues.apache.org/jira/browse/CXF-6783?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Kulp resolved CXF-6783. ------------------------------ Resolution: Fixed Fix Version/s: 3.1.5 > ReflectionServiceFactoryBean generates invalid WSDL if > anonymousWrapperTypes==true > ---------------------------------------------------------------------------------- > > Key: CXF-6783 > URL: https://issues.apache.org/jira/browse/CXF-6783 > Project: CXF > Issue Type: Bug > Components: Services > Affects Versions: 3.1.5 > Reporter: Barnabas Bodnar > Priority: Minor > Fix For: 3.1.5 > > > ReflectionServiceFactoryBean has the public property _anonymousWrapperTypes_ > controlling whether the type (XSD) of a message is represented as standalone, > named type in the WSDL, or an anonymous, inline type (the default is _false_ > -> standalone, named). Setting it to _true_ effectuates producing the inline, > anonymous type, but this is, however, present also on top-level, as > standalone one, making the WSDL invalid (top-level types must have a name): > {code:xml} > <wsdl:definitions> > <wsdl:types> > <xsd:schema> > <xsd:element name="m"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="x" type="xsd:int"/> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="x" type="xsd:int"/> > </xsd:sequence> > </xsd:complexType> > ... > </xsd:schema> > ... > </wsdl:types> > ... > <wsdl:definitions> > {code} > Correctly: > {code:xml} > <wsdl:definitions> > <wsdl:types> > <xsd:schema> > <xsd:element name="m"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="x" type="xsd:int"/> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > ... > </xsd:schema> > ... > </wsdl:types> > ... > <wsdl:definitions> > {code} > Fix-proposal: use *new XmlSchemaComplexType(schema, > !isAnonymousWrapperTypes())* in the line 1300 instead of *new > XmlSchemaComplexType(schema, true)*. > {code:title=rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/ReflectionServiceFactoryBean.java|borderStyle=solid} > 1289 private void createWrappedMessageSchema(ServiceInfo serviceInfo, > AbstractMessageContainer wrappedMessage, > 1290 AbstractMessageContainer > unwrappedMessage, SchemaInfo info, > 1291 QName wrapperName) { > 1292 > 1293 XmlSchema schema = info.getSchema(); > 1294 info.setElement(null); // the cached schema will be no good > 1295 XmlSchemaElement el = new XmlSchemaElement(schema, true); > 1296 el.setName(wrapperName.getLocalPart()); > 1297 > 1298 wrappedMessage.getFirstMessagePart().setXmlSchema(el); > 1299 > 1300 XmlSchemaComplexType ct = new XmlSchemaComplexType(schema, true); > 1301 > 1302 if (!isAnonymousWrapperTypes()) { > 1303 ct.setName(wrapperName.getLocalPart()); > 1304 el.setSchemaTypeName(wrapperName); > 1305 } > 1306 el.setSchemaType(ct); > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)