[
https://issues.apache.org/jira/browse/CXF-5070?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13679095#comment-13679095
]
Alain Pannetier commented on CXF-5070:
--------------------------------------
Looks like the workaround should also be added in one or two other places.
I discovered because my WSDL imports a bunch of additional XSDs (shared among
various WSDLs).
So I had to add your workaround in 2 other places (both in
org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding#addSchemas)
{code:java|title=JAXBDataBinding#addSchemas line 660}
InputSource is = new InputSource((InputStream)null);
//key = key.replaceFirst("#types[0-9]+$", "");
is.setSystemId(key);
is.setPublicId(key);
opts.addGrammar(is);
try {
XMLStreamReader reader = new
StreamReaderDelegate(StaxUtils.createXMLStreamReader(ele, key)) {
public int next() throws XMLStreamException {
int i = super.next();
return i == XMLStreamReader.CDATA ?
XMLStreamReader.CHARACTERS : i;
}
};
schemaCompiler.parseSchema(key, reader);
} catch (XMLStreamException e) {
throw new ToolException(e);
}
{code}
And just below (adapted to the desired createXMLStreamReader overload)
{code:java|title=JAXBDataBinding#addSchemas line 690}
XMLStreamReader reader = new
StreamReaderDelegate(StaxUtils.createXMLStreamReader(key, in)) {
public int next() throws XMLStreamException {
int i = super.next();
return i == XMLStreamReader.CDATA ?
XMLStreamReader.CHARACTERS : i;
}
};
reader = new LocationFilterReader(reader, catalog);
InputSource is = new InputSource(key);
opts.addGrammar(is);
schemaCompiler.parseSchema(key, reader);
reader.close();
{code}
I might have overlooked other places (this is a huge class).
> CDATA sections are not taken into account by wsdl2java but are by xjc
> ---------------------------------------------------------------------
>
> Key: CXF-5070
> URL: https://issues.apache.org/jira/browse/CXF-5070
> Project: CXF
> Issue Type: Bug
> Components: Tooling
> Affects Versions: 2.7.4
> Environment: Java 1.7 (Sun JDK, Linux Mint 14)
> Reporter: Alain Pannetier
> Assignee: Daniel Kulp
> Priority: Minor
> Labels: newbie
>
> When generating javadoc comments in emitted java classes from
> xsd:documentation/xsd:annotation, CDATA are systematically disregarded by
> wsdl2java.
> Narrowed down to a simple test
> 1/ wsdl2java -d src stuff.wsdl
> 2/ xjc -wsdl -d src stuff.wsdl
> Simple wsdl:
> {code:xml}
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <wsdl:definitions
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:tns="http:/com.example/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
> targetNamespace="http:/com.example/"
> jaxb:version="1.0"
> >
> <wsdl:types>
> <xsd:schema
> targetNamespace="http:/com.example/">
> <xsd:element name="doStuff">
> <xsd:complexType >
> <xsd:annotation>
> <xsd:documentation>
> This does show up
> <![CDATA[This doesn't]]>
> </xsd:documentation>
> <xsd:appinfo>
> <jaxb:class name="DoStuff">
> <jaxb:javadoc>This does show up
> <![CDATA[This doesn't]]>
> </jaxb:javadoc>
> </jaxb:class>
> </xsd:appinfo>
> </xsd:annotation>
> <xsd:sequence/>
> </xsd:complexType>
> </xsd:element>
> <xsd:element name="doStuffResponse">
> <xsd:complexType>
> <xsd:sequence/>
> </xsd:complexType>
> </xsd:element>
> </xsd:schema>
> </wsdl:types>
> <wsdl:message name="doStuffRequest">
> <wsdl:part name="input" element="tns:doStuff"/>
> </wsdl:message>
> <wsdl:message name="doStuffResponse">
> <wsdl:part name="result" element="tns:doStuffResponse"/>
> </wsdl:message>
> <wsdl:portType name="stuffPortType">
> <wsdl:operation name="doStuff">
> <wsdl:input message="tns:doStuffRequest"/>
> <wsdl:output message="tns:doStuffResponse"/>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="stuffBinding" type="tns:stuffPortType">
> <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http" />
> <wsdl:operation name="doStuff">
> <soap:operation soapAction="http:/com.example/doStuff" />
> <wsdl:input>
> <soap:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="stuffService">
> <wsdl:port binding="tns:stuffBinding" name="stuffPort">
> <soap:address location="http://localhost:8080/stuff/stuffService"/>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira