Exemplo n.º 1
0
        public SPModelUsageCollection Provision(SPWeb targetWeb, SPModelProvisionOptions options, SPModelListProvisionOptions listOptions)
        {
            CommonHelper.ConfirmNotNull(targetWeb, "targetWeb");
            CommonHelper.ConfirmNotNull(listOptions, "listOptions");
            if (contentTypeAttribute == null || !contentTypeAttribute.ExternalContentType)
            {
                bool provisionContentType = options.HasFlag(SPModelProvisionOptions.ForceProvisionContentType) || provisionedSites.TryAdd(targetWeb.Site.ID, true);
                bool provisionList        = !options.HasFlag(SPModelProvisionOptions.SuppressListCreation);
                if (provisionContentType || provisionList)
                {
                    string          siteUrl = targetWeb.Site.Url;
                    Guid            siteId  = targetWeb.Site.ID;
                    Guid            webId   = targetWeb.ID;
                    ProvisionResult result  = new ProvisionResult();

                    Thread thread = new Thread(() => Provision(siteUrl, siteId, webId, provisionContentType, provisionList, listOptions, result));
                    thread.Start();
                    if (!options.HasFlag(SPModelProvisionOptions.Asynchronous))
                    {
                        thread.Join();
                        if (result.Exception != null)
                        {
                            throw result.Exception.Rethrow();
                        }
                        return(new SPModelUsageCollection(targetWeb.Site, result.ProvisionedLists.ToArray()));
                    }
                }
            }
            return(new SPModelUsageCollection(targetWeb.Site, new SPModelUsage[0]));
        }