Пример #1
0
            internal void AddParam(URTParam newParam)
            {
                Util.Log("URTMethod.AddParam "+newParam.Name);
                for (int i=0;i<_params.Count;i++)
                {
                    URTParam extParam = (URTParam) _params[i];
                    if (WsdlParser.MatchingStrings(extParam.Name, newParam.Name))
                    {
                        if (extParam.ParamType == URTParamType.IN &&
                            newParam.ParamType == URTParamType.OUT &&
                            WsdlParser.MatchingStrings(extParam.TypeName, newParam.TypeName) &&
                            WsdlParser.MatchingStrings(extParam.TypeNS, newParam.TypeNS))
                        {
                            extParam.ParamType = URTParamType.REF;
                            return;
                        }

                        throw new SUDSParserException(CoreChannel.GetResourceString("Remoting_Suds_DuplicateParameter"));
                    }
                }

                // Find parameter position
                int paramPosition = -1;
                if (_paramNamesOrder != null)
                {
                    // Parameter order find the parameter position or determine if the parameter is a return value
                    for (int i=0; i<_paramNamesOrder.Length; i++)
                    {
                        if (_paramNamesOrder[i] == newParam.Name)
                        {
                            paramPosition = i;
                            break;
                        }
                    }

                    if (paramPosition == -1)
                    {
                        // return value
                        _methodType = newParam;
                    }
                    else
                    {
                        // Parameter, add the correct position
                        //_params[paramPosition] = newParam; // _params array list is the size of the parameters.
                        _params.Add(newParam);
                        _paramPosition.Add(paramPosition);
                    }
                }
                else
                {
                    // no parameterOrder in wsdl, do the best we can to determine if there is a return value
                    if ((_methodType == null) && (newParam.ParamType == URTParamType.OUT))
                    {
                        // return value
                        _methodType = newParam;
                    }
                    else
                    {
                        // parameter put as the next parameter
                        _params.Add(newParam);
                    }
                }
            }
Пример #2
0
            internal void AddParam(URTParam newParam)
            {
                Util.Log("URTMethod.AddParam "+newParam.Name);
                for(int i=0;i<_params.Count;i++)
                {
                    URTParam extParam = (URTParam) _params[i];
                    if(SdlParser.MatchingStrings(extParam.Name, newParam.Name))
                    {
                        if(extParam.ParamType == URTParamType.IN &&
                           newParam.ParamType == URTParamType.OUT &&
                           SdlParser.MatchingStrings(extParam.TypeName, newParam.TypeName) &&
                           SdlParser.MatchingStrings(extParam.TypeNS, newParam.TypeNS))
                        {
                            extParam.ParamType = URTParamType.REF;
                            return;
                        }

                        throw new SUDSParserException(CoreChannel.GetResourceString("Remoting_Suds_DuplicateParameter"));
                    }
                }

                if((_methodType == null) && (newParam.ParamType == URTParamType.OUT))
                {
                    _methodType = newParam;
                    return;
                }

                _params.Add(newParam);
                return;
            }