Hmm.. Ok. No. I just fixed the code generation stuff (wsdl2java
and validator) that was preventing it from even generating the client
code. Didn't actually try running it.
Ick. That's a whole different problem. :-(
Dan
On May 12, 2008, at 12:53 PM, Taylor, Paul wrote:
Hi Dan
The context for this bug was attempting to create a client (using the
ReflectionServiceFactoryBean) and not being able to find any
operations
since because of the mismatch in the names between the port-type and
the
binding. Will the fix also address this problem or is it only related
to the validator?
Paul
-----Original Message-----
From: Daniel Kulp [mailto:[EMAIL PROTECTED]
Sent: 12 May 2008 17:43
To: [email protected]
Subject: Re: Default input/output names in port types not honored
Michael,
This is definitely a bug in the CXF validator. The xpaths that the
validator are using don't take the "defaults" into account for this.
I'm testing a fix for it now.
Dan
On May 11, 2008, at 9:47 PM, Ramnarine, Michael wrote:
According to Section 2.4.5 of WSDL 1.1
(http://www.w3.org/TR/wsdl#_names), the name attribute of input and
output elements does not have to be specified; and if not provided
will
default to the name of the operation with "Request" or "Response"
appended, for request-response operations. Unfortunately, CXF does
not
like it when the WSDL uses unnamed (defaulted) input and output
elements
in the portType operations, but at the same time has explicit name
attributes in the binding, even though the names in the binding
match
the default naming specified in section 2.4.5. The sample
defaults.wsdl
at the end of this message is an example of this, and when run
through
CXF 2.0.6 or 2.1 wsdlvalidator, errors are reported for the portType
(see the "Sample wsdlvalidator output" below).
Is this a bug in CXF?
P.S. When the input and output names are made consistent for both
portType and binding, wsdlvalidator is happy. More interestingly,
reversing the example, and using unnamed (defaulted) input and
output
elements in the binding, and using input and output elements with
explicit names which match the default naming in the portType, that
validates OK too.
-- Sample wsdlvalidator output --
C:\Ramnarine\dev\ART-10018>C:\apache-cxf-2.1\bin\wsdlvalidator.bat
defaults.wsdl
WSDLValidator Error :
Summary: Failures: 2, Warnings: 0
<<< ERROR!
file:/C:/Ramnarine/dev/ART-10018/defaults.wsdl:[44,13]
Caused by
{http://www.iona.com/artix/defaults}[portType:TestPortType]
[operation:Te
st][output:TestResponse] not exist.
file:/C:/Ramnarine/dev/ART-10018/defaults.wsdl:[40,13]
Caused by
{http://www.iona.com/artix/defaults}[portType:TestPortType]
[operation:Te
st][input:TestRequest] not exist.
-- Example: defaults.wsdl --
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="defaults.wsdl"
targetNamespace="http://www.iona.com/artix/defaults"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:tns="http://www.iona.com/artix/defaults"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<types>
<xsd:schema targetNamespace="http://www.iona.com/artix/
defaults"
xmlns="http://www.iona.com/artix/defaults"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="TestType">
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1"
name="msg"
type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="1"
name="num"
type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Test" type="TestType"/>
</xsd:schema>
</types>
<message name="TestMessage">
<part element="tns:Test" name="params"/>
</message>
<portType name="TestPortType">
<operation name="Test">
<input message="tns:TestMessage"/>
<output message="tns:TestMessage"/>
</operation>
</portType>
<binding name="TestPortTypeDefaults" type="tns:TestPortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Test">
<soap:operation soapAction="" style="document"/>
<input name="TestRequest">
<soap:body use="literal"/>
</input>
<output name="TestResponse">
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="TestService">
<port binding="tns:TestPortTypeDefaults" name="TestPort">
<soap:address location="http://localhost:9100/
TestService"/>
</port>
</service>
</definitions>
---
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog
----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
Ireland
---
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog