Example #1
0
        // Helper
        internal static bool EnsureUpdateStore(Type interfaceType, string providerName, bool makeAFlush)
        {
            using (TimerProfilerFacade.CreateTimerProfiler(interfaceType.ToString()))
            {
                var newDataTypeDescriptor = BuildNewDataTypeDescriptor(interfaceType);
                var oldDataTypeDescriptor = DataMetaDataFacade.GetDataTypeDescriptor(newDataTypeDescriptor.DataTypeId);

                if (oldDataTypeDescriptor == null)
                {
                    DataMetaDataFacade.PersistMetaData(newDataTypeDescriptor);
                    return(false);
                }

                var dataTypeChangeDescriptor = new DataTypeChangeDescriptor(oldDataTypeDescriptor, newDataTypeDescriptor);

                if (!dataTypeChangeDescriptor.AlteredTypeHasChanges)
                {
                    return(false);
                }

                Log.LogVerbose("DynamicTypeManager", "Updating the store for interface type '{0}' on the '{1}' data provider", interfaceType, providerName);

                var updateDataTypeDescriptor = new UpdateDataTypeDescriptor(oldDataTypeDescriptor, newDataTypeDescriptor, providerName);

                AlterStore(updateDataTypeDescriptor, makeAFlush);

                return(true);
            }
        }
        /// <exclude />
        public static Control Render(this IPage page, IEnumerable <IPagePlaceholderContent> placeholderContents, FunctionContextContainer functionContextContainer)
        {
            Verify.ArgumentNotNull(page, "page");
            Verify.ArgumentNotNull(functionContextContainer, "functionContextContainer");
            Verify.ArgumentCondition(functionContextContainer.XEmbedableMapper is XEmbeddedControlMapper,
                                     "functionContextContainer", $"Unknown or missing XEmbedableMapper on context container. Use {nameof(GetPageRenderFunctionContextContainer)}().");

            CurrentPage = page;

            using (GlobalInitializerFacade.CoreIsInitializedScope)
            {
                string url = PageUrls.BuildUrl(page);

                using (TimerProfilerFacade.CreateTimerProfiler(url ?? "(no url)"))
                {
                    var cultureInfo = page.DataSourceId.LocaleScope;
                    System.Threading.Thread.CurrentThread.CurrentCulture   = cultureInfo;
                    System.Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo;

                    XEmbeddedControlMapper mapper = (XEmbeddedControlMapper)functionContextContainer.XEmbedableMapper;

                    XDocument document = TemplateInfo.GetTemplateDocument(page.TemplateId);

                    ResolvePlaceholders(document, placeholderContents);

                    Control c = Render(document, functionContextContainer, mapper, page);

                    return(c);
                }
            }
        }
        /// <exclude />
        public static void NormalizeXhtmlDocument(XhtmlDocument rootDocument)
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                while (true)
                {
                    XElement nestedDocument = rootDocument.Root.Descendants(XhtmlDocument.XName_html).FirstOrDefault();

                    if (nestedDocument == null)
                    {
                        break;
                    }

                    var nestedHead = nestedDocument.Element(XhtmlDocument.XName_head);
                    var nestedBody = nestedDocument.Element(XhtmlDocument.XName_body);

                    Verify.IsNotNull(nestedHead, "XHTML document is missing <head /> element");
                    Verify.IsNotNull(nestedBody, "XHTML document is missing <body /> element");

                    rootDocument.Root.Add(nestedDocument.Attributes().Except(rootDocument.Root.Attributes(), _nameBasedAttributeComparer));

                    rootDocument.Head.Add(nestedHead.Nodes());

                    rootDocument.Head.Add(nestedHead.Attributes().Except(rootDocument.Head.Attributes(), _nameBasedAttributeComparer));
                    rootDocument.Body.Add(nestedBody.Attributes().Except(rootDocument.Body.Attributes(), _nameBasedAttributeComparer));

                    nestedDocument.ReplaceWith(nestedBody.Nodes());
                }
            }
        }
Example #4
0
        internal static void TestEnsureUpdateAllInterfaces()
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                foreach (Type interfaceType in DataProviderRegistry.AllInterfaces)
                {
                    if (!interfaceType.IsAutoUpdateble() || interfaceType.IsGenerated())
                    {
                        continue;
                    }


                    foreach (string providerName in DataProviderRegistry.GetDataProviderNamesByInterfaceType(interfaceType))
                    {
                        try
                        {
                            if (DynamicTypeManager.IsEnsureUpdateStoreNeeded(interfaceType))
                            {
                                Log.LogError(LogTitle, "Autoupdating the data interface '{0}' on the '{1}' data provider failed!", interfaceType, providerName);
                            }
                        }
                        catch (Exception ex)
                        {
                            Log.LogCritical(LogTitle, "Update failed for the interface '{0}' on the '{1}' data provider", interfaceType, providerName);
                            Log.LogCritical(LogTitle, ex);
                        }
                    }
                }
            }
        }
Example #5
0
        // Helper
        internal static bool IsEnsureUpdateStoreNeeded(Type interfaceType)
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                DataTypeDescriptor newDataTypeDescriptor;
                if (!TryGetDataTypeDescriptor(interfaceType, out newDataTypeDescriptor))
                {
                    newDataTypeDescriptor = BuildNewDataTypeDescriptor(interfaceType);
                }

                var oldDataTypeDescriptor = DataMetaDataFacade.GetDataTypeDescriptor(newDataTypeDescriptor.DataTypeId);

                if (oldDataTypeDescriptor == null)
                {
                    DataMetaDataFacade.PersistMetaData(newDataTypeDescriptor);

                    return(false);
                }

                var dataTypeChangeDescriptor = new DataTypeChangeDescriptor(oldDataTypeDescriptor, newDataTypeDescriptor);

                if (!dataTypeChangeDescriptor.AlteredTypeHasChanges)
                {
                    return(false);
                }

                return(dataTypeChangeDescriptor.AlteredTypeHasChanges);
            }
        }
        /// <exclude />
        public static Control AsAspNetControl(this XhtmlDocument xhtmlDocument, IXElementToControlMapper controlMapper)
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                var htmlControl = new HtmlGenericControl("html");
                CopyAttributes(xhtmlDocument.Root, htmlControl);

                HtmlHead headControl = xhtmlDocument.BuildHtmlHeadControl(controlMapper);

                Control bodyControl = xhtmlDocument.Body.AsAspNetControl(controlMapper);

                htmlControl.Controls.Add(headControl);
                htmlControl.Controls.Add(bodyControl);

                PlaceHolder pageHolder = new PlaceHolder();
                if (xhtmlDocument.DocumentType != null)
                {
                    string docType = xhtmlDocument.DocumentType.ToString();
                    var    offset  = docType.IndexOf("[]", StringComparison.Ordinal);
                    if (offset >= 0)
                    {
                        docType = docType.Remove(offset, 2);
                    }

                    pageHolder.Controls.Add(new LiteralControl(docType));
                }
                pageHolder.Controls.Add(htmlControl);

                return(pageHolder);
            }
        }
Example #7
0
        public void Delete(IEnumerable <DataSourceId> dataSourceIds)
        {
            Verify.ArgumentNotNull(dataSourceIds, "dataSourceIds");

            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                Type interfaceType = null;
                foreach (DataSourceId dataSourceId in dataSourceIds)
                {
                    if (dataSourceId == null)
                    {
                        throw new ArgumentException("datas enumeration may not contain nulls");
                    }

                    if (interfaceType == null)
                    {
                        interfaceType = dataSourceId.InterfaceType;
                    }
                    else if (interfaceType != dataSourceId.InterfaceType)
                    {
                        throw new ArgumentException(string.Format("Only one data interface per enumerable type supported"));
                    }
                }

                string errorMessage;
                if (!DataTypeValidationRegistry.IsValidForProvider(interfaceType, _dataProviderContext.ProviderName, out errorMessage))
                {
                    throw new InvalidOperationException(errorMessage);
                }

                _sqlDataTypeStoresContainer.Delete(dataSourceIds, _dataProviderContext);
            }
        }
Example #8
0
        /// <exclude />
        public static Control Render(XDocument document, FunctionContextContainer contextContainer, IXElementToControlMapper mapper, IPage page)
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                ExecuteEmbeddedFunctions(document.Root, contextContainer);

                ResolvePageFields(document, page);

                NormalizeAspNetForms(document);

                if (document.Root.Name != Namespaces.Xhtml + "html")
                {
                    return(new LiteralControl(document.ToString()));
                }

                XhtmlDocument xhtmlDocument = new XhtmlDocument(document);
                NormalizeXhtmlDocument(xhtmlDocument);

                ResolveRelativePaths(xhtmlDocument);

                PrioritizeHeadNodex(xhtmlDocument);

                AppendC1MetaTags(page, xhtmlDocument);

                LocalizationParser.Parse(xhtmlDocument);

                return(xhtmlDocument.AsAspNetControl(mapper));
            }
        }
        /// <exclude />
        public static void NormalizeXhtmlDocument(XhtmlDocument rootDocument)
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                while (true)
                {
                    XElement nestedDocument = rootDocument.Root.Descendants(XhtmlDocument.XName_html).FirstOrDefault();

                    if (nestedDocument == null)
                    {
                        break;
                    }

                    var nestedHead = nestedDocument.Element(XhtmlDocument.XName_head);
                    var nestedBody = nestedDocument.Element(XhtmlDocument.XName_body);

                    Verify.IsNotNull(nestedHead, "XHTML document is missing <head /> element");
                    Verify.IsNotNull(nestedBody, "XHTML document is missing <body /> element");

                    rootDocument.Root.Add(nestedDocument.Attributes().Except(rootDocument.Root.Attributes(), _nameBasedAttributeComparer));

                    // making <meta property="..." /> from nested documents appear first. We will not filter them later and this ensure desired precedence
                    bool IsMetaProperty(XElement e) => e.Name.LocalName == "meta" && e.Attribute("property") != null;

                    rootDocument.Head.AddFirst(nestedHead.Elements().Where(IsMetaProperty));
                    rootDocument.Head.Add(nestedHead.Nodes().Where(f => !(f is XElement e && IsMetaProperty(e))));
                    rootDocument.Head.Add(nestedHead.Attributes().Except(rootDocument.Head.Attributes(), _nameBasedAttributeComparer));
                    rootDocument.Body.Add(nestedBody.Attributes().Except(rootDocument.Body.Attributes(), _nameBasedAttributeComparer));

                    nestedDocument.ReplaceWith(nestedBody.Nodes());
                }
            }
        }
        private static void ResolvePlaceholders(XDocument document, IEnumerable <IPagePlaceholderContent> placeholderContents)
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                var placeHolders =
                    (from placeholder in document.Descendants(RenderingElementNames.PlaceHolder)
                     let idAttribute = placeholder.Attribute(RenderingElementNames.PlaceHolderIdAttribute)
                                       where idAttribute != null
                                       select new { Element = placeholder, IdAttribute = idAttribute }).ToList();

                foreach (var placeholder in placeHolders)
                {
                    string placeHolderId = placeholder.IdAttribute.Value;
                    placeholder.IdAttribute.Remove();

                    IPagePlaceholderContent placeHolderContent =
                        placeholderContents.FirstOrDefault(f => f.PlaceHolderId == placeHolderId);

                    XhtmlDocument xhtmlDocument = ParsePlaceholderContent(placeHolderContent);
                    placeholder.Element.ReplaceWith(xhtmlDocument.Root);

                    //try
                    //{
                    //    placeholder.Element.Add(new XAttribute(RenderingElementNames.PlaceHolderIdAttribute, placeHolderId));
                    //}
                    //catch (Exception ex)
                    //{
                    //    throw new InvalidOperationException($"Failed to set id '{placeHolderId}' on element", ex);
                    //}
                }
            }
        }
Example #11
0
        /// <exclude />
        public static Control Render(XDocument document, FunctionContextContainer contextContainer, IXElementToControlMapper mapper, IPage page)
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                using (Profiler.Measure("Executing embedded functions"))
                {
                    ExecuteEmbeddedFunctions(document.Root, contextContainer);
                }

                using (Profiler.Measure("Resolving page fields"))
                {
                    ResolvePageFields(document, page);
                }

                using (Profiler.Measure("Normalizing ASP.NET forms"))
                {
                    NormalizeAspNetForms(document);
                }

                if (document.Root.Name != RenderingElementNames.Html)
                {
                    return(new LiteralControl(document.ToString()));
                }

                var xhtmlDocument = new XhtmlDocument(document);

                ProcessXhtmlDocument(xhtmlDocument, page);

                using (Profiler.Measure("Converting XHTML document into an ASP.NET control"))
                {
                    return(xhtmlDocument.AsAspNetControl(mapper));
                }
            }
        }
 public static IQueryable <T> GetData <T>(string providerName)
     where T : class, IData
 {
     using (TimerProfilerFacade.CreateTimerProfiler())
     {
         return(Call <IDataProvider, IQueryable <T> >(providerName, provider => provider.GetData <T>()));
     }
 }
        public static void Update(string providerName, IEnumerable <IData> dataset)
        {
            Verify.ArgumentNotNull(dataset, "dataset");

            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                SyncronizedCall <IWritableDataProvider>(providerName, provider => provider.Update(dataset));
            }
        }
        public static void Delete(string providerName, IEnumerable <DataSourceId> dataSourceIds)
        {
            Verify.ArgumentNotNull(dataSourceIds, "dataSourceIds");

            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                SyncronizedCall <IWritableDataProvider>(providerName, provider => provider.Delete(dataSourceIds));
            }
        }
Example #15
0
        /// <exclude />
        public static StoreFieldType Deserialize(string serializedData)
        {
            using (TimerProfiler timerProfiler = TimerProfilerFacade.CreateTimerProfiler())
            {
                if (string.IsNullOrEmpty(serializedData))
                {
                    throw new ArgumentNullException("serializedData");
                }

                Dictionary <string, string> dic = StringConversionServices.ParseKeyValueCollection(serializedData);

                if (dic.ContainsKey("PhysicalStoreType") == false)
                {
                    throw new ArgumentException("Wrong serialized format");
                }

                string physicalStoreFieldTypeString           = StringConversionServices.DeserializeValue <string>(dic["PhysicalStoreType"]);
                PhysicalStoreFieldType physicalStoreFieldType = (PhysicalStoreFieldType)Enum.Parse(typeof(PhysicalStoreFieldType), physicalStoreFieldTypeString);

                switch (physicalStoreFieldType)
                {
                case PhysicalStoreFieldType.String:
                    if (dic.ContainsKey("Length") == false)
                    {
                        throw new ArgumentException("Wrong serialized format");
                    }
                    int length = StringConversionServices.DeserializeValueInt(dic["Length"]);
                    return(new StoreFieldType(physicalStoreFieldType, length));

                case PhysicalStoreFieldType.Decimal:
                    if (dic.ContainsKey("Precision") == false)
                    {
                        throw new ArgumentException("Wrong serialized format");
                    }
                    if (dic.ContainsKey("Scale") == false)
                    {
                        throw new ArgumentException("Wrong serialized format");
                    }

                    int precision = StringConversionServices.DeserializeValueInt(dic["Precision"]);
                    int scale     = StringConversionServices.DeserializeValueInt(dic["Scale"]);

                    return(new StoreFieldType(physicalStoreFieldType, precision, scale));

                case PhysicalStoreFieldType.Boolean:
                case PhysicalStoreFieldType.DateTime:
                case PhysicalStoreFieldType.Guid:
                case PhysicalStoreFieldType.Integer:
                case PhysicalStoreFieldType.LargeString:
                case PhysicalStoreFieldType.Long:
                    return(new StoreFieldType(physicalStoreFieldType));
                }

                throw new NotImplementedException();
            }
        }
        public static T GetData <T>(string providerName, IDataId dataId)
            where T : class, IData
        {
            Verify.ArgumentNotNull(dataId, "dataId");

            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                return(Call <IDataProvider, T>(providerName, provider => provider.GetData <T>(dataId)));
            }
        }
        public static List <T> AddNew <T>(string providerName, IEnumerable <T> dataset)
            where T : class, IData
        {
            Verify.ArgumentNotNull(dataset, "dataset");

            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                return(SyncronizedCall <IWritableDataProvider, List <T> >(providerName, provider => provider.AddNew <T>(dataset)));
            }
        }
Example #18
0
        public static bool IsLocalizedDataProvider(string providerName)
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                using (_resourceLocker.Locker)
                {
                    var dataProvider = GetDataProvider(providerName);

                    return(dataProvider is ILocalizedDataProvider);
                }
            }
        }
        public static IEnumerable <Type> GetGeneratedInterfaces(string providerName)
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                using (_resourceLocker.Locker)
                {
                    var provider = GetDataProvider <IGeneratedTypesDataProvider>(providerName);

                    return(provider.GetGeneratedInterfaces());
                }
            }
        }
        public static IEnumerable <Type> GetSupportedInterfaces(string providerName)
        {
            using (TimerProfilerFacade.CreateTimerProfiler(providerName))
            {
                using (_resourceLocker.Locker)
                {
                    IDataProvider provider = GetDataProvider(providerName);

                    return(provider.GetSupportedInterfaces());
                }
            }
        }
        public static void AlterStore(UpdateDataTypeDescriptor updateDataTypeDescriptor, bool forceCompile)
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                using (_resourceLocker.Locker)
                {
                    var provider = GetDataProvider <IDynamicDataProvider>(updateDataTypeDescriptor.ProviderName);

                    provider.AlterStore(updateDataTypeDescriptor, forceCompile);
                }
            }
        }
Example #22
0
        /// <exclude />
        public static Control Render(XDocument document, FunctionContextContainer contextContainer, IXElementToControlMapper mapper, IPage page)
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                bool disableCaching = false;

                using (Profiler.Measure("Executing embedded functions"))
                {
                    ExecuteFunctionsRec(document.Root, contextContainer, func =>
                    {
                        if (!disableCaching && !FunctionAllowsCaching(func))
                        {
                            disableCaching = true;
                        }

                        return(true);
                    });
                }

                if (disableCaching)
                {
                    using (Profiler.Measure("PageRenderer: Disabling HTTP caching as at least one of the functions is not cacheable"))
                    {
                        HttpContext.Current?.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                    }
                }

                using (Profiler.Measure("Resolving page fields"))
                {
                    ResolvePageFields(document, page);
                }

                using (Profiler.Measure("Normalizing ASP.NET forms"))
                {
                    NormalizeAspNetForms(document);
                }

                if (document.Root.Name != RenderingElementNames.Html)
                {
                    return(new LiteralControl(document.ToString()));
                }

                var xhtmlDocument = new XhtmlDocument(document);

                ProcessXhtmlDocument(xhtmlDocument, page);

                using (Profiler.Measure("Converting XHTML document into an ASP.NET control"))
                {
                    return(xhtmlDocument.AsAspNetControl(mapper));
                }
            }
        }
Example #23
0
        // Helper
        internal static bool EnsureUpdateStore(Type interfaceType, string providerName, bool makeAFlush)
        {
            using (TimerProfilerFacade.CreateTimerProfiler(interfaceType.ToString()))
            {
                var newDataTypeDescriptor = BuildNewDataTypeDescriptor(interfaceType);

                var oldDataTypeDescriptor = DataMetaDataFacade.GetDataTypeDescriptor(newDataTypeDescriptor.DataTypeId);

                if (interfaceType.IsGenerated())
                {
                    var customFields = oldDataTypeDescriptor.Fields.Where(f => !f.Inherited &&
                                                                          !oldDataTypeDescriptor.KeyPropertyNames
                                                                          .Contains(f.Name));
                    foreach (var field in customFields)
                    {
                        newDataTypeDescriptor.Fields.Remove(newDataTypeDescriptor.Fields[field.Name]);
                        newDataTypeDescriptor.Fields.Add(field);
                    }
                }

                if (oldDataTypeDescriptor == null)
                {
                    DataMetaDataFacade.PersistMetaData(newDataTypeDescriptor);
                    return(false);
                }

                var dataTypeChangeDescriptor = new DataTypeChangeDescriptor(oldDataTypeDescriptor, newDataTypeDescriptor);

                if (!dataTypeChangeDescriptor.AlteredTypeHasChanges)
                {
                    if (dataTypeChangeDescriptor.TypeHasMetaDataChanges)
                    {
                        Log.LogInformation(nameof(DynamicTypeManager), $"Updating data type descriptor for type '{newDataTypeDescriptor.GetFullInterfaceName()}'");
                        DataMetaDataFacade.PersistMetaData(newDataTypeDescriptor);
                    }

                    return(false);
                }

                Log.LogVerbose(nameof(DynamicTypeManager),
                               "Updating the store for interface type '{0}' on the '{1}' data provider", interfaceType,
                               providerName);

                var updateDataTypeDescriptor = new UpdateDataTypeDescriptor(oldDataTypeDescriptor, newDataTypeDescriptor,
                                                                            providerName);

                AlterStore(updateDataTypeDescriptor, makeAFlush);

                return(true);
            }
        }
        public static void CreateStores(string providerName, IReadOnlyCollection <DataTypeDescriptor> typeDescriptors)
        {
            Verify.ArgumentNotNull(typeDescriptors, "typeDescriptors");

            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                using (_resourceLocker.Locker)
                {
                    var provider = GetDataProvider <IDynamicDataProvider>(providerName);

                    provider.CreateStores(typeDescriptors);
                }
            }
        }
        public static void DropStore(string providerName, DataTypeDescriptor typeDescriptor)
        {
            Verify.ArgumentNotNull(typeDescriptor, "typeDescriptor");

            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                using (_resourceLocker.Locker)
                {
                    var provider = GetDataProvider <IDynamicDataProvider>(providerName);

                    provider.DropStore(typeDescriptor);
                }
            }
        }
        private void BuildDataProviderNames()
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                var dataProviderSettings = ConfigurationServices.ConfigurationSource.GetSection(DataProviderSettings.SectionName) as DataProviderSettings;

                _defaultDynamicTypeDataProviderName = dataProviderSettings.DefaultDynamicTypeDataProviderName;

                foreach (DataProviderData data in dataProviderSettings.DataProviderPlugins)
                {
                    _dataProviderNames.Add(data.Name);
                }
            }
        }
Example #27
0
        public static void Delete(string providerName, IEnumerable <DataSourceId> dataSourceIds)
        {
            Verify.ArgumentNotNull(dataSourceIds, "dataSourceIds");

            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                DataSourceId firstDataSourceId = dataSourceIds.FirstOrDefault();
                if (firstDataSourceId == null)
                {
                    return;
                }

                SyncronizedCall <IWritableDataProvider>(providerName, provider => provider.Delete(dataSourceIds));
            }
        }
Example #28
0
        public static void Update(string providerName, IEnumerable <IData> dataset)
        {
            Verify.ArgumentNotNull(dataset, "dataset");

            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                IData firstData = dataset.FirstOrDefault();
                if (firstData == null)
                {
                    return;
                }

                SyncronizedCall <IWritableDataProvider>(providerName, provider => provider.Update(dataset));
            }
        }
Example #29
0
        internal static bool EnsureUpdateAllInterfaces()
        {
            using (TimerProfilerFacade.CreateTimerProfiler())
            {
                bool doFlush = false;

                var knownInterfaces = DataProviderRegistry.AllKnownInterfaces.ToList();

                if (!knownInterfaces.Contains(typeof(IXmlPageTemplate)))
                {
                    knownInterfaces.Insert(0, typeof(IXmlPageTemplate));
                }

                foreach (Type interfaceType in knownInterfaces)
                {
                    if (!interfaceType.IsAutoUpdateble() || interfaceType.IsGenerated())
                    {
                        continue;
                    }

                    foreach (string providerName in DataProviderRegistry.GetDataProviderNamesByInterfaceType(interfaceType))
                    {
                        try
                        {
                            if (DynamicTypeManager.EnsureUpdateStore(interfaceType, providerName, true))
                            {
                                doFlush = true;
                            }
                        }
                        catch (TypeUpdateVersionException)
                        {
                            throw;
                        }
                        catch (TypeInitializationException tiex)
                        {
                            throw new InvalidOperationException("The data type meta stored did not initialize. Check configuration", tiex);
                        }
                        catch (Exception ex)
                        {
                            Log.LogCritical(LogTitle, "Update failed for the interface '{0}' on the '{1}' data provider", interfaceType, providerName);
                            Log.LogCritical(LogTitle, ex);
                        }
                    }
                }

                return(doFlush);
            }
        }
Example #30
0
        public IQueryable <T> GetData <T>()
            where T : class, IData
        {
            using (TimerProfilerFacade.CreateTimerProfiler(typeof(T).ToString()))
            {
                string errorMessage;
                if (!DataTypeValidationRegistry.IsValidForProvider(typeof(T), _dataProviderContext.ProviderName, out errorMessage))
                {
                    throw new InvalidOperationException(errorMessage);
                }

                SqlDataTypeStore result = _sqlDataTypeStoresContainer.GetDataTypeStore(typeof(T));

                return((IQueryable <T>)result.GetQueryable());
            }
        }