|
//------------------------------------------------------------
// 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;
}
}
}
|