File: Policy.cs

package info (click to toggle)
mono 6.8.0.105%2Bdfsg-3.3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,284,512 kB
  • sloc: cs: 11,172,132; xml: 2,850,069; ansic: 671,653; cpp: 122,091; perl: 59,366; javascript: 30,841; asm: 22,168; makefile: 20,093; sh: 15,020; python: 4,827; pascal: 925; sql: 859; sed: 16; php: 1
file content (97 lines) | stat: -rw-r--r-- 3,465 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
namespace System.Workflow.Activities
{
    using System;
    using System.Text;
    using System.Reflection;
    using System.Collections;
    using System.CodeDom;
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.ComponentModel.Design.Serialization;
    using System.Drawing;
    using System.Workflow.ComponentModel;
    using System.Workflow.ComponentModel.Design;
    using System.Collections.Generic;
    using System.Workflow.Activities.Rules;
    using System.Workflow.Activities.Rules.Design;
    using System.Workflow.Runtime;
    using System.Workflow.ComponentModel.Compiler;
    using System.Drawing.Design;
    using System.Workflow.Activities.Common;

    #region Class Policy

    [SRDescription(SR.PolicyActivityDescription)]
    [ToolboxBitmap(typeof(PolicyActivity), "Resources.Rule.png")]
    [ToolboxItem(typeof(ActivityToolboxItem))]
    [Designer(typeof(PolicyDesigner), typeof(IDesigner))]
    [SRCategory(SR.Standard)]
    [Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
    public sealed class PolicyActivity : Activity
    {
        #region Public Dependency Properties

        public static readonly DependencyProperty RuleSetReferenceProperty = DependencyProperty.Register("RuleSetReference", typeof(RuleSetReference), typeof(PolicyActivity), new PropertyMetadata(DependencyPropertyOptions.Metadata, new Attribute[] { new ValidationOptionAttribute(ValidationOption.Required) }));

        #endregion

        #region Constructors

        public PolicyActivity()
        {
        }

        public PolicyActivity(string name)
            : base(name)
        {
        }

        #endregion

        protected override void Initialize(IServiceProvider provider)
        {
            // if there is no parent, then there will be no validation of RuleSetReference
            // as well, there will be no RuleDefinitions
            if (this.Parent == null)
                throw new InvalidOperationException(SR.GetString(SR.Error_MustHaveParent));

            base.Initialize(provider);
        }

        protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            if (executionContext == null)
                throw new ArgumentNullException("executionContext");

            Activity declaringActivity = Helpers.GetDeclaringActivity(this);
            if (declaringActivity == null)
                declaringActivity = Helpers.GetRootActivity(this);

            RuleDefinitions ruleDefinitions = (RuleDefinitions)declaringActivity.GetValue(RuleDefinitions.RuleDefinitionsProperty);
            if (ruleDefinitions != null)
            {
                RuleSet ruleSet = ruleDefinitions.RuleSets[this.RuleSetReference.RuleSetName];
                if (ruleSet != null)
                {
                    ruleSet.Execute(declaringActivity, executionContext);
                }
            }
            return ActivityExecutionStatus.Closed;
        }

        [SRDescription(SR.RuleSetDescription)]
        [MergableProperty(false)]
        public RuleSetReference RuleSetReference
        {
            get
            {
                return (RuleSetReference)base.GetValue(RuleSetReferenceProperty);
            }
            set
            {
                base.SetValue(RuleSetReferenceProperty, value);
            }
        }
    }
    #endregion
}