Esempio n. 1
0
        internal Endpoint(Port port, TinyXdto.XdtoFactory factory)
        {
            Documentation = port.Documentation;
            Name          = port.Name;

            foreach (var extension in port.Extensions)
            {
                if (extension is SoapAddressBinding)
                {
                    Location = (extension as SoapAddressBinding).Location;
                }
            }

            // TODO: Проверить логику поиска
            foreach (var oBinding in port.Service.ServiceDescription.Bindings)
            {
                var binding = oBinding as Binding;
                if (binding.Name.Equals(port.Binding.Name))
                {
                    foreach (var oPortType in port.Service.ServiceDescription.PortTypes)
                    {
                        var portType = oPortType as PortType;
                        if (portType.Name.Equals(binding.Type.Name))
                        {
                            Interface = new Interface(portType, factory);
                            break;
                        }
                    }
                }
            }
        }
Esempio n. 2
0
 internal Interface(PortType portType, TinyXdto.XdtoFactory factory)
 {
     Documentation = portType.Documentation;
     Name          = portType.Name;
     NamespaceURI  = portType.ServiceDescription.TargetNamespace;
     Operations    = OperationCollection.Create(portType.Operations, factory);
 }
Esempio n. 3
0
 internal Service(System.Web.Services.Description.Service service, TinyXdto.XdtoFactory factory)
 {
     Name          = service.Name;
     NamespaceURI  = service.ServiceDescription.TargetNamespace;
     Documentation = service.Documentation;
     Endpoints     = EndpointCollection.Create(service.Ports, factory);
 }
Esempio n. 4
0
        internal static EndpointCollection Create(PortCollection portCollection, TinyXdto.XdtoFactory factory)
        {
            var ports = new List <Endpoint> ();

            foreach (var mPort in portCollection)
            {
                var port = mPort as Port;
                ports.Add(new Endpoint(port, factory));
            }
            return(new EndpointCollection(ports));
        }
Esempio n. 5
0
        internal static OperationCollection Create(System.Web.Services.Description.OperationCollection data, TinyXdto.XdtoFactory factory)
        {
            var operations = new List <Operation> ();

            foreach (var oOperation in data)
            {
                var operation = oOperation as System.Web.Services.Description.Operation;
                operations.Add(new Operation(operation, factory));
            }

            return(new OperationCollection(operations));
        }
Esempio n. 6
0
        internal static ServiceCollection Create(System.Web.Services.Description.ServiceCollection collection, TinyXdto.XdtoFactory factory)
        {
            IList <Service> list = new List <Service>();

            foreach (System.Web.Services.Description.Service service in collection)
            {
                list.Add(new Service(service, factory));
            }
            return(new ServiceCollection(list));
        }
Esempio n. 7
0
        internal static ParameterCollection Create(OperationInput operation, ReturnValue returnValue, TinyXdto.XdtoFactory factory)
        {
            var data  = new List <Parameter> ();
            var parts = new List <MessagePartProxy> ();

            var def = operation.Operation.PortType.ServiceDescription;

            var message = def.Messages [operation.Message.Name];

            foreach (var oPart in message.Parts)
            {
                var parametersPart = oPart as MessagePart;

                var partParameters = new List <Parameter> ();
                foreach (var oSchema in def.Types.Schemas)
                {
                    var schema = oSchema as XmlSchema;

                    var type = schema.Elements [parametersPart.Element] as XmlSchemaElement;
                    if (type == null)
                    {
                        continue;
                    }

                    var items = ((type.SchemaType as XmlSchemaComplexType).Particle as XmlSchemaSequence).Items;

                    foreach (var item in items)
                    {
                        var element   = item as XmlSchemaElement;
                        var direction = returnValue.OutputParamNames.Contains(element.Name)
                                                                                                   ? ParameterDirectionEnum.InOut
                                                                                                   : ParameterDirectionEnum.In
                        ;

                        partParameters.Add(new Parameter(element, direction, factory));
                    }
                }

                data.AddRange(partParameters);
                parts.Add(new MessagePartProxy {
                    Parameters   = partParameters,
                    Name         = parametersPart.Name,
                    ElementName  = parametersPart.Element.Name,
                    NamespaceUri = parametersPart.Element.Namespace
                });
            }

            // TODO: добавить ТОЛЬКО выходные параметры

            return(new ParameterCollection(data, parts));
        }