internal override bool TryParse(ResolutionResult resolutionResult, AddinResolution addin, BaseExtensionPointResolution parent, out ExtensionBuilderResolution result) { result = new NewOrUpdatedReferencedExtensionBuilderResolution(addin) { Name = Name, ExtensionPointName = ExtensionPointName, ParentPath = ParentPath, Parent = parent }; if (_children != null) { foreach (var child in _children) { ExtensionBuilderResolution eb; if (!child.TryParse(resolutionResult, addin, result, out eb)) { return(false); } eb.ParentPath = Path; // The parent path of an extension builder eb.ParentIsExtensionPoint = false; result.AddChild(eb); } } return(true); }
internal override bool TryParse(IMessageDialog dialog, AddinResolution addin, BaseExtensionPointResolution parent, out ExtensionBuilderResolution result) { result = new NewReferencedExtensionBuilderResolution(addin) { Id = Id, ExtensionPointId = ExtensionPointId, ParentPath = ParentPath, Parent = parent }; if (_children != null) { foreach (var child in _children) { ExtensionBuilderResolution eb; if (!child.TryParse(dialog, addin, result, out eb)) { return(false); } eb.ParentPath = Path; // The parent path of an extension builder eb.ParentIsExtensionPoint = false; result.AddChild(eb); } } return(true); }
public void UnregisterExtensionBuilder(ExtensionBuilderResolution extensionBuilder) { _path2ExtensionBuilders.Remove(extensionBuilder.Path); if (extensionBuilder.Uid != UidStorage.InvalidExtensionBuilderUid) { _uid2ExtensionBuilders.Remove(extensionBuilder.Uid); } }
public void RegisterExtensionBuilder(ExtensionBuilderResolution extensionBuilder) { _path2ExtensionBuilders.Add(extensionBuilder.Path, extensionBuilder); if (extensionBuilder.Uid != UidStorage.InvalidExtensionBuilderUid) { _uid2ExtensionBuilders.Add(extensionBuilder.Uid, extensionBuilder); } }
// returns null if sucessful, otherwise return an existing ExtensionPointResolution public bool TryRegisterExtensionBuilder(ResolutionResult resolutionResult, ExtensionBuilderResolution newExtensionBuilder, out ExtensionBuilderResolution existingExtensionBuilder) { if (_path2ExtensionBuilders.TryGetValue(newExtensionBuilder.Path, out existingExtensionBuilder)) { resolutionResult.AddError("&&&&&&&&&&&&&&&&"); return(false); } _path2ExtensionBuilders.Add(newExtensionBuilder.Path, newExtensionBuilder); return(true); }
// returns null if sucessful, otherwise return an existing ExtensionPointResolution public bool TryRegisterExtensionBuilder(IMessageDialog dialog, ExtensionBuilderResolution newExtensionBuilder, out ExtensionBuilderResolution existingExtensionBuilder) { if (_path2ExtensionBuilders.TryGetValue(newExtensionBuilder.Path, out existingExtensionBuilder)) { dialog.AddError(""); return(false); } _path2ExtensionBuilders.Add(newExtensionBuilder.Path, newExtensionBuilder); return(true); }
/// <summary> /// The extension type of the extension builders must be the same as that of its parent. /// </summary> internal static bool ExtensionTypeMatchesParent(this ExtensionBuilderResolution eb, IMessageDialog dialog, TypeResolution extensionType) { var result = extensionType.Equals(eb.Parent.ExtensionType); // can not use ReferenceEquals here!!!! var parenteEb = eb.Parent as ExtensionBuilderResolution; if (!result) { dialog.AddError(string.Format( "The extension type of extension builder must match that of its parent, while the extension type of the extension builder [{0}] is [{1}], and that of its parent [{2}] is [{3}], which does not match!", eb.Path, extensionType.TypeName, parenteEb != null ? parenteEb.Path : eb.Parent.Id, eb.Parent.ExtensionType.TypeName)); } return(result); }
// if we can find the referenced extension builder, the resolution is done. protected override ResolutionStatus DoResolve(ResolutionResult resolutionResult, ConvertionManager convertionManager, ResolutionContext ctx) { // Tries to get the parent if (Parent == null) { BaseExtensionPointResolution objParent; if (ParentIsExtensionPoint) { ExtensionPointResolution parent; if (!ctx.TryGetExtensionPoint(resolutionResult, ParentPath, out parent)) { resolutionResult.AddError(string.Format("Can not find the parent of the specified extension builder [{0}] with path [{1}]!", TypeName, ParentPath)); return(ResolutionStatus.Failed); } Parent = parent; DeclaringAddin.AddExtendedExtensionPoint(parent); objParent = parent; } else { ExtensionBuilderResolution parent; if (!ctx.TryGetExtensionBuilder(resolutionResult, ParentPath, out parent)) { resolutionResult.AddError(string.Format("Can not find the parent of the specified extension builder [{0}] with path [{1}]!", TypeName, ParentPath)); return(ResolutionStatus.Failed); } Parent = parent; var ep = GetExtensionPointFor(parent); if (ep == null) { return(ResolutionStatus.Pending); // the extension point is probably not available right now. } DeclaringAddin.AddExtendedExtensionPoint(ep); objParent = parent; } if (objParent.DeclaringAddin != null && !ReferenceEquals(objParent.DeclaringAddin, DeclaringAddin)) { if (objParent.Type == null) { return(ResolutionStatus.Pending); } // The parent of current extension builder is not defined in the same addin as it is, // so we needs to add its declaring addin as a reference (the type of the parent must // be loaded before this extension builder at start up). AssemblyResolutionSet assemblySet; if (!ctx.TryGetAssemblySet(objParent.Type.Assembly.AssemblyKey, out assemblySet)) { throw new Exception(); } DeclaringAddin.AddReferencedAssemblySet(assemblySet); } } if (_referenced == null) { var referenced = TryFindReferencedExtensionBuilder(Parent, Name); if (referenced == null) { if (!ctx.TryGetExtensionBuilder(resolutionResult, Path, out referenced)) { return(ResolutionStatus.Failed); } } if (referenced.DeclaringAddin != null && !ReferenceEquals(referenced.DeclaringAddin, DeclaringAddin)) { if (referenced.Type == null) { return(ResolutionStatus.Pending); } // The parent of current extension builder is not defined in the same addin as it is, // so we needs to add its declaring addin as a reference (the type of the parent must // be loaded before this extension builder at start up). AssemblyResolutionSet assemblySet; if (!ctx.TryGetAssemblySet(referenced.Type.Assembly.AssemblyKey, out assemblySet)) { throw new Exception(); } DeclaringAddin.AddReferencedAssemblySet(assemblySet); } _referenced = referenced; } return(ResolveAddin(Parent) | _referenced.Resolve(resolutionResult, convertionManager, ctx)); }
public bool TryGetExtensionBuilder(ResolutionResult resolutionResult, int extensionBuilderUid, out ExtensionBuilderResolution extensionBuilder) { return(_uid2ExtensionBuilders.TryGetValue(extensionBuilderUid, out extensionBuilder)); }
public bool TryGetExtensionBuilder(ResolutionResult resolutionResult, string extensionBuilderPath, out ExtensionBuilderResolution extensionBuilder) { return(_path2ExtensionBuilders.TryGetValue(extensionBuilderPath, out extensionBuilder)); }
public bool TryGetExtensionBuilder(IMessageDialog dialog, int extensionBuilderUid, out ExtensionBuilderResolution extensionBuilder) { return(_uid2ExtensionBuilders.TryGetValue(extensionBuilderUid, out extensionBuilder)); }
public bool TryGetExtensionBuilder(IMessageDialog dialog, string extensionBuilderPath, out ExtensionBuilderResolution extensionBuilder) { return(_path2ExtensionBuilders.TryGetValue(extensionBuilderPath, out extensionBuilder)); }
internal abstract bool TryParse(ResolutionResult resolutionResult, AddinResolution addin, BaseExtensionPointResolution parent, out ExtensionBuilderResolution result);
internal static bool InheritFromCompositeExtensionBuilderInterface( this ExtensionBuilderResolution eb, IMessageDialog dialog, ResolutionContext ctx, out TypeResolution extensionType) { return(eb.Type.ImplementsCompositeExtensionBuilderInterface(dialog, ctx, out extensionType)); }
internal abstract bool TryParse(IMessageDialog dialog, AddinResolution addin, BaseExtensionPointResolution parent, out ExtensionBuilderResolution result);