Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Server / System / Data / Services / Epm / EpmContentSerializerBase.cs / 1305376 / EpmContentSerializerBase.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // //// Base Classes used for EntityPropertyMappingAttribute related content // serializers // // // @owner [....] //--------------------------------------------------------------------- namespace System.Data.Services.Common { using System.Collections.Generic; using System.Diagnostics; using System.Linq; #if ASTORIA_CLIENT using System.Xml; #else using System.ServiceModel.Syndication; using System.Data.Services.Providers; #endif ////// What kind of xml nodes to serialize /// internal enum EpmSerializationKind { ////// Serialize only attributes /// Attributes, ////// Serialize only elements /// Elements, ////// Serialize everything /// All } ////// Base visitor class for performing serialization of content whose location in the syndication /// feed is provided through EntityPropertyMappingAttributes /// internal abstract class EpmContentSerializerBase { ////// Constructor decided whether to use syndication or non-syndication sub-tree for target content mappings /// /// Target tree containing mapping information /// Helps in deciding whether to use syndication sub-tree or non-syndication one /// Object to be serialized /// SyndicationItem to which content will be added #if ASTORIA_CLIENT protected EpmContentSerializerBase(EpmTargetTree tree, bool isSyndication, object element, XmlWriter target) #else protected EpmContentSerializerBase(EpmTargetTree tree, bool isSyndication, object element, SyndicationItem target) #endif { this.Root = isSyndication ? tree.SyndicationRoot : tree.NonSyndicationRoot; this.Element = element; this.Target = target; this.Success = false; } ///Root of the target tree containing mapped xml elements/attribute protected EpmTargetPathSegment Root { get; private set; } ///Object whose properties we will read protected object Element { get; private set; } ///Target SyndicationItem on which we are going to add the serialized content #if ASTORIA_CLIENT protected XmlWriter Target #else protected SyndicationItem Target #endif { get; private set; } ///Indicates the success or failure of serialization protected bool Success { get; private set; } #if ASTORIA_CLIENT ///Public interface used by the EpmContentSerializer class internal void Serialize() #else ///Public interface used by the EpmContentSerializer class /// Data Service provider used for rights verification. internal void Serialize(DataServiceProviderWrapper provider) #endif { foreach (EpmTargetPathSegment targetSegment in this.Root.SubSegments) { #if ASTORIA_CLIENT this.Serialize(targetSegment, EpmSerializationKind.All); #else this.Serialize(targetSegment, EpmSerializationKind.All, provider); #endif } this.Success = true; } #if ASTORIA_CLIENT ////// Internal interface to be overridden in the subclasses. /// Goes through each subsegments and invokes itself for the children /// /// Current root segment in the target tree /// Which sub segments to serialize protected virtual void Serialize(EpmTargetPathSegment targetSegment, EpmSerializationKind kind) #else ////// Internal interface to be overridden in the subclasses. /// Goes through each subsegments and invokes itself for the children /// /// Current root segment in the target tree /// Which sub segments to serialize /// Data Service provider used for rights verification. protected virtual void Serialize(EpmTargetPathSegment targetSegment, EpmSerializationKind kind, DataServiceProviderWrapper provider) #endif { IEnumerablesegmentsToSerialize; switch (kind) { case EpmSerializationKind.Attributes: segmentsToSerialize = targetSegment.SubSegments.Where(s => s.IsAttribute == true); break; case EpmSerializationKind.Elements: segmentsToSerialize = targetSegment.SubSegments.Where(s => s.IsAttribute == false); break; default: Debug.Assert(kind == EpmSerializationKind.All, "Must serialize everything"); segmentsToSerialize = targetSegment.SubSegments; break; } foreach (EpmTargetPathSegment segment in segmentsToSerialize) { #if ASTORIA_CLIENT this.Serialize(segment, kind); #else this.Serialize(segment, kind, provider); #endif } } } } // 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
- DynamicValueConverter.cs
- EventSourceCreationData.cs
- InternalConfigHost.cs
- DataGridViewComboBoxColumn.cs
- ContainerVisual.cs
- WebPartZoneBase.cs
- Logging.cs
- MinimizableAttributeTypeConverter.cs
- TextRangeEdit.cs
- UserPreferenceChangedEventArgs.cs
- Brushes.cs
- MimeImporter.cs
- SubpageParaClient.cs
- CheckBoxFlatAdapter.cs
- FocusManager.cs
- CryptoApi.cs
- Transform.cs
- BaseCollection.cs
- XPathNodeInfoAtom.cs
- BaseComponentEditor.cs
- DBConnectionString.cs
- SHA384CryptoServiceProvider.cs
- PageParserFilter.cs
- EntityDataSourceSelectingEventArgs.cs
- Dictionary.cs
- ManipulationStartedEventArgs.cs
- NavigationProperty.cs
- ServiceOperationParameter.cs
- TextEffect.cs
- Rotation3D.cs
- DoubleCollection.cs
- PreApplicationStartMethodAttribute.cs
- unitconverter.cs
- ScopedKnownTypes.cs
- TagMapCollection.cs
- Transform3D.cs
- Boolean.cs
- SamlSecurityToken.cs
- ViewStateException.cs
- InputScopeNameConverter.cs
- ContextMarshalException.cs
- TextFormatterImp.cs
- XmlIncludeAttribute.cs
- EdmTypeAttribute.cs
- RadioButtonList.cs
- WindowsSlider.cs
- NotifyInputEventArgs.cs
- CheckBoxBaseAdapter.cs
- GridErrorDlg.cs
- PropertyEmitterBase.cs
- XamlTypeMapper.cs
- WebBrowserContainer.cs
- SymbolMethod.cs
- MouseButtonEventArgs.cs
- DataGridViewBand.cs
- RelationshipManager.cs
- ToolBar.cs
- ISFClipboardData.cs
- Region.cs
- Setter.cs
- XPathNodeIterator.cs
- DownloadProgressEventArgs.cs
- UnmanagedMarshal.cs
- DataServiceHost.cs
- Parsers.cs
- InkPresenter.cs
- Input.cs
- PolyLineSegment.cs
- EndOfStreamException.cs
- StylusPointPropertyId.cs
- LocalServiceSecuritySettings.cs
- ObjectKeyFrameCollection.cs
- SymmetricSecurityProtocol.cs
- ClientOptions.cs
- AsymmetricSignatureDeformatter.cs
- StringFunctions.cs
- DrawingContextWalker.cs
- ParentUndoUnit.cs
- Renderer.cs
- StreamResourceInfo.cs
- CompressedStack.cs
- DataGridViewColumnCollection.cs
- Rijndael.cs
- ContentType.cs
- CheckPair.cs
- XmlValidatingReaderImpl.cs
- ParagraphVisual.cs
- FixedBufferAttribute.cs
- SingleResultAttribute.cs
- DbMetaDataCollectionNames.cs
- LabelLiteral.cs
- RuntimeHandles.cs
- DebuggerAttributes.cs
- BindingExpression.cs
- DocumentScope.cs
- WebHttpSecurityElement.cs
- OdbcTransaction.cs
- ApplicationSettingsBase.cs
- PaintEvent.cs
- SerializationStore.cs