コード例 #1
0
ファイル: WsdlParser.cs プロジェクト: JianwenSun/cc
            internal void Implements(String iFaceName, String iFaceNS, WsdlParser parser)
            {
                Util.Log("URTComplexType.Implements IFaceName "+iFaceName+" iFaceNS "+iFaceNS);
                _implIFaceNames.Add(iFaceName);
                _implIFaceNames.Add(iFaceNS);
                // Urt namespace will not have schema, they need to be recorded.
                URTNamespace parsingNamespace = parser.AddNewNamespace(iFaceNS);
                /*
                if (parsingNamespace == null)
                {
                    parsingNamespace = new URTNamespace(iFaceNS, parser);
                }
                */

                URTInterface parsingInterface = parsingNamespace.LookupInterface(iFaceName);            
                if (parsingInterface == null)
                {
                    parsingInterface = new URTInterface(iFaceName, parsingNamespace.Name, parsingNamespace.Namespace, parsingNamespace.EncodedNS, _parser);                    
                    parsingNamespace.AddInterface(parsingInterface);
                }
            }
コード例 #2
0
ファイル: WsdlParser.cs プロジェクト: JianwenSun/cc
 // Adds a new interface into the namespace
 internal void AddInterface(URTInterface iface){
     Util.Log("URTNamespace.AddInterface "+iface.Name);              
     _URTInterfaces.Add(iface);
 }
コード例 #3
0
ファイル: WsdlParser.cs プロジェクト: JianwenSun/cc
            internal void Extends(String baseName, String baseNS, WsdlParser parser)
            {
                Util.Log("URTInterface.Extends baseName "+baseName+" baseNSf "+baseNS);
                _baseIFaceNames.Add(baseName);
                _baseIFaceNames.Add(baseNS);
                // Urt namespace will not have schema, they need to be recorded.
                URTNamespace parsingNamespace = parser.AddNewNamespace(baseNS);
                /*
                if (parsingNamespace == null)
                {
                    parsingNamespace = new URTNamespace(baseNS, parser);
                }
                */

                URTInterface parsingInterface = parsingNamespace.LookupInterface(baseName);         
                if (parsingInterface == null)
                {
                    parsingInterface = new URTInterface(baseName, parsingNamespace.Name, parsingNamespace.Namespace, parsingNamespace.EncodedNS, parser);                  
                    parsingNamespace.AddInterface(parsingInterface);
                }
                _extendsInterface.Add(parsingInterface);
            }
コード例 #4
0
ファイル: WsdlParser.cs プロジェクト: JianwenSun/cc
        private void ResolveWsdlInterface(WsdlBinding binding, WsdlBindingSuds suds)
        {
            Util.Log("WsdlParser.ResolveWsdlInterface "+binding.name+" ns "+binding.parsingNamespace.Namespace+" suds "+suds.typeName);

            URTNamespace parsingNamespace = binding.parsingNamespace;

            URTNamespace sudsNamespace = AddNewNamespace(suds.ns);
            /*
            if (sudsNamespace == null)
            {
                sudsNamespace = new URTNamespace(suds.ns, this);
            }
            */

            URTInterface parsingInterface = sudsNamespace.LookupInterface(suds.typeName);           
            if (parsingInterface == null)
            {
                parsingInterface = new URTInterface(suds.typeName, sudsNamespace.Name, sudsNamespace.Namespace, sudsNamespace.EncodedNS, this);
                sudsNamespace.AddInterface(parsingInterface);
            }

            if (suds.extendsTypeName != null)
            {
                parsingInterface.Extends(suds.extendsTypeName, suds.extendsNs, this);
            }
            foreach (WsdlBindingSudsImplements impl in suds.implements)
            {
                parsingInterface.Extends(impl.typeName, impl.ns, this);             
            }

            ArrayList methodInfos = ResolveWsdlMethodInfo(binding);

            foreach (WsdlMethodInfo methodInfo in methodInfos)          
            {
                if ((methodInfo.inputMethodName != null) && (methodInfo.outputMethodName != null))
                {
                    RRMethod parsingRRMethod = new RRMethod(methodInfo, null);
                    parsingRRMethod.AddRequest(methodInfo.methodName, methodInfo.methodNameNs);
                    parsingRRMethod.AddResponse(methodInfo.methodName, methodInfo.methodNameNs);
                    parsingInterface.AddMethod(parsingRRMethod);
                }
                else if (methodInfo.inputMethodName != null)
                {
                    OnewayMethod parsingOWMethod = new OnewayMethod(methodInfo.methodName, methodInfo.soapAction, null);
                    parsingOWMethod.AddMessage(methodInfo.methodName, methodInfo.methodNameNs);                 
                    parsingInterface.AddMethod(parsingOWMethod);
                }
                else
                {
                    throw new SUDSParserException(
                                                 String.Format(CultureInfo.CurrentCulture, CoreChannel.GetResourceString("Remoting_Suds_WsdlInvalidMessage"),
                                                               methodInfo.methodName));

                }
            }
        }
