File: System\ServiceModel\Configuration\WorkflowRuntimeElement.cs
Project: ndp\cdf\src\NetFx35\System.WorkflowServices\System.WorkflowServices.csproj (System.WorkflowServices)
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------
namespace System.ServiceModel.Configuration
{
    using System.ComponentModel;
    using System.Configuration;
    using System.Diagnostics.CodeAnalysis;
    using System.Runtime;
    using System.ServiceModel.Description;
    using System.Workflow.Runtime;
    using System.Workflow.Runtime.Configuration;
 
    [Obsolete("The WF3 types are deprecated.  Instead, please use the new WF4 types from System.Activities.*")]
    public class WorkflowRuntimeElement : BehaviorExtensionElement
    {
        const string cachedInstanceExpiration = "cachedInstanceExpiration";
        const string commonParameters = "commonParameters";
        const string enablePerfCounters = "enablePerformanceCounters";
        const string name = "name";
        const string services = "services";
        const string validateOnCreate = "validateOnCreate";
 
        ConfigurationPropertyCollection configProperties = null;
 
        WorkflowRuntimeSection wrtSection = null;
 
 
        public WorkflowRuntimeElement()
        {
 
        }
 
        // This property is not supposed to be exposed in config. 
        [SuppressMessage("Configuration", "Configuration102:ConfigurationPropertyAttributeRule", MessageId = "System.ServiceModel.Configuration.WorkflowRuntimeElement.BehaviorType")]
        public override Type BehaviorType
        {
            get
            {
                return typeof(WorkflowRuntimeBehavior);
            }
        }
 
        [ConfigurationProperty(cachedInstanceExpiration, IsRequired = false, DefaultValue = WorkflowRuntimeBehavior.DefaultCachedInstanceExpirationString)]
        [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
        [PositiveTimeSpanValidator]
        public TimeSpan CachedInstanceExpiration
        {
            get
            {
                return (TimeSpan) base[cachedInstanceExpiration];
            }
            set
            {
                base[cachedInstanceExpiration] = value;
            }
        }
 
        [ConfigurationProperty(commonParameters, DefaultValue = null)]
        public NameValueConfigurationCollection CommonParameters
        {
            get
            {
                return (NameValueConfigurationCollection) base[commonParameters];
            }
        }
 
        [ConfigurationProperty(enablePerfCounters, DefaultValue = true)]
        public bool EnablePerformanceCounters
        {
            get
            {
                return (bool) base[enablePerfCounters];
            }
            set
            {
                base[enablePerfCounters] = value;
            }
        }
 
 
        [ConfigurationProperty(name, DefaultValue = "")]
        [StringValidator(MinLength = 0)]
        public string Name
        {
            get
            {
                return (string) base[name];
            }
            set
            {
                base[name] = value;
            }
        }
 
        [ConfigurationProperty(services, DefaultValue = null)]
        public ExtendedWorkflowRuntimeServiceElementCollection Services
        {
            get
            {
                return (ExtendedWorkflowRuntimeServiceElementCollection) base[services];
            }
        }
 
        [ConfigurationProperty(validateOnCreate, DefaultValue = WorkflowRuntimeBehavior.DefaultValidateOnCreate)]
        public bool ValidateOnCreate
        {
            get
            {
                return (bool) base[validateOnCreate];
            }
            set
            {
                base[validateOnCreate] = value;
            }
        }
 
        protected override ConfigurationPropertyCollection Properties
        {
            get
            {
                if (this.configProperties == null)
                {
                    this.configProperties = new ConfigurationPropertyCollection();
                    configProperties.Add(new ConfigurationProperty(name, typeof(string), null));
                    configProperties.Add(new ConfigurationProperty(validateOnCreate, typeof(bool), true));
                    configProperties.Add(new ConfigurationProperty(enablePerfCounters, typeof(bool), true));
                    configProperties.Add(new ConfigurationProperty(services, typeof(ExtendedWorkflowRuntimeServiceElementCollection), null));
                    configProperties.Add(new ConfigurationProperty(commonParameters, typeof(NameValueConfigurationCollection), null));
                    configProperties.Add(new ConfigurationProperty(cachedInstanceExpiration, typeof(TimeSpan), WorkflowRuntimeBehavior.DefaultCachedInstanceExpiration));
                }
 
                return this.configProperties;
            }
        }
 
        protected internal override object CreateBehavior()
        {
            return new WorkflowRuntimeBehavior(new WorkflowRuntime(CreateWorkflowRuntimeSection()), this.CachedInstanceExpiration, this.ValidateOnCreate);
        }
 
        WorkflowRuntimeSection CreateWorkflowRuntimeSection()
        {
            if (wrtSection == null)
            {
                wrtSection = new WorkflowRuntimeSection();
                wrtSection.Name = this.Name;
                wrtSection.ValidateOnCreate = false;
                wrtSection.EnablePerformanceCounters = this.EnablePerformanceCounters;
 
                foreach (WorkflowRuntimeServiceElement wrtSvcElement in this.Services)
                {
                    wrtSection.Services.Add(wrtSvcElement);
                }
 
                foreach (NameValueConfigurationElement nameValueElement in this.CommonParameters)
                {
                    wrtSection.CommonParameters.Add(nameValueElement);
                }
            }
            return wrtSection;
        }
    }
}