Example #1
0
 private static XmlSchemaElement CreateFaultElement(ResponseValueDefinition responseValueDefinition, FaultDefinition faultDefinition)
 {
     return(new XmlSchemaElement
     {
         Name = responseValueDefinition.FaultName,
         SchemaTypeName = new XmlQualifiedName(faultDefinition.Name.LocalName, faultDefinition.Name.NamespaceName)
     });
 }
Example #2
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
            };
        }
Example #3
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"
            };
        }
Example #4
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;
        }
Example #5
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);
        }
 public override void ExportResponseValueDefinition(ResponseValueDefinition responseValueDefinition)
 {
     responseValueDefinition.RuntimeType      = typeof(Stream);
     responseValueDefinition.UseXop           = true;
     responseValueDefinition.CustomAttributes = new[] { Tuple.Create(XName.Get("schema", XROAD_PROTOBUF_SCHEMA), GetPrototypeName()) };
 }
Example #7
0
        private XmlSchemaComplexType CreateOperationResponseSchemaType(ResponseValueDefinition definition, XmlSchemaElement requestElement, XmlSchemaElement responseElement, FaultDefinition faultDefinition)
        {
            if (definition.ContainsNonTechnicalFault)
            {
                return new XmlSchemaComplexType {
                           Particle = new XmlSchemaSequence {
                               Items = { requestElement, responseElement }
                           }
                }
            }
            ;

            if ("unbounded".Equals(responseElement.MaxOccursString) || responseElement.MaxOccurs > 1)
            {
                responseElement = new XmlSchemaElement
                {
                    Name       = definition.ResponseElementName,
                    SchemaType = new XmlSchemaComplexType {
                        Particle = new XmlSchemaSequence {
                            Items = { responseElement }
                        }
                    }
                }
            }
            ;
            else
            {
                responseElement.Name = definition.ResponseElementName;
            }

            var complexTypeSequence = new XmlSchemaSequence();

            if (definition.DeclaringOperationDefinition.CopyRequestPartToResponse)
            {
                complexTypeSequence.Items.Add(requestElement);
            }

            switch (definition.XRoadFaultPresentation)
            {
            case XRoadFaultPresentation.Choice:
                complexTypeSequence.Items.Add(new XmlSchemaChoice {
                    Items = { responseElement, CreateFaultElement(definition, faultDefinition) }
                });
                break;

            case XRoadFaultPresentation.Explicit:
                responseElement.MinOccurs = 0;
                var faultElement = CreateFaultElement(definition, faultDefinition);
                faultElement.MinOccurs = 0;
                complexTypeSequence.Items.Add(responseElement);
                complexTypeSequence.Items.Add(faultElement);
                break;

            case XRoadFaultPresentation.Implicit:
                complexTypeSequence.Items.Add(responseElement);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(new XmlSchemaComplexType {
                Particle = complexTypeSequence
            });
        }