File: DiscoveryDocument.cs

package info (click to toggle)
mono 6.8.0.105%2Bdfsg-3.3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,284,512 kB
  • sloc: cs: 11,172,132; xml: 2,850,069; ansic: 671,653; cpp: 122,091; perl: 59,366; javascript: 30,841; asm: 22,168; makefile: 20,093; sh: 15,020; python: 4,827; pascal: 925; sql: 859; sed: 16; php: 1
file content (160 lines) | stat: -rw-r--r-- 6,832 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
//------------------------------------------------------------------------------
// <copyright file="DiscoveryDocument.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>                                                                
//------------------------------------------------------------------------------

namespace System.Web.Services.Discovery {

    using System.Xml.Serialization;
    using System.Xml;
    using System.IO;
    using System;
    using System.Text;
    using System.Collections;
    using System.Web.Services.Configuration;

    /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument"]/*' />
    /// <devdoc>
    ///    <para>[To be supplied.]</para>
    /// </devdoc>
    [XmlRoot("discovery", Namespace = DiscoveryDocument.Namespace)]
    public sealed class DiscoveryDocument {

        /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument.Namespace"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public const string Namespace = "http://schemas.xmlsoap.org/disco/";

        private ArrayList references = new ArrayList();

        /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument.DiscoveryDocument"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public DiscoveryDocument() {
        }

        // NOTE, Microsoft: This property is not really ignored by the xml serializer. Instead,
        // the attributes that would go here are configured in WebServicesConfiguration's
        // DiscoveryDocumentSerializer property.
        /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument.References"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        [XmlIgnore]
        public IList References {
            get {
                return references;
            }
        }

        /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument.Read"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public static DiscoveryDocument Read(Stream stream) {
            XmlTextReader r = new XmlTextReader(stream);
            r.WhitespaceHandling = WhitespaceHandling.Significant;
            r.XmlResolver = null;
            r.DtdProcessing = DtdProcessing.Prohibit;
            return Read(r);
        }

        /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument.Read1"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public static DiscoveryDocument Read(TextReader reader) {
            XmlTextReader r = new XmlTextReader(reader);
            r.WhitespaceHandling = WhitespaceHandling.Significant;
            r.XmlResolver = null;
            r.DtdProcessing = DtdProcessing.Prohibit;
            return Read(r);
        }

        /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument.Read2"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public static DiscoveryDocument Read(XmlReader xmlReader) {
            return (DiscoveryDocument) WebServicesSection.Current.DiscoveryDocumentSerializer.Deserialize(xmlReader);
        }

        /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument.CanRead"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public static bool CanRead(XmlReader xmlReader) {
            return WebServicesSection.Current.DiscoveryDocumentSerializer.CanDeserialize(xmlReader);
        }

        /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument.Write"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public void Write(TextWriter writer) {
            XmlTextWriter xmlWriter = new XmlTextWriter(writer);
            xmlWriter.Formatting = Formatting.Indented;
            xmlWriter.Indentation = 2;
            Write(xmlWriter);
        }

        /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument.Write1"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public void Write(Stream stream) {
            TextWriter writer = new StreamWriter(stream, new UTF8Encoding(false));
            Write(writer);
        }

        /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument.Write2"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public void Write(XmlWriter writer) {
            XmlSerializer serializer = WebServicesSection.Current.DiscoveryDocumentSerializer;
            XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
            serializer.Serialize(writer, this, ns);
        }


    }


    // This is a special serializer that hardwires to the generated
    // ServiceDescriptionSerializer. To regenerate the serializer
    // Turn on KEEPTEMPFILES 
    // Restart server
    // Run disco as follows
    //   disco <URL_FOR_VALID_ASMX_FILE>?disco
    // Goto windows temp dir (usually \winnt\temp)
    // and get the latest generated .cs file
    // Change namespace to 'System.Web.Services.Discovery'
    // Change class names to DiscoveryDocumentSerializationWriter
    // and DiscoveryDocumentSerializationReader
    // Make the classes internal
    // Ensure the public Write method is Write10_discovery (If not
    // change Serialize to call the new one)
    // Ensure the public Read method is Read11_discovery (If not
    // change Deserialize to call the new one)
    internal class DiscoveryDocumentSerializer : XmlSerializer {
        protected override XmlSerializationReader CreateReader() {
            return new DiscoveryDocumentSerializationReader();
        }
        protected override XmlSerializationWriter CreateWriter() {
            return new DiscoveryDocumentSerializationWriter();
        }
        public override bool CanDeserialize(System.Xml.XmlReader xmlReader) {
            return xmlReader.IsStartElement("discovery", "http://schemas.xmlsoap.org/disco/");
        }
        protected override void Serialize(Object objectToSerialize, XmlSerializationWriter writer) {
            ((DiscoveryDocumentSerializationWriter)writer).Write10_discovery(objectToSerialize);
        }
        protected override object Deserialize(XmlSerializationReader reader) {
            return ((DiscoveryDocumentSerializationReader)reader).Read10_discovery();
        }
    }
}