I am pretty sure I refactored this exact code (in another place?) in to a function 
just last week.  See getOperationQName() in toJava.Utils.  This code should use that 
function and it should follow what Glen said below (which I believe it does).

Sorry I didn't realize there was duplicate code when I extracted the function.

--
Tom Jordahl
Macromedia


-----Original Message-----
From: Glen Daniels [mailto:[EMAIL PROTECTED]]
Sent: Friday, June 07, 2002 5:05 PM
To: '[EMAIL PROTECTED]'
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