コード例 #5
0
 private void ResolveWsdlInterface(WsdlBinding binding, WsdlBindingSuds suds)
 {
     URTNamespace parsingNamespace = binding.parsingNamespace;
     URTNamespace namespace2 = this.AddNewNamespace(suds.ns);
     URTInterface iface = namespace2.LookupInterface(suds.typeName);
     if (iface == null)
     {
         iface = new URTInterface(suds.typeName, namespace2.Name, namespace2.Namespace, namespace2.EncodedNS, this);
         namespace2.AddInterface(iface);
     }
     if (suds.extendsTypeName != null)
     {
         iface.Extends(suds.extendsTypeName, suds.extendsNs, this);
     }
     foreach (WsdlBindingSudsImplements implements in suds.implements)
     {
         iface.Extends(implements.typeName, implements.ns, this);
     }
     foreach (WsdlMethodInfo info in this.ResolveWsdlMethodInfo(binding))
     {
         if ((info.inputMethodName == null) || (info.outputMethodName == null))
         {
             if (info.inputMethodName == null)
             {
                 throw new SUDSParserException(string.Format(CultureInfo.CurrentCulture, CoreChannel.GetResourceString("Remoting_Suds_WsdlInvalidMessage"), new object[] { info.methodName }));
             }
             OnewayMethod method2 = new OnewayMethod(info.methodName, info.soapAction, null);
             method2.AddMessage(info.methodName, info.methodNameNs);
             iface.AddMethod(method2);
         }
         else
         {
             RRMethod method = new RRMethod(info, null);
             method.AddRequest(info.methodName, info.methodNameNs);
             method.AddResponse(info.methodName, info.methodNameNs);
             iface.AddMethod(method);
         }
     }
 }
コード例 #6
0
        // Parses a oneway method
        private void ParseOnewayMethod(URTComplexType parsingComplexType, URTInterface parsingInterface)
        {
            Util.Log("SdlParser.ParseOnewayMethod");            
            String methodName = LookupAttribute(s_nameString, null, true);
            String soapAction = LookupAttribute(s_soapActionString, null, false);
            OnewayMethod parsingMethod = new OnewayMethod(methodName, soapAction);
            int curDepth = _XMLReader.Depth;
            ReadNextXmlElement();
            while(_XMLReader.Depth > curDepth)
            {
                if (MatchingNamespace(s_sudsNamespaceString))
                {
                    String elmName = _XMLReader.LocalName;
                    if(MatchingStrings(elmName, s_requestString))
                    {
                        String refValue = LookupAttribute(s_refString, null, true);
                        String refNS = ParseQName(ref refValue);
                        parsingMethod.AddMessage(refValue, refNS);
                        ReadNextXmlElement();
                        continue;
                    }
                }

                // Ignore others elements such as annotations
                SkipXmlElement();
            }
            if(parsingComplexType != null)
                parsingComplexType.AddMethod(parsingMethod);
            else
                parsingInterface.AddMethod(parsingMethod);

            return;
        }
コード例 #7
0
        // Parses an interface
        private void ParseInterface(URTNamespace parsingNamespace)
        {
            Util.Log("SdlParser.ParseInterface");           
            String intfName = LookupAttribute(s_nameString, null, true);
            URTInterface parsingInterface = parsingNamespace.LookupInterface(intfName);

            if (parsingInterface == null)
            {
                parsingInterface = new URTInterface(intfName, parsingNamespace.Namespace, parsingNamespace.EncodedNS);              
                parsingNamespace.AddInterface(parsingInterface);                
            }

            int curDepth = _XMLReader.Depth;
            ReadNextXmlElement();
            while(_XMLReader.Depth > curDepth)
            {
                if(MatchingNamespace(s_sudsNamespaceString))
                {
                    String elmName = _XMLReader.LocalName;
                    if(MatchingStrings(elmName, s_extendsString))
                    {
                        String nameValue = LookupAttribute(s_nameString, null, true);
                        String nameValueNS = ParseQName(ref nameValue);
                        parsingInterface.Extends(nameValue, nameValueNS, this);
                        ReadNextXmlElement();
                        continue;
                    }
                    else if(MatchingStrings(elmName, s_requestResponseString))
                    {
                        ParseRRMethod(null, parsingInterface);
                        continue;
                    }
                    else if(MatchingStrings(elmName, s_onewayString))
                    {
                        ParseOnewayMethod(null, parsingInterface);
                        continue;
                    }
                }

                // Ignore others elements such as annotations
                SkipXmlElement();
            }

            return;
        }