Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Rules / RuleSetReference.cs / 1305376 / RuleSetReference.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Globalization; using System.Text; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Drawing.Design; using System.Workflow.Activities.Rules.Design; using System.ComponentModel.Design.Serialization; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Serialization; using System.Workflow.Activities.Common; namespace System.Workflow.Activities.Rules { #region RuleSetReference Class [DesignerSerializer(typeof(WorkflowMarkupSerializer), typeof(WorkflowMarkupSerializer))] [DesignerSerializer(typeof(DependencyObjectCodeDomSerializer), typeof(CodeDomSerializer))] [ActivityValidator(typeof(RuleSetReferenceValidator))] [Editor(typeof(RuleSetNameEditor), typeof(UITypeEditor))] [TypeConverter(typeof(RuleSetReferenceTypeConverter))] [Browsable(true)] sealed public class RuleSetReference : DependencyObject { #region members and constructors private bool _runtimeInitialized; private string _name; public RuleSetReference() { } public RuleSetReference(string ruleSetName) { _name = ruleSetName; } #endregion #region public members public string RuleSetName { get { return this._name; } set { this._name = value; } } #endregion #region IInitializeForRuntime Members [NonSerialized] private object syncLock = new object(); protected override void InitializeProperties() { lock (syncLock) { if (this._runtimeInitialized) return; Activity ownerActivity = base.ParentDependencyObject as Activity; CompositeActivity declaringActivity = Helpers.GetDeclaringActivity(ownerActivity); if (declaringActivity == null) { declaringActivity = Helpers.GetRootActivity(ownerActivity) as CompositeActivity; } RuleDefinitions rules = ConditionHelper.Load_Rules_RT(declaringActivity); if (rules != null) rules.OnRuntimeInitialized(); base.InitializeProperties(); _runtimeInitialized = true; } } #endregion } #endregion #region RuleSetReferenceValidator Class internal sealed class RuleSetReferenceValidator : Validator { public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { ValidationErrorCollection validationErrors = base.Validate(manager, obj); RuleSetReference ruleSetReference = obj as RuleSetReference; if (ruleSetReference == null) { string message = string.Format(CultureInfo.CurrentCulture, Messages.UnexpectedArgumentType, typeof(RuleSetReference).FullName, "obj"); throw new ArgumentException(message, "obj"); } Activity activity = manager.Context[typeof(Activity)] as Activity; if (activity == null) { string message = string.Format(CultureInfo.CurrentCulture, Messages.ContextStackItemMissing, typeof(Activity).Name); throw new InvalidOperationException(message); } PropertyValidationContext validationContext = manager.Context[typeof(PropertyValidationContext)] as PropertyValidationContext; if (validationContext == null) { string message = string.Format(CultureInfo.CurrentCulture, Messages.ContextStackItemMissing, typeof(PropertyValidationContext).Name); throw new InvalidOperationException(message); } if (!string.IsNullOrEmpty(ruleSetReference.RuleSetName)) { RuleDefinitions rules = null; RuleSetCollection ruleSetCollection = null; CompositeActivity declaringActivity = Helpers.GetDeclaringActivity(activity); if (declaringActivity == null) { declaringActivity = Helpers.GetRootActivity(activity) as CompositeActivity; } if (activity.Site != null) rules = ConditionHelper.Load_Rules_DT(activity.Site, declaringActivity); else rules = ConditionHelper.Load_Rules_RT(declaringActivity); if (rules != null) ruleSetCollection = rules.RuleSets; if (ruleSetCollection == null || !ruleSetCollection.Contains(ruleSetReference.RuleSetName)) { string message = string.Format(CultureInfo.CurrentCulture, Messages.RuleSetNotFound, ruleSetReference.RuleSetName); ValidationError validationError = new ValidationError(message, ErrorNumbers.Error_RuleSetNotFound); validationError.PropertyName = GetFullPropertyName(manager) + "." + "RuleSetName"; validationErrors.Add(validationError); } else { RuleSet actualRuleSet = ruleSetCollection[ruleSetReference.RuleSetName]; ITypeProvider typeProvider = (ITypeProvider)manager.GetService(typeof(ITypeProvider)); IDisposable localContextScope = (WorkflowCompilationContext.Current == null ? WorkflowCompilationContext.CreateScope(manager) : null); try { RuleValidation validation = new RuleValidation(activity, typeProvider, WorkflowCompilationContext.Current.CheckTypes); actualRuleSet.Validate(validation); ValidationErrorCollection actualRuleSetErrors = validation.Errors; if (actualRuleSetErrors.Count > 0) { string expressionPropertyName = GetFullPropertyName(manager); string genericErrorMsg = string.Format(CultureInfo.CurrentCulture, Messages.InvalidRuleSetExpression, expressionPropertyName); int errorNumber = ErrorNumbers.Error_InvalidRuleSetExpression; if (activity.Site != null) { foreach (ValidationError actualError in actualRuleSetErrors) { ValidationError validationError = new ValidationError(actualError.ErrorText, errorNumber); validationError.PropertyName = expressionPropertyName + "." + "RuleSet Definition"; validationErrors.Add(validationError); } } else { foreach (ValidationError actualError in actualRuleSetErrors) { ValidationError validationError = new ValidationError(genericErrorMsg + " " + actualError.ErrorText, errorNumber); validationError.PropertyName = expressionPropertyName; validationErrors.Add(validationError); } } } // } finally { if (localContextScope != null) { localContextScope.Dispose(); } } } } else { string message = string.Format(CultureInfo.CurrentCulture, Messages.InvalidRuleSetName, "RuleSetReference"); ValidationError validationError = new ValidationError(message, ErrorNumbers.Error_InvalidRuleSetName); validationError.PropertyName = GetFullPropertyName(manager) + "." + "RuleSetName"; validationErrors.Add(validationError); } return validationErrors; } } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.ComponentModel; using System.Globalization; using System.Text; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Drawing.Design; using System.Workflow.Activities.Rules.Design; using System.ComponentModel.Design.Serialization; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Serialization; using System.Workflow.Activities.Common; namespace System.Workflow.Activities.Rules { #region RuleSetReference Class [DesignerSerializer(typeof(WorkflowMarkupSerializer), typeof(WorkflowMarkupSerializer))] [DesignerSerializer(typeof(DependencyObjectCodeDomSerializer), typeof(CodeDomSerializer))] [ActivityValidator(typeof(RuleSetReferenceValidator))] [Editor(typeof(RuleSetNameEditor), typeof(UITypeEditor))] [TypeConverter(typeof(RuleSetReferenceTypeConverter))] [Browsable(true)] sealed public class RuleSetReference : DependencyObject { #region members and constructors private bool _runtimeInitialized; private string _name; public RuleSetReference() { } public RuleSetReference(string ruleSetName) { _name = ruleSetName; } #endregion #region public members public string RuleSetName { get { return this._name; } set { this._name = value; } } #endregion #region IInitializeForRuntime Members [NonSerialized] private object syncLock = new object(); protected override void InitializeProperties() { lock (syncLock) { if (this._runtimeInitialized) return; Activity ownerActivity = base.ParentDependencyObject as Activity; CompositeActivity declaringActivity = Helpers.GetDeclaringActivity(ownerActivity); if (declaringActivity == null) { declaringActivity = Helpers.GetRootActivity(ownerActivity) as CompositeActivity; } RuleDefinitions rules = ConditionHelper.Load_Rules_RT(declaringActivity); if (rules != null) rules.OnRuntimeInitialized(); base.InitializeProperties(); _runtimeInitialized = true; } } #endregion } #endregion #region RuleSetReferenceValidator Class internal sealed class RuleSetReferenceValidator : Validator { public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { ValidationErrorCollection validationErrors = base.Validate(manager, obj); RuleSetReference ruleSetReference = obj as RuleSetReference; if (ruleSetReference == null) { string message = string.Format(CultureInfo.CurrentCulture, Messages.UnexpectedArgumentType, typeof(RuleSetReference).FullName, "obj"); throw new ArgumentException(message, "obj"); } Activity activity = manager.Context[typeof(Activity)] as Activity; if (activity == null) { string message = string.Format(CultureInfo.CurrentCulture, Messages.ContextStackItemMissing, typeof(Activity).Name); throw new InvalidOperationException(message); } PropertyValidationContext validationContext = manager.Context[typeof(PropertyValidationContext)] as PropertyValidationContext; if (validationContext == null) { string message = string.Format(CultureInfo.CurrentCulture, Messages.ContextStackItemMissing, typeof(PropertyValidationContext).Name); throw new InvalidOperationException(message); } if (!string.IsNullOrEmpty(ruleSetReference.RuleSetName)) { RuleDefinitions rules = null; RuleSetCollection ruleSetCollection = null; CompositeActivity declaringActivity = Helpers.GetDeclaringActivity(activity); if (declaringActivity == null) { declaringActivity = Helpers.GetRootActivity(activity) as CompositeActivity; } if (activity.Site != null) rules = ConditionHelper.Load_Rules_DT(activity.Site, declaringActivity); else rules = ConditionHelper.Load_Rules_RT(declaringActivity); if (rules != null) ruleSetCollection = rules.RuleSets; if (ruleSetCollection == null || !ruleSetCollection.Contains(ruleSetReference.RuleSetName)) { string message = string.Format(CultureInfo.CurrentCulture, Messages.RuleSetNotFound, ruleSetReference.RuleSetName); ValidationError validationError = new ValidationError(message, ErrorNumbers.Error_RuleSetNotFound); validationError.PropertyName = GetFullPropertyName(manager) + "." + "RuleSetName"; validationErrors.Add(validationError); } else { RuleSet actualRuleSet = ruleSetCollection[ruleSetReference.RuleSetName]; ITypeProvider typeProvider = (ITypeProvider)manager.GetService(typeof(ITypeProvider)); IDisposable localContextScope = (WorkflowCompilationContext.Current == null ? WorkflowCompilationContext.CreateScope(manager) : null); try { RuleValidation validation = new RuleValidation(activity, typeProvider, WorkflowCompilationContext.Current.CheckTypes); actualRuleSet.Validate(validation); ValidationErrorCollection actualRuleSetErrors = validation.Errors; if (actualRuleSetErrors.Count > 0) { string expressionPropertyName = GetFullPropertyName(manager); string genericErrorMsg = string.Format(CultureInfo.CurrentCulture, Messages.InvalidRuleSetExpression, expressionPropertyName); int errorNumber = ErrorNumbers.Error_InvalidRuleSetExpression; if (activity.Site != null) { foreach (ValidationError actualError in actualRuleSetErrors) { ValidationError validationError = new ValidationError(actualError.ErrorText, errorNumber); validationError.PropertyName = expressionPropertyName + "." + "RuleSet Definition"; validationErrors.Add(validationError); } } else { foreach (ValidationError actualError in actualRuleSetErrors) { ValidationError validationError = new ValidationError(genericErrorMsg + " " + actualError.ErrorText, errorNumber); validationError.PropertyName = expressionPropertyName; validationErrors.Add(validationError); } } } // } finally { if (localContextScope != null) { localContextScope.Dispose(); } } } } else { string message = string.Format(CultureInfo.CurrentCulture, Messages.InvalidRuleSetName, "RuleSetReference"); ValidationError validationError = new ValidationError(message, ErrorNumbers.Error_InvalidRuleSetName); validationError.PropertyName = GetFullPropertyName(manager) + "." + "RuleSetName"; validationErrors.Add(validationError); } return validationErrors; } } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MethodSet.cs
- Baml6Assembly.cs
- PropertyMetadata.cs
- AnonymousIdentificationModule.cs
- ConfigXmlComment.cs
- SurrogateSelector.cs
- TypeListConverter.cs
- SqlBuilder.cs
- RadioButtonBaseAdapter.cs
- ProcessHostConfigUtils.cs
- RSAOAEPKeyExchangeDeformatter.cs
- ExceptionUtil.cs
- CachingHintValidation.cs
- Cursor.cs
- CollaborationHelperFunctions.cs
- StyleCollection.cs
- RawStylusInputCustomDataList.cs
- SetIterators.cs
- AsymmetricKeyExchangeFormatter.cs
- ControllableStoryboardAction.cs
- DocumentEventArgs.cs
- BamlResourceContent.cs
- LineServicesRun.cs
- ImageMapEventArgs.cs
- SplitContainer.cs
- LassoSelectionBehavior.cs
- RequestNavigateEventArgs.cs
- CqlParser.cs
- XAMLParseException.cs
- FastEncoderWindow.cs
- TextWriter.cs
- Keywords.cs
- streamingZipPartStream.cs
- WindowsSolidBrush.cs
- GridItemCollection.cs
- HtmlInputCheckBox.cs
- TreeNodeBinding.cs
- ProjectionNode.cs
- HttpCapabilitiesSectionHandler.cs
- DocumentSchemaValidator.cs
- ExecutedRoutedEventArgs.cs
- ContentPlaceHolderDesigner.cs
- PropertyDescriptorCollection.cs
- ColorIndependentAnimationStorage.cs
- DropDownHolder.cs
- ProcessRequestArgs.cs
- WebControl.cs
- ExpressionEditorSheet.cs
- DiagnosticStrings.cs
- EditorAttributeInfo.cs
- CorrelationQuery.cs
- PointValueSerializer.cs
- Label.cs
- PrintPreviewControl.cs
- InstanceKeyNotReadyException.cs
- ManualResetEvent.cs
- PathFigure.cs
- ListBoxAutomationPeer.cs
- AsmxEndpointPickerExtension.cs
- WebResourceUtil.cs
- DirectoryNotFoundException.cs
- SystemWebCachingSectionGroup.cs
- HyperLinkColumn.cs
- SourceItem.cs
- WindowInteractionStateTracker.cs
- StatusBarPanelClickEvent.cs
- PaintValueEventArgs.cs
- SerialErrors.cs
- FileDataSourceCache.cs
- XmlCustomFormatter.cs
- SafeBitVector32.cs
- ISCIIEncoding.cs
- GridViewPageEventArgs.cs
- XPathDocumentIterator.cs
- DataDocumentXPathNavigator.cs
- TabletCollection.cs
- EventData.cs
- CompilerGlobalScopeAttribute.cs
- FlowDocumentReaderAutomationPeer.cs
- WebPartAuthorizationEventArgs.cs
- CmsInterop.cs
- ExtendedPropertyDescriptor.cs
- ListControlConvertEventArgs.cs
- NativeMethods.cs
- AttributeTableBuilder.cs
- XmlDictionaryReader.cs
- Bezier.cs
- DataBoundControlAdapter.cs
- FrameworkRichTextComposition.cs
- CodeActivityContext.cs
- TextTreeRootTextBlock.cs
- AstNode.cs
- KeyedHashAlgorithm.cs
- DataGridBoolColumn.cs
- WebColorConverter.cs
- XmlHierarchyData.cs
- CodeAttachEventStatement.cs
- CompositeActivityTypeDescriptorProvider.cs
- NamespaceCollection.cs
- CompilationUtil.cs