private void tryCreateBuildPlan(Type pluginType, InstanceRef instanceRef, Policies policies, ProfileReport report) { try { instanceRef.Instance.ResolveBuildPlan(pluginType, policies); } catch (StructureMapException e) { _buildPlanFailureIds.Add(instanceRef.Instance.Id); e.Instances.Fill(instanceRef.Instance.Id); report.AddError(pluginType, instanceRef.Instance, e); } }
private void tryBuildInstance(Type pluginType, Instance instance, IPipelineGraph pipeline, ProfileReport report) { var session = new BuildSession(pipeline, instance.Name); try { var @object = session.FindObject(pluginType, instance); validate(pluginType, instance, @object, report); } catch (StructureMapException ex) { ex.Instances.Each(x => _buildPlanFailureIds.Fill(x)); report.AddError(pluginType, instance, ex); } }
public void Validate(IPipelineGraph pipeline, Policies policies) { var report = new ProfileReport(pipeline); _reports.Add(report); var closedTypes = pipeline.ToModel().PluginTypes.Where(x => !x.PluginType.IsOpenGeneric()).ToArray(); closedTypes.Each( family => { family.Instances.Each(i => { tryCreateBuildPlan(family.PluginType, i, policies, report); }); }); closedTypes.Each( family => { family.Instances.Where(x => !_buildPlanFailureIds.Contains(x.Instance.Id)) .Each(i => { tryBuildInstance(family.PluginType, i.Instance, pipeline, report); }); }); }
private void validate(Type pluginType, Instance instance, object builtObject, ProfileReport report) { if (builtObject == null) return; var methods = ValidationMethodAttribute.GetValidationMethods(builtObject.GetType()); foreach (var method in methods) { try { method.Invoke(builtObject, new object[0]); } catch (Exception ex) { var error = new ValidationError(pluginType, instance, ex.InnerException, method); report.AddValidationError(error); } } }
private void validate(Type pluginType, Instance instance, object builtObject, ProfileReport report) { if (builtObject == null) { return; } var methods = ValidationMethodAttribute.GetValidationMethods(builtObject.GetType()); foreach (var method in methods) { try { method.Invoke(builtObject, new object[0]); } catch (Exception ex) { var error = new ValidationError(pluginType, instance, ex.InnerException, method); report.AddValidationError(error); } } }