[jira] Created: (WSIF-93) WSIFException: Method nnn not found in PortType, is thrown by the web service if the Input Message is wrapped message (i.e. Input is a Complex Java Type)

"Girish Kapoor (JIRA)" <[email protected]> Mon, 25 Feb 2008 13:46:51 -0800 (PST)
Newsgroups gmane.comp.apache.webservices.wsif.devel
Message-ID <1063360621.1203976011138.JavaMail.jira@brutus>
WSIFException: Method nnn not found in PortType, is thrown by the web service if the Input Message is wrapped message (i.e. Input is a Complex Java Type)
---------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: WSIF-93
                 URL: https://issues.apache.org/jira/browse/WSIF-93
             Project: Axis-WSIF
          Issue Type: Bug
          Components: Basic Architecture
    Affects Versions: 2.0, 2.1, future
            Reporter: Girish Kapoor


WSIFException: Method nnn not found in PortType, is thrown by the web service if the Input Message is wrapped message (i.e. Input is a Complex Java Type)
This issue can be fixed by changing the following code in the WSIFClientProxy class:
In the method: Object invoke(Object proxy, Method method, Object[] args), Line 291 existing code is:
        if (inputParts.size() != args.length) {
                unWrapIfWrappedDocLit(inputParts, operation.getName());
        }
This needs to be replaced by the following code:
         boolean foundWrappedMessage = inputMessage.getPart("parameters") != null 
				&& inputMessage.getParts() != null && inputMessage.getParts().size() == 1;
       	
         if (inputParts.size() != args.length || foundWrappedMessage) {
                unWrapIfWrappedDocLit(inputParts, operation.getName());
         }

In the method: Operation findMatchingOperation(Method method, Object[] args), Line 469 existing code is:
            // No match if there are different numbers of parameters
            if (types != null && (numInputParts != types.length)) {
                unWrapIfWrappedDocLit(inputParts, operation.getName());
                numInputParts = inputParts.size();
                if (numInputParts != types.length) {
                    continue;
                }
            }
This needs to be replaced by the following code:
            boolean foundWrappedMessage = inputMessage.getPart("parameters") != null 
				&& inputMessage.getParts() != null && inputMessage.getParts().size() == 1;
            
            if (types != null && (numInputParts != types.length || foundWrappedMessage)) {
                unWrapIfWrappedDocLit(inputParts, operation.getName());
                numInputParts = inputParts.size();
                if (numInputParts != types.length) {
                    continue;
                }
            }


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.