internal override bool TryParse(ResolutionResult resolutionResult, out AddinResolution result) { result = new NewOrUpdatedAddinResolution(); bool enabled; AddinHeaderResolution addinHeader; if (!AddinHeader.TryParse(resolutionResult, result, out enabled, out addinHeader)) { return(false); } List <ExtensionPointResolution> extensionPoints = null; List <ExtensionBuilderResolutionGroup> extensionBuilderGroups = null; if (ExtensionSchema != null && !ExtensionSchema.TryParse(resolutionResult, result, out extensionPoints, out extensionBuilderGroups)) { return(false); } List <ExtensionResolutionGroup> extensionGroups = null; if (Extensions != null && !Extensions.TryParse(resolutionResult, result, out extensionGroups)) { return(false); } AddinActivatorResolution addinActivator = null; if (AddinActivator != null && !AddinActivator.TryParse(resolutionResult, result, out addinActivator)) { return(false); } result.Enabled = enabled; result.AddinHeader = addinHeader; result.ManifestFile = ManifestFile; result.ExtensionBuilderGroups = extensionBuilderGroups; result.ExtensionPoints = extensionPoints; result.ExtensionGroups = extensionGroups; result.AddinActivator = addinActivator; if (AssemblyFiles != null) { result.Assemblies = new List <AssemblyResolution>(AssemblyFiles.Count); foreach (var assemblyFile in AssemblyFiles) { result.Assemblies.Add(AssemblyResolution.CreateAddinAssembly(result, assemblyFile)); } } if (DataFiles != null) { result.DataFiles = new List <DataFileResolution>(DataFiles.Count); foreach (var dataFile in DataFiles) { result.DataFiles.Add(dataFile); } } return(true); }
internal override bool Introspect(INameConvention nameConvention, ResolutionResult resolutionResult) { var result = true; if (AddinHeader == null) { resolutionResult.AddError( string.Format("The addin located at [{0}] does not define any addin properties (name, guid, etc) in the Addin node of manifest file, which is required!", ManifestFile.Directory)); result = false; } else { result &= AddinHeader.Introspect(ManifestFile.Directory, resolutionResult); } if (!result) { return(false); } if (AddinActivator != null) { result &= AddinActivator.Introspect(resolutionResult); } if (ExtensionSchema == null && Extensions == null) { resolutionResult.AddError(string.Format( "A valid addin manifest file must contain either an extension schema node, or an extension node, or both, while the addin [{0}] located at [{1}] does not provide any of them!", AddinHeader.Name, ManifestFile.Directory)); result = false; } if (ExtensionSchema != null) { result &= ExtensionSchema.Introspect(nameConvention, resolutionResult); } if (Extensions != null) { result &= Extensions.Introspect(resolutionResult); } return(result); }
internal ResolutionStatus Resolve(ResolutionResult resolutionResult, ConvertionManager convertionManager, ResolutionContext ctx) { if (_resolutionStatus != ResolutionStatus.Pending) { return(_resolutionStatus); } if (AddinActivator != null) { var resolutionStatus = AddinActivator.Resolve(resolutionResult, convertionManager, ctx); if (resolutionStatus == ResolutionStatus.Failed) { _resolutionStatus = ResolutionStatus.Failed; return(_resolutionStatus); } } if (ExtensionPoints != null) { foreach (var extensionPoint in ExtensionPoints) { var resolutionStatus = extensionPoint.Resolve(resolutionResult, convertionManager, ctx); if (resolutionStatus == ResolutionStatus.Success) { continue; } else if (resolutionStatus == ResolutionStatus.Failed) { _resolutionStatus = ResolutionStatus.Failed; return(_resolutionStatus); } else { return(ResolutionStatus.Pending); } } } var extensionBuilders = GetAllExtensionBuilders(); if (extensionBuilders != null) { foreach (var extensionBuilder in extensionBuilders) { var resolutionStatus = extensionBuilder.Resolve(resolutionResult, convertionManager, ctx); if (resolutionStatus == ResolutionStatus.Success) { continue; } else if (resolutionStatus == ResolutionStatus.Failed) { _resolutionStatus = ResolutionStatus.Failed; return(_resolutionStatus); } else { return(ResolutionStatus.Pending); } } } var extensions = GetAllExtensions(); if (extensions != null) { foreach (var extension in extensions) { var resolutionStatus = extension.Resolve(resolutionResult, convertionManager, ctx); if (resolutionStatus == ResolutionStatus.Success) { continue; } else if (resolutionStatus == ResolutionStatus.Failed) { _resolutionStatus = ResolutionStatus.Failed; return(_resolutionStatus); } else { return(ResolutionStatus.Pending); } } } if (_referencedAssemblySets != null) { foreach (var referencedAssemblySet in _referencedAssemblySets) { var resolutionStatus = referencedAssemblySet.Resolve(resolutionResult, convertionManager, ctx); if (resolutionStatus == ResolutionStatus.Success) { continue; } else if (resolutionStatus == ResolutionStatus.Failed) { _resolutionStatus = ResolutionStatus.Failed; return(_resolutionStatus); } else { return(ResolutionStatus.Pending); } } } _resolutionStatus = ResolutionStatus.Success; return(_resolutionStatus); }