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 }; }
/// <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" }; }
/// <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; }
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); }
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()) }; }
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()); } } } }