internal void ResolveTypes(SdlParser parser)
{
Util.Log("URTComplexType.ResolveTypes "+Name+" _baseTypeName "+_baseTypeName+" IsSUDSType "+IsSUDSType);
String baseTypeNS = null;
String baseTypeAssemName = null;
if(_baseTypeName != null)
{
Util.Log("URTComplexType.ResolveTypes 1 ");
UrtType urtType = parser.IsURTExportedType(_baseTypeXmlNS, out baseTypeNS, out baseTypeAssemName);
if ((urtType == UrtType.Interop) && baseTypeNS.StartsWith("System"))
{
_baseType = new SystemType(_baseTypeName, baseTypeNS, baseTypeAssemName);
}
else
{
URTNamespace ns = parser.LookupNamespace(_baseTypeXmlNS);
if(ns == null)
{
throw new SUDSParserException(
String.Format(CoreChannel.GetResourceString("Remoting_Suds_CantResolveSchemaNS"),
_baseTypeXmlNS));
}
_baseType = ns.LookupComplexType(_baseTypeName);
if(_baseType == null)
{
throw new SUDSParserException(
String.Format(CoreChannel.GetResourceString("Remoting_Suds_CantResolveTypeInNS"),
_baseTypeName, _baseTypeXmlNS));
}
}
}
else if(IsSUDSType)
{
Util.Log("URTComplexType.ResolveTypes 2 SUDSType "+ ((Enum)_sudsType).ToString());
if (_sudsType == SUDSType.ClientProxy)
{
Util.Log("URTComplexType.ResolveTypes 3 ");
_baseTypeName = "RemotingClientProxy";
_baseTypeXmlNS = SoapServices.CodeXmlNamespaceForClrTypeNamespace("System.Runtime.Remoting","System.Runtime.Remoting");
baseTypeNS = "System.Runtime.Remoting.Services";
baseTypeAssemName = "System.Runtime.Remoting";
}
else if (_sudsType == SUDSType.MarshalByRef)
{
Util.Log("URTComplexType.ResolveTypes 4 ");
_baseTypeName = "MarshalByRefObject";
_baseTypeXmlNS = SoapServices.CodeXmlNamespaceForClrTypeNamespace("System", null);
baseTypeNS = "System";
baseTypeAssemName = null;
}
_baseType = new SystemType(_baseTypeName, baseTypeNS, baseTypeAssemName);
}
else
{
Util.Log("URTComplexType.ResolveTypes 5 ");
_baseType = new SystemType("Object", "System", null);
}
for(int i=0;i<_implIFaceNames.Count;i=i+2)
{
String implIFaceName = (String) _implIFaceNames[i];
String implIFaceXmlNS = (String) _implIFaceNames[i+1];
String implIFaceNS, implIFaceAssemName;
BaseInterface iFace;
UrtType iType = parser.IsURTExportedType(implIFaceXmlNS, out implIFaceNS,
out implIFaceAssemName);
if ((iType == UrtType.UrtSystem) && implIFaceNS.StartsWith("System"))
{
iFace = new SystemInterface(implIFaceName, implIFaceNS);
}
else
{
URTNamespace ns = parser.LookupNamespace(implIFaceXmlNS);
if(ns == null)
{
throw new SUDSParserException(
String.Format(CoreChannel.GetResourceString("Remoting_Suds_CantResolveSchemaNS"),
implIFaceXmlNS));
}
iFace = ns.LookupInterface(implIFaceName);
if(iFace == null)
{
throw new SUDSParserException(
String.Format(CoreChannel.GetResourceString("Remoting_Suds_CantResolveTypeInNS"),
implIFaceName, implIFaceXmlNS));
}
}
_implIFaces.Add(iFace);
}
for(int i=0;i<_methods.Count;i++)
((URTMethod) _methods[i]).ResolveTypes(parser);
}