Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- PersonalizationState.cs
- ButtonColumn.cs
- KeyGestureConverter.cs
- FilteredXmlReader.cs
- SafeCancelMibChangeNotify.cs
- OrderingExpression.cs
- AlternateViewCollection.cs
- ResolveMatchesMessageCD1.cs
- UserPreferenceChangingEventArgs.cs
- DataGridViewComboBoxColumnDesigner.cs
- XamlValidatingReader.cs
- CultureInfoConverter.cs
- XmlElementList.cs
- SafeEventLogWriteHandle.cs
- EntityStoreSchemaFilterEntry.cs
- Light.cs
- WindowsSysHeader.cs
- ProgressChangedEventArgs.cs
- MenuTracker.cs
- CodeGroup.cs
- ReferenceList.cs
- Rijndael.cs
- LateBoundBitmapDecoder.cs
- UnauthorizedAccessException.cs
- PolicyUnit.cs
- ValidationErrorCollection.cs
- CustomAttributeBuilder.cs
- SerialStream.cs
- KnownColorTable.cs
- RequestTimeoutManager.cs
- XhtmlBasicValidatorAdapter.cs
- CallContext.cs
- RedistVersionInfo.cs
- XmlDataSourceView.cs
- DesignerActionPropertyItem.cs
- CodeDomDecompiler.cs
- CacheDependency.cs
- RegexCaptureCollection.cs
- ReadOnlyNameValueCollection.cs
- XNodeValidator.cs
- DummyDataSource.cs
- DesignerAutoFormatStyle.cs
- PtsContext.cs
- WithParamAction.cs
- CriticalHandle.cs
- XamlBrushSerializer.cs
- Graphics.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- Point3DAnimation.cs
- DataPagerCommandEventArgs.cs
- DbSourceParameterCollection.cs
- PropVariant.cs
- BaseCAMarshaler.cs
- SourceElementsCollection.cs
- AuthorizationRule.cs
- RuleSettingsCollection.cs
- WriteableBitmap.cs
- HttpCachePolicyElement.cs
- BulletedListEventArgs.cs
- XsdBuildProvider.cs
- CallbackValidatorAttribute.cs
- ExpressionBinding.cs
- _ConnectOverlappedAsyncResult.cs
- SQLSingle.cs
- XmlTextWriter.cs
- WebPartTransformerCollection.cs
- CodeMemberMethod.cs
- GraphicsContainer.cs
- DynamicExpression.cs
- TerminateDesigner.cs
- GestureRecognitionResult.cs
- IPEndPoint.cs
- DesignerListAdapter.cs
- NativeMethods.cs
- TypeLibraryHelper.cs
- ProfileSettingsCollection.cs
- TextEmbeddedObject.cs
- TrustSection.cs
- TreeViewItem.cs
- Geometry3D.cs
- sqlpipe.cs
- TemplateControlParser.cs
- DependencyObject.cs
- XmlCharType.cs
- ExistsInCollection.cs
- EntityAdapter.cs
- SymLanguageVendor.cs
- CacheSection.cs
- Point3DAnimationBase.cs
- TemplateBuilder.cs
- Number.cs
- UnmanagedMemoryStream.cs
- ConstraintStruct.cs
- GridViewSelectEventArgs.cs
- FileUtil.cs
- DebugView.cs
- PropertyMapper.cs
- CqlIdentifiers.cs
- UnicastIPAddressInformationCollection.cs
- WorkflowMarkupSerializerMapping.cs