File: ServiceDocumentFormatter.cs

package info (click to toggle)
mono 2.6.7-5.1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 327,344 kB
  • ctags: 413,649
  • sloc: cs: 2,471,883; xml: 1,768,594; ansic: 350,665; sh: 13,644; makefile: 8,640; perl: 1,784; asm: 717; cpp: 209; python: 146; sql: 81; sed: 16
file content (205 lines) | stat: -rw-r--r-- 6,828 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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
//
// ServiceDocumentFormatter.cs
//
// Author:
//	Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2009 Novell, Inc.  http://www.novell.com
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
// 
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Xml;

namespace System.ServiceModel.Syndication
{
	[DataContract]
	public abstract class ServiceDocumentFormatter
	{
		protected static SyndicationCategory CreateCategory (InlineCategoriesDocument inlineCategories)
		{
			return inlineCategories.CreateCategory ();
		}

		protected static ResourceCollectionInfo CreateCollection (Workspace workspace)
		{
			return workspace.CreateResourceCollection ();
		}

		protected static InlineCategoriesDocument CreateInlineCategories (ResourceCollectionInfo collection)
		{
			return collection.CreateInlineCategoriesDocument ();
		}

		protected static ReferencedCategoriesDocument CreateReferencedCategories (ResourceCollectionInfo collection)
		{
			return collection.CreateReferencedCategoriesDocument ();
		}

		protected static Workspace CreateWorkspace (ServiceDocument document)
		{
			return document.CreateWorkspace ();
		}

		[MonoTODO ("Use maxExtensionSize somewhere")]
		protected static void LoadElementExtensions (XmlReader reader, CategoriesDocument categories, int maxExtensionSize)
		{
			categories.ElementExtensions.Add (reader);
		}

		[MonoTODO ("Use maxExtensionSize somewhere")]
		protected static void LoadElementExtensions (XmlReader reader,ResourceCollectionInfo collection, int maxExtensionSize)
		{
			collection.ElementExtensions.Add (reader);
		}

		[MonoTODO ("Use maxExtensionSize somewhere")]
		protected static void LoadElementExtensions (XmlReader reader, ServiceDocument document, int maxExtensionSize)
		{
			document.ElementExtensions.Add (reader);
		}

		[MonoTODO ("Use maxExtensionSize somewhere")]
		protected static void LoadElementExtensions (XmlReader reader, Workspace workspace, int maxExtensionSize)
		{
			workspace.ElementExtensions.Add (reader);
		}

		protected static bool TryParseAttribute (string name, string ns, string value, CategoriesDocument categories, string version)
		{
			return categories.TryParseAttribute (name, ns, value, version);
		}

		protected static bool TryParseAttribute (string name, string ns, string value, ResourceCollectionInfo collection, string version)
		{
			return collection.TryParseAttribute (name, ns, value, version);
		}

		protected static bool TryParseAttribute (string name, string ns, string value, ServiceDocument document, string version)
		{
			return document.TryParseAttribute (name, ns, value, version);
		}

		protected static bool TryParseAttribute (string name, string ns, string value, Workspace workspace, string version)
		{
			return workspace.TryParseAttribute (name, ns, value, version);
		}

		protected static bool TryParseElement (XmlReader reader, CategoriesDocument categories, string version)
		{
			return categories.TryParseElement (reader, version);
		}

		protected static bool TryParseElement (XmlReader reader, ResourceCollectionInfo collection, string version)
		{
			return collection.TryParseElement (reader, version);
		}

		protected static bool TryParseElement (XmlReader reader, ServiceDocument document, string version)
		{
			return document.TryParseElement (reader, version);
		}

		protected static bool TryParseElement (XmlReader reader, Workspace workspace, string version)
		{
			return workspace.TryParseElement (reader, version);
		}

		protected static void WriteAttributeExtensions (XmlWriter writer, CategoriesDocument categories, string version)
		{
			categories.WriteAttributeExtensions (writer, version);
		}

		protected static void WriteAttributeExtensions (XmlWriter writer, ResourceCollectionInfo collection, string version)
		{
			collection.WriteAttributeExtensions (writer, version);
		}

		protected static void WriteAttributeExtensions (XmlWriter writer, ServiceDocument document, string version)
		{
			document.WriteAttributeExtensions (writer, version);
		}

		protected static void WriteAttributeExtensions (XmlWriter writer, Workspace workspace, string version)
		{
			workspace.WriteAttributeExtensions (writer, version);
		}

		protected static void WriteElementExtensions (XmlWriter writer, CategoriesDocument categories, string version)
		{
			categories.WriteElementExtensions (writer, version);
		}

		protected static void WriteElementExtensions (XmlWriter writer, ResourceCollectionInfo collection, string version)
		{
			collection.WriteElementExtensions (writer, version);
		}

		protected static void WriteElementExtensions (XmlWriter writer, ServiceDocument document, string version)
		{
			document.WriteElementExtensions (writer, version);
		}

		protected static void WriteElementExtensions (XmlWriter writer, Workspace workspace, string version)
		{
			workspace.WriteElementExtensions (writer, version);
		}

		// instance members

		protected ServiceDocumentFormatter ()
			: this (new ServiceDocument ())
		{
		}

		protected ServiceDocumentFormatter (ServiceDocument documentToWrite)
		{
			SetDocument (documentToWrite);
		}

		public ServiceDocument Document { get; private set; }

		public abstract string Version { get; }


		public abstract bool CanRead (XmlReader reader);

		protected virtual ServiceDocument CreateDocumentInstance ()
		{
			return new ServiceDocument () { InternalFormatter = this };
		}

		public abstract void ReadFrom (XmlReader reader);

		protected virtual void SetDocument (ServiceDocument document)
		{
			if (document == null)
				throw new ArgumentNullException ("document");
			Document = document;
		}

		public abstract void WriteTo (XmlWriter writer);
	}
}