https://jax-rpc.dev.java.net/issues/show_bug.cgi?id=36 Issue #|36
Summary|wscompile rejects rpc/literal operation bindings when
|processing wsdl in nometadata web-app
Component|jax-rpc
Version|current
Platform|PC
OS/Version|All
URL|
Status|NEW
Status whiteboard|
Keywords|
Resolution|
Issue type|DEFECT
Priority|P3
Subcomponent|tck
Assigned to|issues@jax-rpc
Reported by|andrewdinn
------- Additional comments from
andrewdinn@... Mon Nov 26 11:37:04 +0000 2007 -------
The problem happens when wscompile is invoked during deployment of a
jaxrpc-based web-app which uses unannotated classes configured via wsdl and
jaxrpc mapping xml files. The problem only arises if the operation bindings in
the wsdl employ style/use = rpc/literal. The error message
<operation> is not SOAP-encoded
is generated.
The problem appears to be erroneous logic in the wsdl validation code. When it
finds an operation with style = rpc, wscompile invokes method
processSOAPOperationRPCStyle in class NoMetaDataModeller. This includes the
following test (line 630)
if ((soapRequestBody.isLiteral() || !tokenListContains(
soapRequestBody.getEncodingStyle(),
SOAPConstants.NS_SOAP_ENCODING)) ||
(soapResponseBody != null && (soapResponseBody.isLiteral() ||
!tokenListContains(soapResponseBody.getEncodingStyle(),
SOAPConstants.NS_SOAP_ENCODING)))) {
throw new ModelerException(
"nometadatamodeler.error.operationNotEncoded",
info.portTypeOperation.getName());
}
This appears to be miscoded logic. The test should be passed if the request (and
response, if any) i) has style/use = rpc/literal or ii) has style/use =
rpc/encoded where encoding = SOAP. The code above rejects case i).
The correct test ought to be
if ((!soapRequestBody.isLiteral() && !tokenListContains(
soapRequestBody.getEncodingStyle(),
SOAPConstants.NS_SOAP_ENCODING)) ||
(soapResponseBody != null && (!soapResponseBody.isLiteral() &&
!tokenListContains(soapResponseBody.getEncodingStyle(),
SOAPConstants.NS_SOAP_ENCODING)))) {
throw new ModelerException(
"nometadatamodeler.error.operationNotEncoded",
info.portTypeOperation.getName());
}
---------------------------------------------------------------------
To unsubscribe, e-mail:
issues-unsubscribe@...
For additional commands, e-mail:
issues-help@...