private void ParseWsdlPortTypeOperationContent(WsdlPortType portType, WsdlPortTypeOperation portTypeOperation) { Util.Log("WsdlParser.ParseWsdlPortTypeOperationContent type "+portType.name+" operationName "+portTypeOperation.name); int curDepth = _XMLReader.Depth; ReadNextXmlElement(); while (_XMLReader.Depth > curDepth) { String elementName = _XMLReader.LocalName; if (MatchingStrings(elementName, s_inputString)) { WsdlPortTypeOperationContent portContent = new WsdlPortTypeOperationContent(); portContent.element = Atomize("input"); portContent.name = LookupAttribute(s_nameString, null, false); if (MatchingStrings(portContent.name, s_emptyString)) { portContent.name = Atomize(portTypeOperation.name+"Request"); if (portType.sections.ContainsKey(portContent.name)) throw new SUDSParserException(String.Format(CultureInfo.CurrentCulture, CoreChannel.GetResourceString("Remoting_Suds_DuplicatePortTypesOperationName"), portTypeOperation.name)); portType.sections[portContent.name] = portTypeOperation; //for request response portType.sections[portTypeOperation.name] = portTypeOperation; // for one way don't know yet if one way or response } else { if (portType.sections.ContainsKey(portContent.name)) throw new SUDSParserException(String.Format(CultureInfo.CurrentCulture, CoreChannel.GetResourceString("Remoting_Suds_DuplicatePortSectionName"), portContent.name)); portType.sections[portContent.name] = portTypeOperation; } portContent.message = LookupAttribute(s_messageString, null, true); portContent.messageNs = ParseQName(ref portContent.message); portTypeOperation.contents.Add(portContent); ReadNextXmlElement(); continue; } else if (MatchingStrings(elementName, s_outputString)) { WsdlPortTypeOperationContent portContent = new WsdlPortTypeOperationContent(); portContent.element = Atomize("output"); portContent.name = LookupAttribute(s_nameString, null, false); portContent.nameNs = ParseQName(ref portContent.name); if (MatchingStrings(portContent.name, s_emptyString)) portContent.name = Atomize(portTypeOperation.name+"Response"); if (!portType.sections.ContainsKey(portContent.name)) portType.sections[portContent.name] = portTypeOperation; portContent.message = LookupAttribute(s_messageString, null, true); portContent.messageNs = ParseQName(ref portContent.message); portTypeOperation.contents.Add(portContent); ReadNextXmlElement(); continue; } // Ignore others elements such as annotations SkipXmlElement(); } }
private void ParseWsdlPortTypeOperationContent(WsdlPortType portType, WsdlPortTypeOperation portTypeOperation) { int depth = this._XMLReader.Depth; this.ReadNextXmlElement(); while (this._XMLReader.Depth > depth) { string localName = this._XMLReader.LocalName; if (MatchingStrings(localName, s_inputString)) { WsdlPortTypeOperationContent content = new WsdlPortTypeOperationContent { element = this.Atomize("input"), name = this.LookupAttribute(s_nameString, null, false) }; if (MatchingStrings(content.name, s_emptyString)) { content.name = this.Atomize(portTypeOperation.name + "Request"); if (portType.sections.ContainsKey(content.name)) { throw new SUDSParserException(string.Format(CultureInfo.CurrentCulture, CoreChannel.GetResourceString("Remoting_Suds_DuplicatePortTypesOperationName"), new object[] { portTypeOperation.name })); } portType.sections[content.name] = portTypeOperation; portType.sections[portTypeOperation.name] = portTypeOperation; } else { if (portType.sections.ContainsKey(content.name)) { throw new SUDSParserException(string.Format(CultureInfo.CurrentCulture, CoreChannel.GetResourceString("Remoting_Suds_DuplicatePortSectionName"), new object[] { content.name })); } portType.sections[content.name] = portTypeOperation; } content.message = this.LookupAttribute(s_messageString, null, true); content.messageNs = this.ParseQName(ref content.message); portTypeOperation.contents.Add(content); this.ReadNextXmlElement(); } else if (MatchingStrings(localName, s_outputString)) { WsdlPortTypeOperationContent content2; content2 = new WsdlPortTypeOperationContent { element = this.Atomize("output"), name = this.LookupAttribute(s_nameString, null, false), nameNs = this.ParseQName(ref content2.name) }; if (MatchingStrings(content2.name, s_emptyString)) { content2.name = this.Atomize(portTypeOperation.name + "Response"); } if (!portType.sections.ContainsKey(content2.name)) { portType.sections[content2.name] = portTypeOperation; } content2.message = this.LookupAttribute(s_messageString, null, true); content2.messageNs = this.ParseQName(ref content2.message); portTypeOperation.contents.Add(content2); this.ReadNextXmlElement(); } else { this.SkipXmlElement(); } } }