Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }