Beispiel #1
0
        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();
         }
     }
 }
Beispiel #3
0
        private void ParseWsdlPortType()
        {
            Util.Log("WsdlParser.ParseWsdlPortType");
            WsdlPortType portType = new WsdlPortType();
            portType.name = LookupAttribute(s_nameString, null, true);
            //portType.nameNs = ParseQName(ref portType.name);
            int curDepth = _XMLReader.Depth; 
            ReadNextXmlElement();               
            while (_XMLReader.Depth > curDepth)
            {
                String elementName = _XMLReader.LocalName;

                if (MatchingStrings(elementName, s_operationString))
                {
                    WsdlPortTypeOperation portTypeOperation = new WsdlPortTypeOperation();
                    portTypeOperation.name = LookupAttribute(s_nameString, null, true);
                    portTypeOperation.nameNs = ParseQName(ref portTypeOperation.nameNs);
                    portTypeOperation.parameterOrder = LookupAttribute(s_parameterOrderString, null, false);
                    ParseWsdlPortTypeOperationContent(portType, portTypeOperation);
                    portType.operations.Add(portTypeOperation);
                    continue;
                }

                // Ignore others elements such as annotations
                SkipXmlElement();
            }
            wsdlPortTypes[portType.name] = portType;
        }
 private void ParseWsdlPortType()
 {
     WsdlPortType portType = new WsdlPortType {
         name = this.LookupAttribute(s_nameString, null, true)
     };
     int depth = this._XMLReader.Depth;
     this.ReadNextXmlElement();
     while (this._XMLReader.Depth > depth)
     {
         if (MatchingStrings(this._XMLReader.LocalName, s_operationString))
         {
             WsdlPortTypeOperation operation;
             operation = new WsdlPortTypeOperation {
                 name = this.LookupAttribute(s_nameString, null, true),
                 nameNs = this.ParseQName(ref operation.nameNs),
                 parameterOrder = this.LookupAttribute(s_parameterOrderString, null, false)
             };
             this.ParseWsdlPortTypeOperationContent(portType, operation);
             portType.operations.Add(operation);
         }
         else
         {
             this.SkipXmlElement();
         }
     }
     this.wsdlPortTypes[portType.name] = portType;
 }