DataContractSerializerMessageContractImporter.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. //-----------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //-----------------------------------------------------------------------------
  4. namespace System.ServiceModel.Description
  5. {
  6. using System;
  7. using System.ServiceModel.Channels;
  8. using System.Collections;
  9. using System.Collections.Generic;
  10. using System.Text;
  11. using System.ServiceModel;
  12. using System.Runtime.Serialization;
  13. using System.Xml;
  14. using System.Xml.Schema;
  15. using System.CodeDom;
  16. using WsdlNS = System.Web.Services.Description;
  17. using System.Xml.Serialization;
  18. public class DataContractSerializerMessageContractImporter : IWsdlImportExtension
  19. {
  20. bool enabled = true;
  21. internal const string GenericMessageSchemaTypeName = "MessageBody";
  22. internal const string GenericMessageSchemaTypeNamespace = "http://schemas.microsoft.com/Message";
  23. const string StreamBodySchemaTypeName = "StreamBody";
  24. const string StreamBodySchemaTypeNamespace = GenericMessageSchemaTypeNamespace;
  25. static internal XmlQualifiedName GenericMessageTypeName = new XmlQualifiedName(GenericMessageSchemaTypeName, GenericMessageSchemaTypeNamespace);
  26. static internal XmlQualifiedName StreamBodyTypeName = new XmlQualifiedName(StreamBodySchemaTypeName, StreamBodySchemaTypeNamespace);
  27. void IWsdlImportExtension.ImportEndpoint(WsdlImporter importer, WsdlEndpointConversionContext endpointContext)
  28. {
  29. if (endpointContext == null)
  30. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("endpointContext"));
  31. if (enabled)
  32. MessageContractImporter.ImportMessageBinding(importer, endpointContext, typeof(MessageContractImporter.DataContractSerializerSchemaImporter));
  33. }
  34. void IWsdlImportExtension.ImportContract(WsdlImporter importer, WsdlContractConversionContext contractContext)
  35. {
  36. if (contractContext == null)
  37. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("contractContext"));
  38. if (enabled)
  39. MessageContractImporter.ImportMessageContract(importer, contractContext, MessageContractImporter.DataContractSerializerSchemaImporter.Get(importer));
  40. }
  41. void IWsdlImportExtension.BeforeImport(WsdlNS.ServiceDescriptionCollection wsdlDocuments, XmlSchemaSet xmlSchemas, ICollection<XmlElement> policy) { }
  42. public bool Enabled
  43. {
  44. get { return this.enabled; }
  45. set { this.enabled = value; }
  46. }
  47. }
  48. public class XmlSerializerMessageContractImporter : IWsdlImportExtension
  49. {
  50. void IWsdlImportExtension.ImportEndpoint(WsdlImporter importer, WsdlEndpointConversionContext endpointContext)
  51. {
  52. if (endpointContext == null)
  53. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("endpointContext"));
  54. MessageContractImporter.ImportMessageBinding(importer, endpointContext, typeof(MessageContractImporter.XmlSerializerSchemaImporter));
  55. }
  56. void IWsdlImportExtension.ImportContract(WsdlImporter importer, WsdlContractConversionContext contractContext)
  57. {
  58. if (contractContext == null)
  59. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("contractContext"));
  60. MessageContractImporter.ImportMessageContract(importer, contractContext, MessageContractImporter.XmlSerializerSchemaImporter.Get(importer));
  61. }
  62. void IWsdlImportExtension.BeforeImport(WsdlNS.ServiceDescriptionCollection wsdlDocuments, XmlSchemaSet xmlSchemas, ICollection<XmlElement> policy) { }
  63. }
  64. }