private void ResolveWsdlNestedType(WsdlBinding binding, WsdlBindingSuds suds, WsdlBindingSudsNestedType nested)
{
Util.Log("WsdlParser.ResolveWsdlNestedType "+binding.name+" ns "+binding.parsingNamespace.Namespace+" suds "+suds.typeName+" nestedName "+nested.name+" nestedTypeName "+nested.typeName);
String className = suds.typeName;
String ns = nested.ns;
String nestedName = nested.name;
String nestedTypeName = nested.typeName;
if (suds.ns != ns)
{
throw new SUDSParserException(
String.Format(CultureInfo.CurrentCulture, CoreChannel.GetResourceString("Remoting_Suds_CantResolveNestedTypeNS"),
suds.typeName, suds.ns));
}
URTNamespace sudsNamespace = AddNewNamespace(suds.ns);
URTComplexType outerType = sudsNamespace.LookupComplexType(suds.typeName);
if (outerType == null)
{
throw new SUDSParserException(
String.Format(CultureInfo.CurrentCulture, CoreChannel.GetResourceString("Remoting_Suds_CantResolveNestedType"),
suds.typeName, suds.ns));
}
BaseType innerType = sudsNamespace.LookupType(nested.typeName);
if (innerType == null)
{
// Can be URTSimpleType for Enum
Util.Log("WsdlParser.ResolveWsdlNestedType cann't find inner type "+nested.typeName+" className "+className+" ns "+ns);
innerType = sudsNamespace.LookupComplexType(nested.typeName);
if (innerType == null)
{
innerType = new URTComplexType(nested.typeName, sudsNamespace.Name, sudsNamespace.Namespace, sudsNamespace.EncodedNS, _blockDefault ,false, false, this, sudsNamespace);
sudsNamespace.AddComplexType((URTComplexType)innerType);
}
}
innerType.bNestedType = true;
innerType.NestedTypeName = nested.name;
innerType.FullNestedTypeName = nested.typeName;
innerType.OuterTypeName = suds.typeName;
outerType.AddNestedType(innerType);
}