[
https://issues.apache.org/jira/browse/AXIS2-3457?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12560217#action_12560217
]
Amila Chinthaka Suriarachchi commented on AXIS2-3457:
-----------------------------------------------------
see WSDL11ToAxisServiceBuilder.java 675
if (isSetMessageQNames) {
addQNameReference(axisInMessage, wsdl4jOperation,
wsdl4jBindingInput,
wrappableOperations.contains(wsdl4jBindingOperation));
}
and addQNameReference Method
if (isWrapped) {
// we have already validated and process the qname references
// so set it here
// The schema for this should be already made ! Find the
// QName from
// the list and add it - the name for this is just the
message.setElementQName((QName) resolvedRpcWrappedElementMap
.get(rpcOperationName));
message.getAxisOperation().getAxisService().addMessageElementQNameToOperationMapping(
(QName) resolvedRpcWrappedElementMap.get(rpcOperationName),
message.getAxisOperation());
}
This is what happens. in the findWrappableBindingOperations method we find the
wrappable operations and put them to wrappableOperations list. And at the
createSchemaForPorttype method populate the resolvedRpcWrappedElementMap.
So it always expect a entry in the later map for all wrappable operations. so
simply ignoring the exception would cause a problem here.
On the other hand suspending that exception means we allow people to use
element attribute at the message part level. As I told you this is not
something that spec has not clearly mentioned. at least I could not find any
place.
So my suggestion is to throw that exception. But add a meaning full message.
we can simply pass another boolean attribute to the createSchemaForPorttype
method
(like boolean isHttpBinding) and if so change the exception message into
"Axis2 only supports type attribute at the part level for Http Binding".
> Incorrect Exception in WSDL11ToAxisServiceBuilder
> -------------------------------------------------
>
> Key: AXIS2-3457
> URL: https://issues.apache.org/jira/browse/AXIS2-3457
> Project: Axis 2.0 (Axis2)
> Issue Type: Bug
> Reporter: Rich Scheuerle
> Assignee: Rich Scheuerle
>
> Background
> WSDL11ToAxisServiceBuilder contains code to produce schema "wrapper" code
> for selected BindingOperations (i.e. RPC literal bindings).
>
> Problem:
> I have a WSDL with several bindings, one of them is an HTTP Binding. The
> current code determines that its BindingOperations require wrappering, but
> during the schema generation it throws the following error because it
> incorrectly assumes that the BindingOperation is RPC/literal.
> org.apache.axis2.description.WSDL11ToAxisServiceBuilder populateService
> RPC-literal type message part Body should have a type attribute
> Proposed Solution:
> I have just started working on this issue. My thought is to introduce a
> private inner class BindingOperationEntry. The BindingOperationEntry will
> contain the BindingOperation and information about the BindingOperation (i.e.
> isRPC()).
> The findWrappableBindingOperations(Binding binding) method will be changed to
> return a List of BindingOperationEntry instead of List of BindingOperation.
> Later processing can then easily distinguish between RPC and HTTP usage.
> In addition, I am going to upgrade the exception message (which confused the
> user) and add some additional trace.
> This solution has minimal impact on the existing structure of
> WSDL11ToAxisServiceBuilder, which is why I pursuing this approach.
> Comments ?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]