The soap:body of the output is about the OUTPUT, not the input.  So that would turn into the returnQName on the server side, nothing to do with the operation QName on the client side.  I.e. They're BOTH appropriate. :)
 
(c) is the same thing you implemented, just expressed a different way which doesn't tie it to the portType.  It so happens that the portType's ns is going to be the targetNS, but coding it that way implies more than is necessary.
 
--Glen
 
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Friday, June 07, 2002 5:23 PM
To: [EMAIL PROTECTED]
Subject: RE: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava Jav aStubWriter.java

But it was getting the namespace from the soap:body in the input clause. There was also a namespace explicitly defined in soap:body of the output clause. Why should we prefer input over output? And since there's a choice, it doesn't sound like EITHER is appropriate.

Why would c) be better than what I implemented? I guess I need some education here.

Russell Butek
[EMAIL PROTECTED]

Please respond to [EMAIL PROTECTED]

To: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]>
cc:
Subject: RE: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava Jav aStubWriter.java




Namespace for the operation should come from EITHER

a) <soap:body namespace=""> if it's present (and we're RPC encoded)

OR

c) target namespace of the document (the default if we're RPC encoded and there's no body namespace)

OR

d) the <element> declaration for doc/lit services

In other words, the WSDL in the bug report is wrong if he wants the "Ram" namespace, because it specifies in the <soap:body> tag to use the "validate" namespace for the input.

I think that code you removed should get put back... perhaps improved, but we need it.

--Glen

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Friday, June 07, 2002 4:59 PM
> To: [EMAIL PROTECTED]
> Subject: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava
> JavaStubWriter.java
>
>
> butek       2002/06/07 13:59:12
>
>   Modified:    java/src/org/apache/axis/wsdl/toJava
> JavaStubWriter.java
>   Log:
>   Fixed bugzilla 9643
>   (
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9643).
>
>   I'm still not sure getting the namespace for an operation
> from the portType
>   is the right thing to do, but it's better than what was
> there.  Where SHOULD
>   an operation's namespace come from?
>
>   Revision  Changes    Path
>   1.68      +3 -31
> xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java
>
>   Index: JavaStubWriter.java
>   ===================================================================
>   RCS file:
> /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSt
> ubWriter.java,v
>   retrieving revision 1.67
>   retrieving revision 1.68
>   diff -u -r1.67 -r1.68
>   --- JavaStubWriter.java 7 Jun 2002 13:14:34 -0000 1.67
>   +++ JavaStubWriter.java 7 Jun 2002 20:59:12 -0000 1.68
>   @@ -259,38 +259,10 @@
>                        break;
>                    }
>                }
>   -            // Get the namespace for the operation from
> the <soap:body>
>   +            // Get the namespace for the operation from
> the portType
>                // RJB: is this the right thing to do?
>   -            String namespace = "";
>   -            Iterator bindingMsgIterator = null;
>   -            BindingInput input = operation.getBindingInput();
>   -            BindingOutput output;
>   -            if (input != null) {
>   -                bindingMsgIterator =
>   -
> input.getExtensibilityElements().iterator();
>   -            }
>   -            else {
>   -                output = operation.getBindingOutput();
>   -                if (output != null) {
>   -                    bindingMsgIterator =
>   -
> output.getExtensibilityElements().iterator();
>   -                }
>   -            }
>   -            if (bindingMsgIterator != null) {
>   -                for (; bindingMsgIterator.hasNext();) {
>   -                    Object obj = bindingMsgIterator.next();
>   -                    if (obj instanceof SOAPBody) {
>   -                        namespace = ((SOAPBody)
> obj).getNamespaceURI();
>   -                        if (namespace == null) {
>   -                            namespace =
> symbolTable.getDefinition().
>   -                                    getTargetNamespace();
>   -                        }
>   -                        if (namespace == null)
>   -                            namespace = "";
>   -                        break;
>   -                    }
>   -                }
>   -            }
>   +            String namespace =
> portType.getQName().getNamespaceURI();
>   +
>                Operation ptOperation = operation.getOperation();
>                OperationType type = ptOperation.getStyle();
>
>
>
>
>

Reply via email to