Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Server / System / Data / Services / Epm / EpmContentDeSerializer.cs / 1305376 / EpmContentDeSerializer.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Class used for deserializing EntityPropertyMappingAttribute content.
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services.Common
{
#region Namespaces
using System.Collections.Generic;
using System.Data.Services.Providers;
using System.Diagnostics;
using System.Linq;
using System.ServiceModel.Syndication;
#endregion
/// DeSerializer for reading EPM content
internal sealed class EpmContentDeSerializer
{
/// for which this serializer works
private readonly ResourceType resourceType;
/// Object for which this serializer works
private readonly object element;
///
/// Constructor creates contained serializers
///
/// Resource type being serialized
/// Instance of
internal EpmContentDeSerializer(ResourceType resourceType, object element)
{
Debug.Assert(resourceType.HasEntityPropertyMappings == true, "Must have entity property mappings to instantiate EpmContentDeSerializer");
this.resourceType = resourceType;
this.element = element;
this.resourceType.EnsureEpmInfoAvailability();
}
/// Delegates to each of custom and syndication deserializers for serializing content
/// to deserialize
/// State of the deserializer
internal void DeSerialize(SyndicationItem item, EpmContentDeserializerState state)
{
if (this.resourceType.EpmTargetTree.SyndicationRoot.SubSegments.Count > 0)
{
new EpmSyndicationContentDeSerializer(item, state).DeSerialize(this.resourceType, this.element);
}
if (this.resourceType.EpmTargetTree.NonSyndicationRoot.SubSegments.Count > 0)
{
new EpmCustomContentDeSerializer(item, state).DeSerialize(this.resourceType, this.element);
}
}
/// Representation of deserializer state
internal sealed class EpmContentDeserializerState
{
/// Is current operation an update
public bool IsUpdateOperation
{
get;
set;
}
/// IUpdatable used for updating the object
public UpdatableWrapper Updatable
{
get;
set;
}
/// Service instance
public IDataService Service
{
get;
set;
}
/// Properties that have been applied
public EpmAppliedPropertyInfo PropertiesApplied
{
get;
set;
}
}
/// Holder of information about properties applied during deserialization of an object
internal sealed class EpmAppliedPropertyInfo
{
/// Properties already applied
private List properties;
/// Map from properties to their corresponding type names
private List propertyToTypeNameMap;
/// Propeties already applied
private IList Properties
{
get
{
if (this.properties == null)
{
this.properties = new List();
}
return this.properties;
}
}
/// Propeties to type name mappings
private IList PropertyToTypeNameMap
{
get
{
if (this.propertyToTypeNameMap == null)
{
this.propertyToTypeNameMap = new List();
}
return this.propertyToTypeNameMap;
}
}
/// Adds the given property to the collection of applied ones
/// Path of property
/// Does the path include all sub-properties
internal void AddAppliedProperty(String propertyPath, bool wholePathCovered)
{
this.Properties.Add(new EpmAppliedProperty { PropertyPath = propertyPath, ApplyRecursive = wholePathCovered });
}
/// Adds the given property to the collection of applied ones
/// Path of property
/// Type of the property
internal void AddPropertyToTypeMapItem(String propertyPath, String typeName)
{
this.PropertyToTypeNameMap.Add(new EpmPropertyToTypeMappingElement { PropertyPath = propertyPath, TypeName = typeName });
}
/// Checks if the given path is already applied
/// Given property path
/// true if the property has already been applied, false otherwise
internal bool Lookup(String propertyPath)
{
return this.properties != null && this.Properties.Any(e => e.PropertyPath == propertyPath ||
(e.ApplyRecursive == true &&
e.PropertyPath.Length <= propertyPath.Length && e.PropertyPath == propertyPath.Substring(0, e.PropertyPath.Length)));
}
/// Looksup the type given a property path
/// Given property path
/// String containing mapped type name, null otherwise
internal String MapPropertyToType(String propertyPath)
{
if (this.propertyToTypeNameMap != null)
{
EpmPropertyToTypeMappingElement mapping = this.PropertyToTypeNameMap.FirstOrDefault(e => e.PropertyPath == propertyPath);
return mapping != null ? mapping.TypeName : null;
}
else
{
return null;
}
}
/// Property that is applied
private sealed class EpmAppliedProperty
{
/// Path of property
public String PropertyPath
{
get;
set;
}
/// Is the property application path considered recursive
public bool ApplyRecursive
{
get;
set;
}
}
/// Maps a property path with the type
private sealed class EpmPropertyToTypeMappingElement
{
/// Path of property
public String PropertyPath
{
get;
set;
}
/// Type of the property
public String TypeName
{
get;
set;
}
}
}
}
}
// 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
- DataTableReaderListener.cs
- BitVector32.cs
- FileLoadException.cs
- ApplicationServiceManager.cs
- MsmqAuthenticationMode.cs
- NetTcpBinding.cs
- ResourcePermissionBaseEntry.cs
- InternalEnumValidator.cs
- BamlWriter.cs
- invalidudtexception.cs
- XmlnsCompatibleWithAttribute.cs
- DefaultValueConverter.cs
- SwitchElementsCollection.cs
- HatchBrush.cs
- SafeLocalMemHandle.cs
- HyperLinkField.cs
- URIFormatException.cs
- CodeDOMProvider.cs
- HideDisabledControlAdapter.cs
- _SSPIWrapper.cs
- BackStopAuthenticationModule.cs
- SchemaTypeEmitter.cs
- MailMessage.cs
- Vector3dCollection.cs
- Utilities.cs
- HttpCapabilitiesSectionHandler.cs
- WriteStateInfoBase.cs
- TranslateTransform.cs
- HttpHandlerAction.cs
- DataGridItemAttachedStorage.cs
- PublishLicense.cs
- XPathMessageFilterElementComparer.cs
- SchemaNamespaceManager.cs
- GPPOINTF.cs
- ToolStripControlHost.cs
- EncoderNLS.cs
- ExceptionRoutedEventArgs.cs
- KnownTypes.cs
- processwaithandle.cs
- DtrList.cs
- DataGridViewCellStyle.cs
- ConfigXmlText.cs
- CDSCollectionETWBCLProvider.cs
- CodeIterationStatement.cs
- BoolExpressionVisitors.cs
- ErrorInfoXmlDocument.cs
- EntityDataSourceViewSchema.cs
- RuntimeConfigLKG.cs
- CultureSpecificStringDictionary.cs
- CompositeTypefaceMetrics.cs
- ListViewItem.cs
- brushes.cs
- GlobalizationAssembly.cs
- HttpResponseHeader.cs
- InputBinding.cs
- PhonemeEventArgs.cs
- KeyValuePair.cs
- DataObjectFieldAttribute.cs
- XmlNodeComparer.cs
- DispatcherEventArgs.cs
- XappLauncher.cs
- CompiledRegexRunner.cs
- PeerCustomResolverBindingElement.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- EntityDataSourceView.cs
- CommandExpr.cs
- sqlnorm.cs
- ListCardsInFileRequest.cs
- KeyConverter.cs
- PropertyStore.cs
- ColumnCollection.cs
- ConstrainedDataObject.cs
- DrawingGroup.cs
- AggregateNode.cs
- PagesChangedEventArgs.cs
- BitmapDecoder.cs
- BoundingRectTracker.cs
- SingletonChannelAcceptor.cs
- HtmlTernaryTree.cs
- PropertyFilterAttribute.cs
- TextProviderWrapper.cs
- ProtocolReflector.cs
- PrinterResolution.cs
- mil_sdk_version.cs
- NativeMethods.cs
- TreeNodeCollectionEditor.cs
- HtmlInputText.cs
- Win32SafeHandles.cs
- SymmetricKey.cs
- MDIWindowDialog.cs
- ThreadExceptionEvent.cs
- _SSPIWrapper.cs
- DataServiceQuery.cs
- ButtonStandardAdapter.cs
- DetailsViewUpdatedEventArgs.cs
- DBAsyncResult.cs
- StronglyTypedResourceBuilder.cs
- StateDesigner.cs
- MonitorWrapper.cs
- DEREncoding.cs