public object Create(object parent, object configContext, XmlNode section)
        {
            var jobTypePipelineMappingConfigurationList = new List <JobTypePipelineMappingConfigurationItem>();
            var jobTypePipelineMappings = section.SelectNodes("JobTypePipelineMapping");

            if (null == jobTypePipelineMappings)
            {
                throw new Exception("Bad Director configuration: cannot find JobTypePipelineMapping.");
            }

            foreach (XmlNode jobTypePipelineMapping in jobTypePipelineMappings)
            {
                var attributes = jobTypePipelineMapping.Attributes;
                if (null == attributes)
                {
                    throw new Exception("Bad Director configuration: JobTypePipelineMapping with no attributes.");
                }

                Type type = Type.GetType(attributes["PipelineClassToInstantiate"].InnerText);
                if (null == type)
                {
                    throw new Exception("Bad Director configuration: cannot find Type \"" +
                                        attributes["PipelineClassToInstantiate"].InnerText +
                                        "\" specified in the PipelineMapping for JobTypeId " +
                                        attributes["JobTypeId"].InnerText
                                        );
                }

                var jobTypePipelineMappingConfigurationItem = new JobTypePipelineMappingConfigurationItem
                {
                    JobTypeId    = Convert.ToInt32(attributes["JobTypeId"].InnerText),
                    PipelineType = new PipelineType(attributes["PipelineType"].InnerText),
                    PipelineClassToInstantiate = type
                };

                jobTypePipelineMappingConfigurationList.Add(jobTypePipelineMappingConfigurationItem);
            }

            return(jobTypePipelineMappingConfigurationList);
        }
        public object Create(object parent, object configContext, XmlNode section)
        {
            var jobTypePipelineMappingConfigurationList = new List<JobTypePipelineMappingConfigurationItem>();
            var jobTypePipelineMappings = section.SelectNodes("JobTypePipelineMapping");

            if (null == jobTypePipelineMappings)
            {
                throw new Exception("Bad Director configuration: cannot find JobTypePipelineMapping.");
            }

            foreach (XmlNode jobTypePipelineMapping in jobTypePipelineMappings)
            {
                var attributes = jobTypePipelineMapping.Attributes;
                if (null == attributes)
                {
                    throw new Exception("Bad Director configuration: JobTypePipelineMapping with no attributes.");
                }

                Type type = Type.GetType(attributes["PipelineClassToInstantiate"].InnerText);
                if (null == type)
                {
                    throw new Exception("Bad Director configuration: cannot find Type \"" + 
                        attributes["PipelineClassToInstantiate"].InnerText +
                    "\" specified in the PipelineMapping for JobTypeId " +
                    attributes["JobTypeId"].InnerText
                    );
                }

                var jobTypePipelineMappingConfigurationItem = new JobTypePipelineMappingConfigurationItem
                    {
                        JobTypeId = Convert.ToInt32(attributes["JobTypeId"].InnerText),
                        PipelineType = new PipelineType(attributes["PipelineType"].InnerText),
                        PipelineClassToInstantiate = type
                    };

                jobTypePipelineMappingConfigurationList.Add(jobTypePipelineMappingConfigurationItem);
            }

            return jobTypePipelineMappingConfigurationList;
        }