Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Server / System / Data / Services / Serializers / AtomServiceDocumentSerializer.cs / 1305376 / AtomServiceDocumentSerializer.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Provides a serializer for the Atom Service Document format.
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services.Serializers
{
using System;
using System.Data.Services.Providers;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Xml;
///
/// Provides support for serializing service models as
/// a Service Document.
///
///
/// For more information, see http://tools.ietf.org/html/rfc5023#section-8.
///
[DebuggerDisplay("AtomServiceDocumentSerializer={baseUri}")]
internal sealed class AtomServiceDocumentSerializer : XmlDocumentSerializer
{
/// XML prefix for the Atom Publishing Protocol namespace.
private const string AppNamespacePrefix = "app";
/// XML prefix for the Atom namespace.
private const string AtomNamespacePrefix = "atom";
///
/// Initializes a new AtomServiceDocumentSerializer, ready to write
/// out the Service Document for a data provider.
///
/// Stream to which output should be sent.
/// Base URI from which resources should be resolved.
/// Data provider from which metadata should be gathered.
/// Text encoding for the response.
internal AtomServiceDocumentSerializer(
Stream output,
Uri baseUri,
DataServiceProviderWrapper provider,
Encoding encoding)
: base(output, baseUri, provider, encoding)
{
}
/// Writes the Service Document to the output stream.
/// Data service instance.
internal override void WriteRequest(IDataService service)
{
try
{
this.Writer.WriteStartElement(XmlConstants.AtomPublishingServiceElementName, XmlConstants.AppNamespace);
this.IncludeCommonNamespaces();
this.Writer.WriteStartElement("", XmlConstants.AtomPublishingWorkspaceElementName, XmlConstants.AppNamespace);
this.Writer.WriteStartElement(XmlConstants.AtomTitleElementName, XmlConstants.AtomNamespace);
this.Writer.WriteString(XmlConstants.AtomPublishingWorkspaceDefaultValue);
this.Writer.WriteEndElement();
foreach (ResourceSetWrapper container in this.Provider.ResourceSets)
{
this.Writer.WriteStartElement("", XmlConstants.AtomPublishingCollectionElementName, XmlConstants.AppNamespace);
this.Writer.WriteAttributeString(XmlConstants.AtomHRefAttributeName, container.Name);
this.Writer.WriteStartElement(XmlConstants.AtomTitleElementName, XmlConstants.AtomNamespace);
this.Writer.WriteString(container.Name);
this.Writer.WriteEndElement(); // Close 'title' element.
this.Writer.WriteEndElement(); // Close 'collection' element.
}
this.Writer.WriteEndElement(); // Close 'workspace' element.
this.Writer.WriteEndElement(); // Close 'service' element.
}
finally
{
this.Writer.Close();
}
}
/// Ensures that common namespaces are included in the topmost tag.
///
/// This method should be called by any method that may write a
/// topmost element tag.
///
private void IncludeCommonNamespaces()
{
Debug.Assert(
this.Writer.WriteState == WriteState.Element,
"this.writer.WriteState == WriteState.Element - otherwise, not called at beginning - " + this.Writer.WriteState);
this.Writer.WriteAttributeString(XmlConstants.XmlNamespacePrefix, XmlConstants.XmlBaseAttributeName, null, this.BaseUri.AbsoluteUri);
this.Writer.WriteAttributeString(XmlConstants.XmlnsNamespacePrefix, AtomNamespacePrefix, null, XmlConstants.AtomNamespace);
this.Writer.WriteAttributeString(XmlConstants.XmlnsNamespacePrefix, AppNamespacePrefix, null, XmlConstants.AppNamespace);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebPartTracker.cs
- WindowsListViewItem.cs
- ObjectDisposedException.cs
- TreeNode.cs
- ProviderConnectionPoint.cs
- SqlDataSourceAdvancedOptionsForm.cs
- DictionaryTraceRecord.cs
- IntSumAggregationOperator.cs
- ExchangeUtilities.cs
- DataBindingCollection.cs
- SqlDataSource.cs
- BamlRecordHelper.cs
- OutputCacheSection.cs
- StyleCollection.cs
- ScriptManagerProxy.cs
- ThreadPoolTaskScheduler.cs
- RelationshipConstraintValidator.cs
- DescendentsWalkerBase.cs
- JavaScriptString.cs
- SequenceDesigner.xaml.cs
- InternalPermissions.cs
- EntitySetBase.cs
- DecoderFallback.cs
- InvalidComObjectException.cs
- XmlNodeList.cs
- PenContexts.cs
- SchemaMerger.cs
- Container.cs
- GeneralTransform3DGroup.cs
- RenderData.cs
- DataGridViewButtonColumn.cs
- MobileErrorInfo.cs
- LineServicesCallbacks.cs
- InputMethodStateChangeEventArgs.cs
- RichTextBox.cs
- CannotUnloadAppDomainException.cs
- PathGeometry.cs
- TextBlock.cs
- EraserBehavior.cs
- Vector3DCollectionConverter.cs
- TextAnchor.cs
- TreeNodeStyleCollection.cs
- EdmValidator.cs
- SqlRowUpdatedEvent.cs
- SqlLiftWhereClauses.cs
- UnlockCardRequest.cs
- WebExceptionStatus.cs
- grammarelement.cs
- DbSetClause.cs
- MatcherBuilder.cs
- RegexWriter.cs
- MasterPageParser.cs
- Control.cs
- XmlSerializerNamespaces.cs
- ObjectAnimationUsingKeyFrames.cs
- Vector3DIndependentAnimationStorage.cs
- IdleTimeoutMonitor.cs
- SecurityRuntime.cs
- ClientSponsor.cs
- Events.cs
- RootNamespaceAttribute.cs
- Helpers.cs
- StylusPointProperties.cs
- EllipseGeometry.cs
- PermissionAttributes.cs
- CachedBitmap.cs
- WebReferencesBuildProvider.cs
- TreeNodeMouseHoverEvent.cs
- HtmlElementErrorEventArgs.cs
- ServiceOperationInfoTypeConverter.cs
- _Rfc2616CacheValidators.cs
- DbConnectionPoolOptions.cs
- PlatformCulture.cs
- AmbiguousMatchException.cs
- FixedDSBuilder.cs
- WindowsRebar.cs
- HTMLTextWriter.cs
- ThemeConfigurationDialog.cs
- CommandSet.cs
- DataGridViewImageColumn.cs
- Pen.cs
- TakeOrSkipQueryOperator.cs
- BitStream.cs
- RegexCode.cs
- SecUtil.cs
- XmlAtomicValue.cs
- MenuAutomationPeer.cs
- TabItemAutomationPeer.cs
- TerminatorSinks.cs
- SqlExpander.cs
- SignerInfo.cs
- CollectionMarkupSerializer.cs
- WhitespaceRuleReader.cs
- ImageMapEventArgs.cs
- JavaScriptSerializer.cs
- GreenMethods.cs
- BaseHashHelper.cs
- MenuItem.cs
- Operator.cs
- ChtmlImageAdapter.cs