Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataWeb / Server / System / Data / Services / Serializers / AtomServiceDocumentSerializer.cs / 1 / 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.Diagnostics;
using System.IO;
using System.Text;
using System.Xml;
using System.Data.Services.Providers;
///
/// 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,
IDataServiceProvider provider,
Encoding encoding)
: base(output, baseUri, provider, encoding)
{
}
/// Writes the Service Document to the output stream.
internal override void WriteRequest()
{
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 (ResourceContainer container in this.Provider.GetContainers())
{
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.
//----------------------------------------------------------------------
//
// 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.Diagnostics;
using System.IO;
using System.Text;
using System.Xml;
using System.Data.Services.Providers;
///
/// 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,
IDataServiceProvider provider,
Encoding encoding)
: base(output, baseUri, provider, encoding)
{
}
/// Writes the Service Document to the output stream.
internal override void WriteRequest()
{
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 (ResourceContainer container in this.Provider.GetContainers())
{
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
- ModelPropertyDescriptor.cs
- DataGridViewTopLeftHeaderCell.cs
- OrderedDictionaryStateHelper.cs
- SqlRowUpdatedEvent.cs
- GridViewPageEventArgs.cs
- HtmlUtf8RawTextWriter.cs
- DataServices.cs
- TextInfo.cs
- RTLAwareMessageBox.cs
- StylusPointPropertyInfoDefaults.cs
- HtmlShim.cs
- initElementDictionary.cs
- Sql8ConformanceChecker.cs
- Expression.cs
- BindingBase.cs
- DesignerActionListCollection.cs
- VectorAnimation.cs
- AsyncMethodInvoker.cs
- UserPreferenceChangingEventArgs.cs
- SecurityTokenTypes.cs
- TrackingMemoryStreamFactory.cs
- SafeWaitHandle.cs
- SecurityResources.cs
- HwndSource.cs
- FactoryMaker.cs
- GregorianCalendar.cs
- ControlUtil.cs
- TreeViewCancelEvent.cs
- InputMethodStateTypeInfo.cs
- HttpCacheVaryByContentEncodings.cs
- OracleBoolean.cs
- SecurityImpersonationBehavior.cs
- SqlParameterizer.cs
- WebPartsPersonalizationAuthorization.cs
- sqlser.cs
- FrameSecurityDescriptor.cs
- ApplicationDirectory.cs
- GlobalizationAssembly.cs
- DataPagerFieldItem.cs
- ConstraintConverter.cs
- JoinSymbol.cs
- CreateUserErrorEventArgs.cs
- CSharpCodeProvider.cs
- ColumnMap.cs
- OrderedDictionary.cs
- VisualBasicReference.cs
- DataGridTextBoxColumn.cs
- OleDbSchemaGuid.cs
- EventRouteFactory.cs
- PeerNameRecordCollection.cs
- EncoderParameter.cs
- ControlParser.cs
- XPathConvert.cs
- autovalidator.cs
- XLinq.cs
- TimelineCollection.cs
- StylusButtonEventArgs.cs
- MapPathBasedVirtualPathProvider.cs
- ContextMenuStrip.cs
- MsmqIntegrationSecurityMode.cs
- GetChildSubtree.cs
- basecomparevalidator.cs
- ItemCollection.cs
- DataGridColumnCollection.cs
- FixedBufferAttribute.cs
- OleDbWrapper.cs
- BaseCodeDomTreeGenerator.cs
- MainMenu.cs
- SiteMapHierarchicalDataSourceView.cs
- MaterialCollection.cs
- DataSpaceManager.cs
- TrustLevel.cs
- DiscreteKeyFrames.cs
- FrameworkReadOnlyPropertyMetadata.cs
- SafeIUnknown.cs
- ConfigXmlText.cs
- SqlColumnizer.cs
- DateRangeEvent.cs
- CodeVariableReferenceExpression.cs
- SqlError.cs
- CheckedListBox.cs
- DataMisalignedException.cs
- SqlFunctionAttribute.cs
- SmiEventSink_DeferedProcessing.cs
- TypographyProperties.cs
- Renderer.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- MailBnfHelper.cs
- FormsAuthenticationUserCollection.cs
- Latin1Encoding.cs
- SqlTrackingQuery.cs
- Cursor.cs
- FixedTextSelectionProcessor.cs
- CircleHotSpot.cs
- TypeLibConverter.cs
- FileDialogCustomPlacesCollection.cs
- BindableAttribute.cs
- ReceiveReply.cs
- ApplicationSecurityInfo.cs
- figurelength.cs