Ejemplo n.º 1
0
        public TestSystemServiceMap(XName operationName)
        {
            var methodInfo = typeof(Implementation).GetTypeInfo().GetMethod("Execute");

            OperationDefinition     = new OperationDefinition(operationName, null, methodInfo);
            RequestValueDefinition  = new RequestValueDefinition(OperationDefinition);
            ResponseValueDefinition = new ResponseValueDefinition(OperationDefinition)
            {
                ContainsNonTechnicalFault = true
            };
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initialize new `listMethods` service map.
        /// </summary>
        public ListMethodsServiceMap(XName operationName)
        {
            var methodInfo = typeof(Implementation).GetTypeInfo().GetMethod("Execute");

            OperationDefinition     = new OperationDefinition(operationName, null, methodInfo);
            RequestValueDefinition  = new RequestValueDefinition(OperationDefinition);
            ResponseValueDefinition = new ResponseValueDefinition(OperationDefinition)
            {
                ContainsNonTechnicalFault = true,
                ResponseElementName       = operationName.NamespaceName == NamespaceConstants.XTEE ? "keha" : "response"
            };
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Initializes new ServiceMap entity using settings specified in operationDefinition.
        /// <param name="serializerCache">Provides TypeMap lookup.</param>
        /// <param name="operationDefinition">Operation which this ServiceMap represents.</param>
        /// <param name="requestValueDefinition">Defines operation request message.</param>
        /// <param name="responseValueDefinition">Defines operation response message.</param>
        /// <param name="inputTypeMap">Default TypeMap of the operation request root element.</param>
        /// <param name="outputTypeMap"> Default TypeMap of the operation response root element.</param>
        /// </summary>
        public ServiceMap(ISerializerCache serializerCache, OperationDefinition operationDefinition, RequestValueDefinition requestValueDefinition, ResponseValueDefinition responseValueDefinition, ITypeMap inputTypeMap, ITypeMap outputTypeMap)
        {
            this.serializerCache = serializerCache;

            RequestValueDefinition  = requestValueDefinition;
            ResponseValueDefinition = responseValueDefinition;
            OperationDefinition     = operationDefinition;

            var inputContentTypeMap = inputTypeMap as IContentTypeMap;

            this.inputTypeMap = inputContentTypeMap != null && requestValueDefinition.UseXop ? inputContentTypeMap.GetOptimizedContentTypeMap() : inputTypeMap;

            var outputContentTypeMap = outputTypeMap as IContentTypeMap;

            this.outputTypeMap = outputContentTypeMap != null && responseValueDefinition.UseXop ? outputContentTypeMap.GetOptimizedContentTypeMap() : outputTypeMap;
        }
Ejemplo n.º 4
0
        public ProtoBufServiceMap(ISerializerCache serializerCache, OperationDefinition operationDefinition, RequestValueDefinition requestValueDefinition, ResponseValueDefinition responseValueDefinition, ITypeMap inputTypeMap, ITypeMap outputTypeMap)
            : base(serializerCache, operationDefinition, requestValueDefinition, responseValueDefinition, inputTypeMap, outputTypeMap)
        {
            var requestType  = RequestValueDefinition.ParameterInfo?.ParameterType;
            var responseType = ResponseValueDefinition.ParameterInfo?.ParameterType;

            readRequestMethod   = BuildReadValueMethod(requestType);
            readResponseMethod  = BuildReadValueMethod(responseType);
            writeRequestMethod  = BuildWriteValueMethod(requestType);
            writeResponseMethod = BuildWriteValueMethod(responseType);
        }
Ejemplo n.º 5
0
 public override void ExportRequestValueDefinition(RequestValueDefinition requestValueDefinition)
 {
     requestValueDefinition.RuntimeType      = typeof(Stream);
     requestValueDefinition.UseXop           = true;
     requestValueDefinition.CustomAttributes = new[] { Tuple.Create(XName.Get("schema", XROAD_PROTOBUF_SCHEMA), GetPrototypeName()) };
 }
Ejemplo n.º 6
0
        public void SerializeWithContext <T>(string elementName, T value, uint dtoVersion, bool addEnvelope, bool isMultipart, Action <XRoadMessage, string> f)
        {
            var message = Globals.XRoadProtocol20.CreateMessage();

            message.IsMultipartContainer = true;
            message.BinaryMode           = BinaryMode.Attachment;

            using (message)
                using (var stream = new MemoryStream())
                    using (var tw = new StreamWriter(stream, Encoding.UTF8))
                        using (var writer = XmlWriter.Create(tw))
                        {
                            if (addEnvelope)
                            {
                                writer.WriteStartElement("Envelope");
                                writer.WriteAttributeString("xmlns", PrefixConstants.SOAP_ENC, NamespaceConstants.XMLNS, NamespaceConstants.SOAP_ENC);
                                writer.WriteAttributeString("xmlns", PrefixConstants.XSI, NamespaceConstants.XMLNS, NamespaceConstants.XSI);
                                writer.WriteAttributeString("xmlns", PrefixConstants.XSD, NamespaceConstants.XMLNS, NamespaceConstants.XSD);
                                writer.WriteAttributeString("xmlns", "tns", NamespaceConstants.XMLNS, Globals.XRoadProtocol20.ProducerNamespace);
                            }

                            writer.WriteStartElement(elementName);

                            var propType   = typeof(X <>).MakeGenericType(typeof(T));
                            var methodInfo = propType.GetTypeInfo().GetMethod("Method");

                            var operationDefinition = new OperationDefinition("Method", null, methodInfo);

                            var requestValueDefinition = new RequestValueDefinition(operationDefinition);
                            if (typeof(T).IsArray)
                            {
                                requestValueDefinition.ArrayItemDefinition = new ArrayItemDefinition(requestValueDefinition)
                                {
                                    Name = XName.Get("item")
                                }
                            }
                            ;

                            var typeMap = Globals.XRoadProtocol20.GetSerializerCache(dtoVersion).GetTypeMap(typeof(T));
                            typeMap.Serialize(writer, XRoadXmlTemplate.EmptyNode, value, requestValueDefinition, message);

                            writer.WriteEndElement();

                            if (addEnvelope)
                            {
                                writer.WriteEndElement();
                            }

                            writer.Flush();

                            stream.Position = 0;
                            using (var reader = new StreamReader(stream))
                            {
                                if (!addEnvelope)
                                {
                                    f(message, reader.ReadToEnd());
                                    return;
                                }

                                using (var xmlReader = XmlReader.Create(reader))
                                {
                                    xmlReader.MoveToElement(0, "Envelope", "");
                                    f(message, xmlReader.ReadInnerXml());
                                }
                            }
                        }
        }